Build dedicated release-tools container image for op1st Tekton release pipeline #156
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/OpenSpec
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
RFC - Request For Comments
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
hermes-attempted
hermes-needs-clarification
hermes-ready
hermes-review
hermes-wip
human-required
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
agentic-forges/forgejo-mcp#156
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Three live op1st Tekton release attempts (
v2.24.0,v2.24.1,v2.24.2) failed at distinct steps because tools (syft, goreleaser, cosign, node, mcpb) are installed at Step runtime in stock public images with mismatched assumptions:v2.24.0— Tekton Step containers share workspaces but not/usr/local/bin/. Tools installed ininstall-*Steps disappeared before thereleaseStep started →goreleaser: command not found(exit 127).v2.24.1—GOCACHE/GOMODCACHEset to paths inside the workspace mount madegit statusdirty → GoReleaser refused to publish.v2.24.2—ghcr.io/sigstore/cosign/cosign:vXis distroless (no shell), so Tektonscript:blocks fail withfork/exec /tekton/scripts/script-0-XXXX: no such file or directory. Release shipped 13/14 assets (no.sig).Each failure burned a release tag. The pattern is structural: every Task improvises its own toolchain.
Proposed change
Build a dedicated
release-toolsOCI image with all release tooling baked in, pinned, signed, and SBOM-attached. The three consuming Tekton Tasks switch to referencing this image and drop the runtime installs (separate follow-up change).Shape
registry.access.redhat.com/hi/go:<ver>-builder. Red Hat hardened image with bash + dnf available for layering additional tools.VERSIONS.md.image/release-tools/or.tekton/release-tools/. Lift to a separate repo =git mvof those two trees + 5 enumerated operator actions.image/release-tools/or.tekton/release-tools/change. Tag publish fires only onrefs/tags/release-tools/v*. Won't collide withv*forgejo-mcp tags.package-lock.json+npm ci --ignore-scripts+ SHA256 inVERSIONS.md. No live npm registry pull at build.Why a separate issue and not just the PR
PR #155 is the OpenSpec design + adversarial review only. This issue exists so the design + rationale + adversarial findings are discoverable without reading 4 markdown files. It's the user-facing summary; PR #155 is the artifact.
Linked PRs and beads
release-tools-image(proposal-only; no Containerfile yet)forgejo-mcp-1b4(P0)openspec/changes/release-tools-image/review.md— 14 critiques, 9 patched in-tree, 5 future-work beads (forgejo-mcp-aun,-3h2,-j52,-46j) filed blocked onforgejo-mcp-1b4Open questions for maintainers
quay.io/operate-first/release-tools,ghcr.io/operate-first/..., orcodeberg.org/operate-first/...? Needs op1st-emea-b4mad coordination.op1st-pipelines≥ 0.22.0 (required forfiles.anyCEL)? Verify before merging the implementation PR.Acceptance
image/release-tools/and.tekton/release-tools/release-tools/v1.0.0tag pushed, publish pipeline produces a signed, SBOM-attached image at the agreed registry pathcosign verify --key <op1st-pub> <image-ref>succeedsrelease-pipeline-use-release-tools-imagerewrites the three consuming Tekton Tasks to reference the imageforgejo-mcp-gdz)Implementation PR opened: #157 (both iterations — image source + Tekton pipelines — in a single PR). Local verifier (
bash build.sh && bash verify.sh+ yaml/pre-commit/openspec) all green. Pending operator coordination on registry path before firstrelease-tools/vX.Y.Ztag push.