Skip to content

fix(release): skip the docker pipe so the CLI release can ship - #49

Merged
juicycleff merged 1 commit into
mainfrom
fix/release-skip-docker
Aug 7, 2026
Merged

fix(release): skip the docker pipe so the CLI release can ship#49
juicycleff merged 1 commit into
mainfrom
fix/release-skip-docker

Conversation

@juicycleff

Copy link
Copy Markdown
Contributor

Unblocks the CLI release. The build itself is now fine — this is the last step failing.

The failure

docker images: failed to publish artifacts: failed to push ghcr.io/xraph/forge:1.9.2-arm64:
  exit status 1: denied: installation not allowed to Write organization package

Six minutes of successful build, then a permission denial on the push.

Why nothing in this repo can fix it properly

go-binary-release.yml's goreleaser job declares permissions: contents: write and nothing else. Once a permissions: block exists, everything unlisted is none — so its GITHUB_TOKEN has packages: none, while the docker path logs into ghcr.io as exactly that token and pushes.

  • A reusable workflow's own block is authoritative for its jobs, so the packages: write this job already declares cannot widen it.
  • GORELEASER_TOKEN never reaches the login step, which hardcodes secrets.GITHUB_TOKEN.
  • Granting the repo write access on the GHCR package does not help either — the token has no packages scope to exercise.

Why docker: false alone is not the answer

That input only skips QEMU, Buildx and the registry login. .goreleaser.yml still carries dockers + docker_manifests, so GoReleaser would build the images and then push them unauthenticated — a worse failure than the current one. The pipe has to be skipped in GoReleaser itself, via --skip=docker. With that done the setup steps are simply unnecessary, hence both lines change together.

Verification

Run locally against this config:

  • GoReleaser reports skipping announce, docker, publish, and validate.
  • dist/artifacts.json contains Archive, Binary, Checksum, Homebrew Formula, Linux Package, Metadata, Scoop Manifest — every artifact except the images.
  • No Docker artifacts emitted.
  • release.yml parses.

Temporary

xraph/workflows#1 grants packages: write properly. Revert both lines here once it lands and the v1 tag moves — this repo pins @v1, so merging alone won't restore images. The comment in the diff says so and links the PR.

🤖 Generated with Claude Code

The release now builds cleanly and dies at the very last step:

    denied: installation not allowed to Write organization package

go-binary-release.yml's `goreleaser` job declares `permissions: contents: write`
and nothing else, and once a permissions block exists everything unlisted is
`none` -- so its GITHUB_TOKEN has `packages: none` while the docker path logs in
as exactly that token and pushes. The called workflow's block is authoritative
for its own jobs, so the `packages: write` this job already declares cannot
widen it, and GORELEASER_TOKEN never reaches the login step, which hardcodes
secrets.GITHUB_TOKEN. Nothing in this repository can grant the scope.

Note `docker: false` alone would have made it worse rather than better: that
input only skips QEMU, Buildx and the registry *login*, while .goreleaser.yml
still carries dockers/docker_manifests -- so GoReleaser would build the images
and then push them unauthenticated. The pipe has to be skipped in GoReleaser
itself, which is what `--skip=docker` does; the setup steps are then simply
unnecessary, hence both lines.

Verified locally: with `--skip=docker` GoReleaser reports "skipping ... docker"
and dist/artifacts.json contains Archive, Binary, Checksum, Homebrew Formula,
Linux Package, Metadata and Scoop Manifest -- every artifact except the images.

Temporary. xraph/workflows#1 grants the permission properly; this reverts once
that lands and its v1 tag moves.
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
forge Ready Ready Preview Aug 7, 2026 4:59pm

Request Review

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Conventional Commits Validation

PR Title: valid
Commits: all 1 follow conventional format

@github-actions github-actions Bot added the fix label Aug 7, 2026
@juicycleff
juicycleff merged commit 7f552b9 into main Aug 7, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant