Tag images by NUT version + document tag scheme (closes #3)#4
Merged
Conversation
Tags were date-based (YYYY.MM), which didn't reveal the NUT server version inside — the point raised in issue #3. Now the build resolves the packaged nut-server version from Debian bookworm and tags/labels the image by it, while keeping date tags as immutable build stamps. - Add version tags `X.Y.Z-R` (e.g. 2.8.0-7) and `X.Y.Z` (e.g. 2.8.0). - Add OCI labels org.networkupstools.version / .upstream and set org.opencontainers.image.version to the NUT version. - Record the built version in NUT_VERSION; the monthly commit doubles as a keepalive so GitHub doesn't auto-disable the cron after 60 days idle (which already caused the 2025.11–2026.04 gap in published tags). - Document the two-axis tag scheme (version vs build) in the README. - Drop unused semver git-tag triggers/patterns (versioning is NUT-based). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Why
Issue #3 asked how the
YYYY.MMtags map to NUT server versions. They didn't — the date tags are build stamps, and the NUT version (from Debian'snut-serverpackage) was invisible from the tag name. This makes the version a first-class, discoverable thing.What changed
docker-publish.ymlnut-servercandidate fromdebian:bookworm-slim(package versions are identical across arches).X.Y.Z-R(e.g.2.8.0-7, exact Debian version) andX.Y.Z(e.g.2.8.0, upstream pointer that moves to the newest Debian revision).latest, theYYYY.MMbuild stamp, and the legacy*-latestaliases stay.org.networkupstools.version/org.networkupstools.upstream, andorg.opencontainers.image.versionnow carries the NUT version (waslatest).type=semverpatterns and thev*.*.*git-tag trigger — versioning is NUT-based now.contents: read→writefor the keepalive commit.Keepalive — the monthly build now writes and commits
NUT_VERSION. This keeps the repo active so GitHub doesn't auto-disable the schedule after 60 days of inactivity. That auto-disable already bit us: no monthly tags exist between2025.10and2026.05because the cron was disabled during that idle stretch.NUT_VERSION— human-readable record of the packaged version (seeded to the current2.8.0-7), refreshed by each monthly build.README.md— new "Tags & versions" section explaining the two-axis scheme (which NUT version vs. which build) and how to inspect any tag via the OCI label orupsd -V.Existing published tags (retagged separately, no rebuild)
docker buildx imagetools createwas used to add version tags to the already-published images:2.8.0-7,2.8.0→ current bookworm image2.7.4-13,2.7.4→ previous bullseye line (2025.06–2025.10)Note to verify
The keepalive relies on the monthly
GITHUB_TOKENcommit counting as repo activity. If GitHub still disables the schedule around the 60-day mark, the fallback is a PAT-authored commit or the workflow re-enable API — but the token-commit approach is the low-friction default worth trying first.🤖 Generated with Claude Code