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/appMulti-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 within a day.