Skip to content

Remove Docker release channel#170

Merged
jeremy merged 1 commit intomainfrom
remove-docker-release
Feb 28, 2026
Merged

Remove Docker release channel#170
jeremy merged 1 commit intomainfrom
remove-docker-release

Conversation

@jeremy
Copy link
Member

@jeremy jeremy commented Feb 28, 2026

What

Remove Docker multi-arch image builds from the release pipeline.

Why

The CLI is a statically-linked Go binary (CGO_ENABLED=0) with zero runtime dependencies, cross-compiled for 10 OS/arch targets. Docker adds no value for an interactive CLI that requires browser OAuth, system keyring access, and shell integration — none of which work in a container.

QEMU multi-arch builds were the slowest part of the release pipeline (the timeout-minutes: 30 existed because of QEMU hangs). Release job timeout reduced to 15 minutes.

Removed:

  • Dockerfile.goreleaser
  • dockers_v2 section from .goreleaser.yaml
  • QEMU, Docker Buildx, and GHCR login steps from release.yml
  • packages: write permission (was only needed for GHCR push)

Testing

  • goreleaser check passes
  • No stale Docker/GHCR references in release config

The CLI is a statically-linked Go binary (CGO_ENABLED=0) that runs on bare
metal with zero dependencies across 10 OS/arch targets. Docker adds no value:

- Auth requires browser OAuth — dead on arrival in a container
- Keyring doesn't work in containers
- Shell completions are useless containerized
- CI/CD has better options (gh release download, curl)
- QEMU multi-arch builds are the slowest part of the release pipeline and
  the source of the timeout-minutes: 30 (now reduced to 15)

Removes: Dockerfile.goreleaser, dockers_v2 from .goreleaser.yaml, QEMU/Buildx/
GHCR steps from release.yml, packages:write permission.
Copilot AI review requested due to automatic review settings February 28, 2026 19:19
@github-actions github-actions bot added ci CI/CD workflows enhancement New feature or request labels Feb 28, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the Docker multi-arch image release channel from the Basecamp CLI project. The rationale is sound: the CLI is a statically linked Go binary with no runtime dependencies that requires browser OAuth, system keyring access, and shell integration — features that don't work in a container — making Docker images of little practical value.

Changes:

  • Deleted Dockerfile.goreleaser (the minimal distroless image spec used for Docker builds)
  • Removed the dockers_v2 section from .goreleaser.yaml (multi-arch GHCR image publishing config)
  • Cleaned up .github/workflows/release.yml: removed QEMU/Docker Buildx/GHCR login steps, dropped packages: write permission, and halved the release job timeout from 30 to 15 minutes

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
Dockerfile.goreleaser Deleted entirely; the distroless container image spec is no longer needed
.goreleaser.yaml Removed dockers_v2 block that published multi-arch images to ghcr.io/basecamp/cli
.github/workflows/release.yml Removed Docker-related steps (QEMU, Buildx, GHCR login), dropped packages: write permission (was solely for GHCR push), and reduced timeout from 30 to 15 minutes

No stale Docker or GHCR references remain in the release config, documentation, or other workflow files. The .goreleaser.yaml ends cleanly, the permissions section is correctly trimmed, and the timeout reduction is well-motivated by removing the QEMU-dependent slow path.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jeremy jeremy merged commit 494b994 into main Feb 28, 2026
27 checks passed
@jeremy jeremy deleted the remove-docker-release branch February 28, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD workflows enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants