cursus

Container Publishing

Status: implemented Docker image publishing; binary release automation is not implemented.

Current Workflow

.github/workflows/docker-publish.yml builds and publishes the broker image to GitHub Container Registry.

Triggers:

The job uses read-only repository contents permission and packages: write. Checkout sets persist-credentials: false; registry login uses the workflow-scoped GITHUB_TOKEN.

Published Image

The image name is:

ghcr.io/<owner>/<repository>

For the upstream repository this is ghcr.io/cursus-io/cursus.

Published tags are generated by docker/metadata-action:

Source Tags
main push main, latest, and sha-<short-sha>
semantic version tag such as v0.2.0 0.2.0, 0.2, latest, and sha-<short-sha>
manual run ref/sha tags allowed by metadata rules

The current build target is linux/amd64 and uses the repository Dockerfile.

Workflow Steps

  1. actions/checkout@v7 with persisted credentials disabled.
  2. docker/setup-buildx-action@v4.
  3. docker/login-action@v4 for ghcr.io.
  4. docker/metadata-action@v5 for OCI labels and tags.
  5. docker/build-push-action@v6 to build and push.

Package Visibility

GHCR authentication does not require a separate account beyond GitHub. The repository organization owns the package. Package visibility and access are managed in the GitHub package settings; publishing an image does not automatically guarantee that anonymous pulls are allowed.

Not Implemented

The repository currently has no release.yml and no .goreleaser.yml. The Docker workflow does not:

Those capabilities require a separate reviewed release workflow. Until then, tags publish container images only.

Verification

After a successful workflow run:

docker pull ghcr.io/cursus-io/cursus:latest
docker inspect ghcr.io/cursus-io/cursus:latest

For a version tag, replace latest with the normalized semantic version, for example 0.2.0.