Skip to content

fix(ci): Pin evmd build to v0.5.1 instead of cosmos/evm@main - #1957

Merged
codingki merged 2 commits into
mainfrom
fix/evmd-pin-version
Apr 30, 2026
Merged

codingki merged 2 commits into
mainfrom
fix/evmd-pin-version

Conversation

@codingki

@codingki codingki commented Apr 30, 2026 •

Copy link
Copy Markdown
Member

Summary

scripts/evmd/build.sh defaulted EVMD_VERSION to main, so every CI run rebuilt the evmd Docker image from whatever HEAD of cosmos/evm happened to be at the time. Upstream changed its mempool / config.toml schema and the templated config no longer satisfies it:

6:04PM ERR configs mismatch
  error="EVM mempool enabled, but comet-bft has invalid config.toml:
  mempool.type (want 'app', got 'flood'): error in app.toml"
  module=server
Error: EVM mempool enabled, but comet-bft has invalid config.toml:
  mempool.type (want 'app', got 'flood'): error in app.toml

The container exited immediately, the Initialize evmd step timed out at 60s, and the test, test-backends, test-chrome, and test-with-coverage jobs all failed with exit code 124. This had been breaking every PR (e.g. #1956).

Pinning to v0.5.1 then surfaced a second, latent issue: the unpinned golang:alpine base image had rolled to Go 1.25+, and Go 1.25 removed the runtime GoMapIterator symbol that bytedance/sonic v1.14.2 (a transitive dep of cosmos/evm v0.5.1) references — see bytedance/sonic#895:

/go/pkg/mod/github.com/bytedance/sonic@v1.14.2/internal/rt/stubs.go:33:22:
  undefined: GoMapIterator
make: *** [Makefile:93: build] Error 1

Changes

  1. scripts/evmd/build.sh — default EVMD_VERSION to v0.5.1 so the source we build matches VERSION in scripts/evmd/env (the cosmjs/evmd:v0.5.1 image tag), ARG EVMD_VERSION=v0.5.1 in scripts/evmd/Dockerfile, and the templated app.toml / config.toml. The override env var is preserved for local experimentation.
  2. scripts/evmd/Dockerfile — pin the builder to golang:1.24-alpine. cosmos/evm v0.5.1's go.mod declares go 1.23.8, so 1.24 satisfies the toolchain requirement while staying below the Go 1.25 break.

Test plan

  • bash -n scripts/evmd/build.sh — clean
  • EVMD_VERSION=… override still works (default is :-v0.5.1)
  • CI builds cosmjs/evmd:v0.5.1 from cosmos/evm@v0.5.1 on golang:1.24-alpine and Initialize evmd returns within 60s on this PR

scripts/evmd/build.sh defaulted EVMD_VERSION to "main", so every CI run
rebuilt the evmd image from whatever HEAD of cosmos/evm happened to be at
the time. Upstream changed its mempool/config.toml schema and now refuses
to start with the templated config:

    EVM mempool enabled, but comet-bft has invalid config.toml:
    mempool.type (want 'app', got 'flood'): error in app.toml

This makes the evmd container exit immediately, the "Initialize evmd"
step time out at 60s, and the test, test-backends, test-chrome and
test-with-coverage jobs all fail with exit code 124.

Pin EVMD_VERSION to v0.5.1 to match VERSION in scripts/evmd/env (the
docker image tag) and ARG EVMD_VERSION in scripts/evmd/Dockerfile, so
the binary we ship matches the templated app.toml/config.toml. The env
override is preserved for local experimentation.

Made-with: Cursor
@greptile-apps

greptile-apps Bot commented Apr 30, 2026

Copy link
Copy Markdown

Greptile Summary

This PR fixes a CI breakage by changing the default EVMD_VERSION in scripts/evmd/build.sh from the floating main ref to the pinned v0.5.1 tag, aligning it with VERSION in scripts/evmd/env and ARG EVMD_VERSION in scripts/evmd/Dockerfile. The fix is minimal, well-justified, and consistent across all three files.

Confidence Score: 5/5

Safe to merge — single-line default value fix with no logic changes.

The change is a one-line pin of a version string that is already consistently used across the Dockerfile and env file. No new logic is introduced, and the fix directly resolves a documented CI failure.

No files require special attention.

Important Files Changed

Filename Overview
scripts/evmd/build.sh Pins EVMD_VERSION default from "main" to "v0.5.1" to match env and Dockerfile, with an explanatory comment; no issues found.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["build.sh invoked"] --> B{"EVMD_VERSION\nenv var set?"}
    B -- "Yes" --> C["Use provided EVMD_VERSION"]
    B -- "No" --> D["Default: v0.5.1\n(was: main)"]
    C --> E["docker build\n--build-arg EVMD_VERSION=..."]
    D --> E
    E --> F["Dockerfile ARG EVMD_VERSION=v0.5.1\ngit checkout ${EVMD_VERSION}"]
    F --> G["Build binary & image\ntagged cosmjs/evmd:$VERSION"]
    G --> H["VERSION from ./env = v0.5.1\n✅ All three pins align"]
Loading

Reviews (1): Last reviewed commit: "fix(ci): Pin evmd build to v0.5.1 instea..." | Re-trigger Greptile

The unpinned golang:alpine base image rolled to Go 1.25+, breaking the
build with:

    /go/pkg/mod/github.com/bytedance/sonic@v1.14.2/internal/rt/stubs.go:33:22:
      undefined: GoMapIterator

cosmos/evm v0.5.1 transitively depends on bytedance/sonic v1.14.2, which
references GoMapIterator from the Go runtime; that symbol was removed in
Go 1.25 (bytedance/sonic#895). cosmos/evm's
go.mod declares `go 1.23.8`, so pinning to golang:1.24-alpine satisfies
the toolchain requirement while staying below the breaking Go 1.25 cut.

Made-with: Cursor
@codingki
codingki merged commit d61e456 into main Apr 30, 2026
12 of 15 checks passed
@codingki
codingki deleted the fix/evmd-pin-version branch April 30, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant