Repository navigation
feat(ghcr): flag nightly and main images and report creation time - #83
Merged
Merged
Conversation
The build pipeline now repoints three moving tags: latest on a tagged release, nightly on a nightly build and main on a main-branch build. ListTags treated only latest as a channel, so nightly and main showed up as rows of their own in the image pickers, and the row they pointed to carried no mark. Treat all three as channel tags: none is a row, and the versioned tag sharing a channel's digest gets the latest, nightly or main flag. Each row also reports the image creation time from its config blob, which the client already fetched for sorting. The images handler returned a trimmed copy of each row, dropping everything but tag, image and latest; it now serves the ghcr rows as they are. Signed-off-by: Geoff Turk <geoff@ic3.dev> Signed-off-by: vthwang <vthwang.work@gmail.com>
vthwang
force-pushed
the
farm/channel-tags
branch
from
October 15, 2026 19:13
73fcf7e to
7bf90d8
Compare
vthwang
approved these changes
Oct 15, 2026
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
The build pipeline (ic3software/devops
fpp/) now repoints three moving tags in GHCR:lateston a tagged release,nightlyon a nightly build andmainon a main-branch build.ListTagsonly knew aboutlatest, sonightlyandmainappeared as selectable rows in the image pickers and the versioned image they pointed to carried no mark.internal/ghcr/client.go:latest,nightlyandmainare all channel tags. None is a row; the versioned<version>-<sha>tag that shares a channel's digest gets thelatest,nightlyormainflag. The channel digest lookups run inside the existing errgroup.created, the image creation time in RFC 3339 UTC, read from the config blob the client already fetched for sorting. Empty when the registry cannot say.internal/handler/setup.go:GET /setup/imagesreturned a trimmed copy of each row with onlytag,imageandlatest, which silently dropped the new fields. It now serves theghcr.ImageTagrows as they are. Same JSON shape plus the three optional fields.The upgrade handlers validate a requested image against this list, so
ghcr.io/ic3software/<pkg>:nightlyis no longer accepted as an upgrade target. The pickers never offered it, so this only affects callers using the API by hand; the immutable tag it points to is what they get instead.The matching frontend change is ic3software/vtafarm#99.
Testing
Ran the modified client against the live registry from a container. For
vtait returnsVTI-Eucalyptus-49f5f1beas latest and0.60.0-fd1621d9as nightly; fordid-hosting-daemonit returns latest, nightly and main on three different rows, each with its date. Verified end to end against the local API with the frontend branch.gofmt,go veton the ghcr and handler packages, andgo build ./...pass.Note on the shared dev database
The shared dev database is already at schema version 43, applied from branch
feat/pooled-vta-claim(migrations/000043_vta_pool.{up,down}.sql, not yet onmain). A checkout of this branch cannot start against that database without those two files, since golang-migrate needs the files for the current version. They are deliberately not part of this PR; copy them in locally fromorigin/feat/pooled-vta-claimto run this branch, and they arrive onmainwith that branch's PR.