fix(ci): pin container image names instead of deriving them from the repo - #226
Merged
Conversation
…repo
Container packages are scoped to the organisation and named at push time, so
they are neither renamed nor redirected when a repository is renamed — unlike
git, web, issues and stars, which are. Deriving the image name from the
github.repository context therefore tied the published package name to the
repository name.
After this repo was renamed, the next release would have pushed to
ghcr.io/threefoldtech/ledger_graphql_{processor,query-node}: brand new, empty
packages. Meanwhile processor-chart/values.yaml and docker-compose.yml still
reference tfchain_graphql_*, and those packages are live and public with 29 tags
up to 2.12.3. The release would have appeared to succeed while changing nothing
for any deployment, and the failure mode is absence of updates rather than an
error, so it would not have been obvious.
Pins both names to what every consumer already pulls, matching how the tfchain
workflows have always declared theirs. Renaming the images is still an option
later, but it is a breaking change for deployments and belongs in a deliberate
step that updates the charts and compose files alongside it.
Merged
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.
Prerequisite for the next release. Without this, tagging would publish images that nothing pulls.
The problem
publish_container_images.ymlderived its image names from thegithub.repositorycontext:Container packages are scoped to the organisation and named at push time — per GitHub's docs they are "scoped to accounts or organizations, not tied to repositories by default." A repository rename redirects git, web, issues, wikis and stars; it does not rename or redirect packages, and there is no facility to rename a package at all.
So after this repo's rename, the next release would have pushed to
ledger_graphql_{processor,query-node}— brand new, empty packages — while every consumer kept pulling the old ones:Verified against the registry:
The release would have looked successful and changed nothing for any deployment. The failure mode is absence of updates, not an error, so it would likely have gone unnoticed for a while.
The fix
Pins both names to what consumers already reference, which is also how the tfchain workflows have always declared theirs —
ghcr.io/threefoldtech/tfchain_activation_service,..._stellar_bridge,.../tfchainare all hardcoded, so that repo's rename toledger_chaincaused no such problem.These were the only two uses of
github.repositoryin any workflow here.Not done here
Renaming the images to match the rebrand is still available, but it is a breaking change — every deployment must update its image reference or silently stop receiving updates — so it belongs in a deliberate change that updates the charts and compose files at the same time, not as a side effect of a repo rename.
🤖 Generated with Claude Code
https://claude.ai/code/session_011YKJm3zuWdSepriT9KL9zy