Repository navigation
Add a go-only (-grpc) agent image with no Node, pinned to grpc-tunnel, bump some go deps - #178
Merged
Merged
Conversation
Every v* release tag now publishes cortex-axon-agent:<version>-grpc alongside the full image. A v*-grpc tag (e.g. v0.3.10-grpc) publishes only the go-only image, for building one without re-releasing the rest. - docker/Dockerfile: VARIANT build arg (full|grpc). grpc skips the Node and snyk-broker install and stamps config.ForcedRelayMode=grpc-tunnel into the binary via ldflags. - agent/config: ForcedRelayMode makes the binary refuse any other AXON_RELAY_TRANSPORT/RELAY_MODE at startup instead of failing later on a missing snyk-broker. - docker.yml now calls a reusable docker-image.yml once per variant, so the go-only image gets its own build, PR Trivy gate and release scan. - -grpc tags are excluded from the full-image and tunnel-server releases. - ci.yml: docker-tests-grpc builds the go-only image, checks it has no Node and rejects snyk-broker, and runs only the gRPC E2E suite on it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A push to main now also publishes cortex-axon-agent:main-grpc, and the
daily Trivy sweep scans it alongside :main.
- docker.yml and docker-image.yml default to `permissions: {}` with each
job stating what it needs (addresses the CodeQL "workflow does not
contain permissions" findings on #178).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
keithfz
previously approved these changes
Oct 29, 2026
A v* release tag now also moves cortex-axon-agent:latest-grpc. A one-off v*-grpc tag leaves it alone so an older go-only build cannot roll it backwards. Notes that the -grpc variant is an intermediate stage until snyk-broker is deprecated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clears the open Dependabot alerts on sdks/go, scaffold/go/axon_client and examples/go/axon-ev-sync (gRPC-Go xDS :authority DoS, fixed in 1.82.2; HTTP/2 DATA frame fragmentation OOM, fixed in 1.83.1; x/net, fixed in 0.55.0). Matches the versions agent/ and server/ already use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
keithfz
previously approved these changes
Oct 29, 2026
main requires a check named `build`, which was the only job in the old docker.yml. After the split into per-variant reusable calls the image jobs report as "Agent image (full) / build" and so on, so nothing reported `build` and #178 sat blocked waiting for it. Add a `build` job that passes only when every image job that ran passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
keithfz
approved these changes
Oct 29, 2026
keithfz
left a comment
Contributor
There was a problem hiding this comment.
gonna just keep stamping away
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a second flavor of the agent image,
cortex-axon-agent:<version>-grpc, that:grpc-tunnel.config.ForcedRelayModeis stamped into the binary via ldflags. SettingAXON_RELAY_TRANSPORT(orRELAY_MODE) to anything else panics at startup withthis build only supports AXON_RELAY_TRANSPORT=grpc-tunnel, got "snyk-broker", so it fails loudly instead of later on a missing snyk-broker.docker-tests-grpcnow builds the go-only image and runs the gRPC relay suite against it. The snyk-broker and scaffold tests stay on the full image indocker-tests.Publishing
v0.3.11cortex-axon-agent:0.3.11,:0.3,cortex-axon-tunnel-server:0.3.11,:0.3, andcortex-axon-agent:0.3.11-grpc,:latest-grpcv0.3.10-grpccortex-axon-agent:0.3.10-grpc(does not movelatest-grpc)mainmaintags, as before, andcortex-axon-agent:main-grpcdocker.ymlnow calls a reusabledocker-image.ymlonce per variant, so the go-only image gets its own build, PR Trivy gate and release scan (SARIF categorytrivy-cortex-axon-agent-grpc). The full image's category is unchanged.-grpctags are skipped by the full-image job andtunnel-server-release.yml. Otherwise semver readsv0.3.10-grpcas a prerelease and would publish the full image and the tunnel server as0.3.10-grpc.<version>-grpcandlatest-grpcper release (no0.3-grpc), plusmain-grpcfrom main. The daily Trivy sweep scansmain-grpctoo.docker.ymlanddocker-image.ymldefault topermissions: {}, and each job declares only what it needs.This is an intermediate stage. Once snyk-broker is fully deprecated, the full image becomes go-only and the
-grpcvariant collapses back into it.Dependency bumps
google.golang.org/grpcv1.82.1 → v1.83.2 andgolang.org/x/netv0.53.0 → v0.60.0 insdks/go,scaffold/go/axon_clientandexamples/go/axon-ev-sync, matchingagent/andserver/. This clears the open Go Dependabot alerts (#17–19, #28–29, #31, #33–38).Dockerfile
VARIANTbuild arg (fulldefault,grpc). The Node install moved into adeps-fullstage after the shared apt and Go layers. BuildKit only builds the stages the selected variant reaches, so the grpc build never runs it.make docker-build-grpcbuildscortex-axon-agent:local-grpclocally.Test plan
go test ./config/ ./cmd/: new tests cover the forced mode as default, and rejection via bothAXON_RELAY_TRANSPORTandRELAY_MODEmake docker-build-grpc: built without running any Node or snyk-broker stepsmake docker-build: full image still hasnodeand/usr/bin/snyk-brokerAXON_RELAY_TRANSPORT=snyk-brokeris refusedAXON_AGENT_IMAGE=cortex-axon-agent:local-grpc make -C agent grpc-relay-test-with-proxyandgrpc-relay-test-no-proxyboth pass locallyactionlint: no new findingsgo build,go vetandgo testpass in all three bumped modulesv0.3.10-grpc(or the nextv*tag) and confirm the expected tags appear in ghcr🤖 Generated with Claude Code