Skip to content

ci: build and publish the Docker image from a release tag - #50

Merged
marevol merged 1 commit into
mainfrom
ci/docker-image-publish
Oct 18, 2026
Merged

marevol merged 1 commit into
mainfrom
ci/docker-image-publish

Conversation

@marevol

@marevol marevol commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Builds and publishes ghcr.io/codelibs/fessctl:<version> from a v* tag, replacing the manual multi-arch push.

  • build job: native runners (ubuntu-24.04 for amd64, ubuntu-24.04-arm for arm64); on a tag each image is pushed by digest. Building amd64 under QEMU on Apple Silicon segfaults in uv pip install, which is why the manual push failed.
  • merge job: assembles the two digests into the <version> tag (docker buildx imagetools create) and inspects the result.
  • The tag must equal the pyproject.toml version (same check as publish.yml). workflow_dispatch requires a v* tag ref.
  • Only the release tag is pushed, no latest (the docs tell users to name a release tag).
  • On a pull request that touches the Dockerfile, src/, pyproject.toml or this workflow, the image is only built on both architectures and not pushed.

Verified

  • actionlint is clean.
  • The pull-request build path runs in this PR's CI (both architectures).

Not verified

  • The push and manifest path only runs on a tag, so it is untested until the next release. It needs the ghcr.io/codelibs/fessctl package to grant this repository write access (package settings -> Manage Actions access); the existing package was pushed by hand, so that link may have to be added once.

Add a docker workflow that builds the image natively on an amd64 and an
arm64 runner and, on a v* tag, pushes both by digest and assembles the
multi-arch ghcr.io/codelibs/fessctl:<version> tag. The image used to be
pushed by hand, and building the amd64 stage under QEMU on Apple Silicon
segfaults in `uv pip install`.

- the tag has to match the pyproject.toml version, like publish.yml
- only the release tag is pushed (no latest), as the docs tell users to
  name a release tag
- on a pull request touching the Dockerfile, src or the workflow, the
  image is only built on both architectures, not pushed
@marevol marevol self-assigned this Oct 18, 2026
@marevol marevol added this to the 0.5.0 milestone Oct 18, 2026
@marevol
marevol merged commit 8ae472a into main Oct 18, 2026
8 checks passed
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