Release
Releasing is driven by cutting a GitHub release. The
.github/workflows/docker-publish-release.yaml workflow runs on
release: published and does two things:
sync-version— comparesapplication.propertiesto the release tag (stripping a leadingv). If they differ, it opens arelease-sync/<tag>branch, bumps<version>inapplication.properties, and auto-merges that PR intomain(squash, branch deleted).build-and-push-multiarch— builds the image forlinux/amd64andlinux/arm64and pushes it.
Image tags
The metadata step derives tags from the release tag (semver):
:<semver>(e.g.:1.3.0):<major>.<minor>(e.g.:1.3):<major>(e.g.:1):latest(skipped for pre-releases)
Images are pushed to ghcr.io/schulydev/schulykeycloak and, best-effort, to Docker
Hub at <DOCKERHUB_USERNAME>/schulykeycloak.
How to cut a release
- Make sure
mainis green. - Create a GitHub release with a semver tag (e.g.
v1.3.0). The workflow handles the version bump and image push — do not bumpapplication.propertiesby hand.
Required secrets
| Secret | Purpose |
|---|---|
MAIN_PUSH_TOKEN | Lets the sync-version job push the version-bump branch to main and open/merge the sync PR. Required. |
DOCKERHUB_USERNAME | Docker Hub namespace + login. Optional — the Docker Hub login/push is best-effort (continue-on-error). |
DOCKERHUB_TOKEN | Docker Hub access token. Optional, as above. |
GITHUB_TOKEN (provided automatically) is used to push to GHCR.