Docker Mode
Build ./Dockerfile and push it tagged with the release version.
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v7
- uses: orochibraru/releaser@v1
with:
docker: trueThis runs docker buildx build --push on the repository root and pushes two
tags:
ghcr.io/<owner>/<repo>:X.Y.Zghcr.io/<owner>/<repo>:latest
A prerelease pushes :X.Y.Z-canary.N and :canary (its id)
instead, and never moves :latest.
The image gets the org.opencontainers.image.version and
org.opencontainers.image.source labels, so GHCR links the package to the repo.
The GitHub release gets a docker pull <image>:X.Y.Z block appended to its
notes (CHANGELOG.md doesn't).
:X.Y.Z is pushed before the release commit and tag, so a failed build
leaves the repository untouched. :latest (or :canary) moves last, after the
tag and the GitHub release, so a rejected push never moves it. If moving it
fails, the error gives the docker buildx imagetools create command to finish
by hand.
#Registry and login
For ghcr.io images, the action logs in with its token as GITHUB_ACTOR. For
any other registry, set docker-image and log in first:
- uses: docker/login-action@v4
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: orochibraru/releaser@v1
with:
docker: true
docker-image: docker.io/me/app#Multi-arch
Multi-platform builds need QEMU and a buildx builder:
- uses: docker/setup-qemu-action@v4
- uses: docker/setup-buildx-action@v4
- uses: orochibraru/releaser@v1
with:
docker: true
docker-platforms: linux/amd64,linux/arm64Docker mode and artifact mode can be enabled together.
A runnable example lives in examples/docker.
This guide lives in the project repo: edit it there, and this page follows with the next release.