fix: build and publish nzbget to artifactapi rpm-vendor repos #170

Merged
benvin merged 1 commits from benvin/nzbget-artifactapi into master 2026-07-27 00:45:00 +10:00
Owner

Why

nzbget is absent from the artifactapi rpm-vendor-el9 / rpm-vendor-el8 repodata, so dnf install nzbget fails on the media host (AlmaLinux 9.7). The legacy Gitea RPM registry is being removed from hosts by puppet-prod #496, so nzbget must land in rpm-vendor-el9 or installs break.

Root cause: nzbget's build.sh built the GitHub download URL from PACKAGE_RELEASE, which carries the dist tag (e.g. 1.el9). Upstream only publishes nzbget-<version>-1.x86_64.rpm (no dist tag), so the fetch 404s and a 22-byte "upstream returned 404" junk file is what gets published — createrepo cannot index it, so the package never appears in the repo metadata. The stale junk nzbget-26.1-1.el9 also makes the deploy step's dedup probe return HTTP 200, which would skip re-uploading a corrected 26.1.

How

  • Point the build.sh source URL at the upstream release-1 asset name (nzbget-${PACKAGE_VERSION}-1.x86_64.rpm) while keeping the dist-tagged local output filename, mirroring the code-server package which repackages a prebuilt upstream RPM the same way.
  • Bump nzbget el8/el9 to 26.2 (current upstream stable) so the corrected build produces a fresh filename the deploy step will actually PUT (side-stepping the stale-junk dedup skip).

Validation

  • Confirmed the corrected URL fetches a real 9.1MB RPM through artifactapi's github remote: NAME=nzbget VER=26.2 REL=1 ARCH=x86_64.
  • pytest 72 passed; metadata validates against schema/metadata.json; all pre-commit hooks pass (yamllint, check-jsonschema, etc.).

Post-merge

The deploy pipelines (.woodpecker/deploy-almalinux{8,9}.yaml) run on push to master. On merge they will build-all --distro almalinux/el{8,9}, build nzbget 26.2, and PUT nzbget-26.2-1.el{8,9}.x86_64.rpm to rpm-vendor-el{8,9}; artifactapi regenerates repodata so dnf install nzbget resolves.

https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv

## Why `nzbget` is absent from the artifactapi `rpm-vendor-el9` / `rpm-vendor-el8` repodata, so `dnf install nzbget` fails on the media host (AlmaLinux 9.7). The legacy Gitea RPM registry is being removed from hosts by puppet-prod #496, so nzbget must land in `rpm-vendor-el9` or installs break. Root cause: nzbget's `build.sh` built the GitHub download URL from `PACKAGE_RELEASE`, which carries the dist tag (e.g. `1.el9`). Upstream only publishes `nzbget-<version>-1.x86_64.rpm` (no dist tag), so the fetch 404s and a 22-byte "upstream returned 404" junk file is what gets published — createrepo cannot index it, so the package never appears in the repo metadata. The stale junk `nzbget-26.1-1.el9` also makes the deploy step's dedup probe return HTTP 200, which would skip re-uploading a corrected 26.1. ## How - Point the `build.sh` source URL at the upstream release-1 asset name (`nzbget-${PACKAGE_VERSION}-1.x86_64.rpm`) while keeping the dist-tagged local output filename, mirroring the `code-server` package which repackages a prebuilt upstream RPM the same way. - Bump nzbget el8/el9 to `26.2` (current upstream stable) so the corrected build produces a fresh filename the deploy step will actually PUT (side-stepping the stale-junk dedup skip). ## Validation - Confirmed the corrected URL fetches a real 9.1MB RPM through artifactapi's github remote: `NAME=nzbget VER=26.2 REL=1 ARCH=x86_64`. - `pytest` 72 passed; metadata validates against `schema/metadata.json`; all pre-commit hooks pass (yamllint, check-jsonschema, etc.). ## Post-merge The deploy pipelines (`.woodpecker/deploy-almalinux{8,9}.yaml`) run on push to `master`. On merge they will `build-all --distro almalinux/el{8,9}`, build nzbget 26.2, and PUT `nzbget-26.2-1.el{8,9}.x86_64.rpm` to `rpm-vendor-el{8,9}`; artifactapi regenerates repodata so `dnf install nzbget` resolves. https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
unkinben added 1 commit 2026-07-26 23:53:06 +10:00
fix: build and publish nzbget to artifactapi rpm-vendor repos
ci/woodpecker/pr/build-fedora44 Pipeline was successful
ci/woodpecker/pr/build-fedora42 Pipeline was successful
ci/woodpecker/pr/build-fedora43 Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build-almalinux9 Pipeline was successful
ci/woodpecker/pr/build-almalinux8 Pipeline was successful
134704b3d6
nzbget is absent from the artifactapi rpm-vendor-el9/rpm-vendor-el8
repodata, so `dnf install nzbget` fails on the media host. Its build.sh
requested the download asset using PACKAGE_RELEASE, which carries the
dist tag (e.g. 1.el9); upstream only publishes nzbget-<version>-1.x86_64.rpm,
so the fetch 404s and a 22-byte junk file gets published that createrepo
cannot index. The existing junk nzbget-26.1-1.el9 also makes the deploy
dedup probe return 200, blocking re-upload of a corrected 26.1.

- Point the build.sh source URL at the upstream release-1 asset name,
  keeping the dist-tagged local output filename (mirrors code-server).
- Bump nzbget el8/el9 to 26.2 (current upstream stable) so the corrected
  build produces a fresh filename that the deploy step will actually PUT.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
benvin merged commit 3ba9f77c10 into master 2026-07-27 00:45:00 +10:00
benvin deleted branch benvin/nzbget-artifactapi 2026-07-27 00:45:01 +10:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/rpmbuilder#170