Skip to content

ci: publish through the orb's stock jobs with decoupled versions - #48

Merged
teemow merged 2 commits into
giantswarmfrom
fork/orb-stock-jobs
Sep 19, 2026
Merged

teemow merged 2 commits into
giantswarmfrom
fork/orb-stock-jobs

Conversation

@teemow

@teemow teemow commented Sep 19, 2026

Copy link
Copy Markdown
Member

What

The line's six images are published by the architect orb's push-to-registries job, one job per component, built from a fork-owned .circleci/Dockerfile that reproduces ko's image — ./cmd/<component> compiled with CGO_ENABLED=0 and -trimpath from the vendored modules, at /ko-app/<component> on the distroless base .ko.yaml pins, /ko-app on PATH, the binary the ENTRYPOINT — for linux/amd64 and linux/arm64: signed, with provenance and an SPDX SBOM, the index annotated io.giantswarm.upstream.version=<pin>. ko, the repo-owned version step and the version pipeline parameter are gone; the version is the orb's, from the git tags.

Versions are decoupled from upstream's (RFC "Semantic Versioning of Upstream Software"): a release is a tag vX.Y.Z (or vX.Y.Z-rc.N) and publishes X.Y.Z; 1.0.0 is the first, above the superseded 0.0.30-gs.N; a push to giantswarm publishes gitsemver's dev version. Every other branch runs the six builds with push: false, so a Dockerfile regression surfaces on the pull request.

scan runs Trivy from its image on the remote docker engine (one container per image, a shared database cache, .trivyignore copied in), scans the six images by tag and the agentgateway image report-only, records image-refs.txt and gates charts, which reads the version from .build_version.

The sync workflow derives the pin from the stable tags reachable from the branch that upstream also has: the line's own stable tags share the v* namespace and never count, and upstream main — rebased onto agent-substrate, no release tag among its ancestors — offers no merge-base to describe. FORK.md states the scheme ("Pin", "Re-pin", "Publishing", "Consumers").

The orb is giantswarm/architect@10.6.0 (the release that carries the build-args parameter). The agentgateway line's first decoupled release replaces v1.5.1-gs.4 in the chart default and the pipeline parameter before the merge.

How verified

  • circleci config process --org gh/giantswarm .circleci/config.yml compiles; in the processed jobs every push job carries its COMPONENT=<component>, .build_version is persisted by the ateapi jobs only, and the validate jobs log in nowhere.
  • docker buildx build --check on the Dockerfile reports no warnings; go list -mod=vendor resolves all six commands.
  • ko's published 0.0.30-gs.5 binary read with go version -m: -trimpath=true, CGO_ENABLED=0, no ldflags, the VCS revision embedded — the Dockerfile builds the same way; the published image config (/ko-app/<name> ENTRYPOINT, /ko-app on PATH, the base's user) is reproduced per component.
  • The pin derivation, run locally with upstream's tags present: v0.0.29 — also with a v1.0.0 tag on HEAD, where the previous derivation answered v1.0.0.
  • This pull request's validate workflow builds all six images for both platforms without pushing.

@teemow
teemow requested a review from a team as a code owner September 19, 2026 07:47
The six images are one architect/push-to-registries job each, built from
.circleci/Dockerfile (ko's result: the component at /ko-app/<name> on the
distroless base, CGO_ENABLED=0 -trimpath from the vendored modules) for
linux/amd64 and linux/arm64, signed, with provenance and SBOM, annotated
with the upstream pin. The version is the orb's, from the git tags: a
release tag vX.Y.Z publishes X.Y.Z, 1.0.0 first; a push to giantswarm a
dev build; other branches build with push: false. scan runs Trivy from its
image on the remote engine and records image-refs.txt; charts reads
.build_version. The sync workflow derives the pin from the stable tags
upstream also has. FORK.md states the scheme.

Signed-off-by: Timo Derstappen <teemow@gmail.com>
@teemow
teemow force-pushed the fork/orb-stock-jobs branch from cd42420 to 461fc2d Compare September 19, 2026 08:07
… on gsoci

images.agentgateway and the agentgateway-image pipeline parameter move from
the retagger mirror gsoci.azurecr.io/giantswarm/agentgateway:v1.5.1-gs.4 to
the line's own gsoci path, gsoci.azurecr.io/giantswarm/agentgateway-upstream/
agentgateway:2.0.0 (index sha256:63deaa67…, amd64 + arm64, signed; the same
upstream build, main@c1d24607). The chart test asserts the new path and a
stable version; FORK.md records the pin and the digest.

Signed-off-by: Timo Derstappen <teemow@gmail.com>
@teemow
teemow merged commit 171b9e4 into giantswarm Sep 19, 2026
10 of 11 checks passed
@teemow
teemow deleted the fork/orb-stock-jobs branch September 19, 2026 13:38
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