Repository navigation
Stop publishing images; release on a version tag or on request - #29
Merged
Merged
Conversation
The owner decided on 2026-11-13 that a release ships on the GitHub release only, and that dbpantry stops publishing container images. The publish and manifest jobs go: the ghcr.io login and push, the SBOMs and provenance attested to the registry, the multi-architecture manifest and packages: write. The ghcr.io images are frozen; nothing is deleted there. The scan and verify gates stay, and the GitHub release now waits for them. Triggers become the org's pair, a pushed vX.Y.Z tag or a dispatch with a required tag input, replacing confirm=release-go. Every job checks out refs/tags/<tag>, and the tag-on-main check reads HEAD, since a dispatch's GITHUB_SHA is its branch head. dbpantry builds no release binaries, so it keeps its own jobs instead of calling the shared go-release.yml. The guard now asserts the new triggers and fails on any image publish. Recorded as design.md D-77.
[[ -e ]] follows a symlink, so a dangling one in /usr/bin reads as absent. On the current ubuntu-latest amd64 image /usr/bin/grub-ntldr-img dangles, and /bin is /usr/bin, so the second pass tried to link the same name again and ln stopped the check under set -e. It failed verify (amd64) on #29 while arm64, whose image lacks that link, passed. Testing -L as well keeps every other name as it was.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
dbpantry stops publishing container images, and its release moves onto the org's two triggers. The owner decided on 2026-11-13 that a release ships on the GitHub release only, and answered "Yes, stop images" for this repo.
What it published before:
ghcr.io/simtabi/dbpantry-<engine>.cliimage, toghcr.io/simtabi/dbpantry-cli.dbpantry-X.Y.Z.tar.gz, its.sha256, and provenance for the tarball.What it publishes now: only the GitHub release, unchanged.
The ghcr.io images are frozen. No new tag is pushed and nothing is deleted from ghcr.io. Measured 2026-11-13, no dbpantry package exists under
simtabion ghcr.io, and no GitHub release exists yet (the one release run, v0.1.0, failed). So no consumer can have pulled one.Why dbpantry keeps its own jobs instead of calling
simtabi/.github's sharedgo-release.yml: that workflow runs GoReleaser and publishes binaries, and dbpantry releases no binaries. Porting would add a release channel it does not have. It would also lose the scan and verify gates, the tag-on-maincheck, the MongoDB refusal and the contributors list. This is the same library-style exception as simtabi/cloudkit#4.Removed
publish(one run per image per architecture), with every step in it:docker login ghcr.io, tagging<tag>-<arch>,docker push, reading the digest, and the syft SBOMactions/attestwithpush-to-registry: trueactions/attestwithpush-to-registry: truepackages: write,id-token,attestationsandartifact-metadatamanifest, with every step in it:docker login ghcr.ioanddocker buildx imagetools createpush-to-registry: truepackages: writeconfirminput and the Refuse without confirm=release-go step. A new first step refuses anything but avX.Y.Z[-pre]tag that exists on GitHub.There were no image-only secrets: logins used
github.token.Kept. The Dockerfiles stay:
make builduses them, not only the publish job. Also kept:make verifyon both architecturesvX.Y.Zcheck, the tag-on-maincheck, the CHANGELOG section check and the MongoDB refusalThe release job now
needs: [prepare, scan, verify]instead ofmanifest.Changed
v[0-9]+.[0-9]+.[0-9]+tags, andworkflow_dispatchwith a requiredtaginput. Concurrency is per tag and never cancelled. No-*pre-release filter: dbpantry refuses pre-releases, so an rc push would only start a run that fails.inputs.tag || github.ref_name, and every checkout isrefs/tags/<tag>. The tag-on-maincheck now testsHEADinstead ofGITHUB_SHA, because on a dispatchGITHUB_SHAis the branch head, not the tag's commit.src/internal/releasehasTestReleaseRunsOnAVersionTagOrOnRequestandTestReleasePolicyRejectsAWrongRelease. They assert the two triggers, version-only tag filters, a requiredtaginput, a first step that refuses before any checkout, tag-only checkouts and every job needing the gate. They fail on any image publish:docker/login-action,build-push-action,bake-actionormetadata-action;docker loginordocker push;buildx --push;imagetools create;crane/oras push;skopeo copy;push-to-registry: true;packages: write. A localscripts/buildplustrivy imagemust still pass.docs/guides/release.md,README.md,SECURITY.md,CHANGELOG.md[Unreleased], and a new design.md entry, D-77. The image tag scheme is kept, marked frozen.Consumers to decide on separately (not changed here):
scripts/backends/kubernetes.shand the Helm chart (global.imageRegistry: ghcr.io/simtabi) still pull from the frozen registry. A Kubernetes user now has to push their own build or pointglobal.imageRegistryat their own registry. The CHANGELOG says so.Verification
make go-ci(gofmt, vet, tests): green.make go-lint: 0 issues.make verify-structure: 72 checks well-formed.make lint: shellcheck clean on 148 files. actionlint 1.7.12: clean on all three workflows.scripts/release-notes Unreleased: renders. The docker-dependentmake verifyruns in CI's release gates, not here.release.ymlwithgo test -count=1, one defect at a time, and the file restored (confirmed withcmp). Each of these failed:branches: [main]; aschedule;packages: write; adocker/login-actionstep; adocker/build-push-actionstep; adocker push ghcr.io/...step; the release job's checkout withoutref. The oldmainworkflow fails four ways: no tag push, notaginput, no tag resolution, andpackages: write. Twenty-four synthetic cases in the companion test fail too, and the local build-and-scan control passes.Also fixed: check 48 on the current amd64 runner
The first CI run's
verify (amd64)failed on48-runtime-detectionwithln: failed to create symbolic link '/tmp/mdb-rt-tools.*/grub-ntldr-img': Already exists.verify (arm64)passed, and the last weekly run onmain(2026-11-09) passed./usr/binand/bin, skipping a name already linked with[[ -e ]]. That test follows symlinks, so a dangling/usr/bin/grub-ntldr-imgon the current ubuntu-latest amd64 image reads as absent. Since/binis/usr/binthere, the second pass links it again, andlnstops the check.-Las well, so every other name behaves as before.This is unrelated to the release change, but it blocked green.