You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[P3] Dockerfile: static non-root build; CI: run tests with -race #52
Build with CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" and drop gcc musl-dev and -a -installsuffix cgo. go-ethereum falls back to pure-Go secp256k1, and this tool doesn't sign anything.
Pin the runtime image (alpine:3.x or gcr.io/distroless/static:nonroot) instead of alpine:latest, and run as non-root.
✅ Smaller image, faster builds, safer runtime.
⚠️ Smoke-test that the binary still starts (ev-metrics --help).
CI
Run tests with -race (Makefile test target or .github/workflows/test.yml). The verifier is heavily concurrent.
Pin golangci-lint.lint.yml installs it from golangci-lint/master/install.sh (latest), so lint results change over time. fix(deps): upgrade ev-node to v1.0.0 and fix broken metrics #33 shows a red Lint check, but golangci-lint v2.15.0 reports 0 issues on that branch today. Pin a version (for example with golangci/golangci-lint-action and an explicit version:).
Bump actions off Node 20:actions/checkout@v4 → v5, actions/setup-go@v5 → v6. GitHub removed Node 20 from runners on 2026-09-16.
The Dockerfile builder is now golang:1.26-alpine (Go 1.26 is required by x/net v0.60.0). It still uses CGO_ENABLED=1, -a -installsuffix cgo, and an unpinned alpine:latest running as root.
Lint now uses golangci/golangci-lint-action@v8, but with version: latest, so it is still unpinned.
actions/checkout@v4 and actions/setup-go@v5 are still on Node 20.
No -race in make test and no govulncheck step yet. govulncheck currently reports only GO-2026-5932 (x/crypto, no fix yet), so a CI step needs an allowlist for it or should be informational until upstream fixes it.
CI: golangci-lint-action uses version: latest; checkout@v4 and setup-go@v5 are on Node 20; make test has no -race; no govulncheck step (it currently reports only GO-2026-5932 in x/crypto, no fix yet, so it needs an exception or should be informational).
Activity
auricom commentedon Oct 20, 2026
Additions found while reviewing the open PRs:
lint.ymlinstalls it fromgolangci-lint/master/install.sh(latest), so lint results change over time. fix(deps): upgrade ev-node to v1.0.0 and fix broken metrics #33 shows a red Lint check, but golangci-lint v2.15.0 reports 0 issues on that branch today. Pin a version (for example withgolangci/golangci-lint-actionand an explicitversion:).actions/checkout@v4→v5,actions/setup-go@v5→v6. GitHub removed Node 20 from runners on 2026-09-16.govulncheckto CI (see [P1] Bump vulnerable deps: go-ethereum ≥1.17.0, grpc ≥1.83.1, x/net ≥0.60.0 (supersedes #30) #54).auricom commentedon Oct 20, 2026
Status after #56 and #58:
golang:1.26-alpine(Go 1.26 is required by x/net v0.60.0). It still usesCGO_ENABLED=1,-a -installsuffix cgo, and an unpinnedalpine:latestrunning as root.golangci/golangci-lint-action@v8, but withversion: latest, so it is still unpinned.actions/checkout@v4andactions/setup-go@v5are still on Node 20.-raceinmake testand nogovulncheckstep yet. govulncheck currently reports only GO-2026-5932 (x/crypto, no fix yet), so a CI step needs an allowlist for it or should be informational until upstream fixes it.auricom commentedon Oct 20, 2026
Status after #57–#59: nothing in this issue has changed on
mainyet. Still open:CGO_ENABLED=1,-a -installsuffix cgo,gcc musl-dev, unpinnedalpine:latest, runs as root. The builder isgolang:1.26-alpine(Go 1.26 is required since P1: verifier scalability, DA cache, client reuse, log format, security bumps #58).golangci-lint-actionusesversion: latest;checkout@v4andsetup-go@v5are on Node 20;make testhas no-race; nogovulncheckstep (it currently reports only GO-2026-5932 in x/crypto, no fix yet, so it needs an exception or should be informational).build(ci): static non-root Docker image, pinned lint, race tests, gov…
Merge subagent: P3 #52 Docker and CI hardening
ci(govulncheck): scan with the latest Go release instead of the go.mo…