Menu
releaser docs

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: true

This runs docker buildx build --push on the repository root and pushes two tags:

  • ghcr.io/<owner>/<repo>:X.Y.Z
  • ghcr.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/arm64

Docker 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.