ci: optional apt repository per build (aptly repo.sh, matching apt.new) - #35
ci: optional apt repository per build (aptly repo.sh, matching apt.new)#35igorpecovnik wants to merge 2 commits into
Conversation
0af3601 to
cc73960
Compare
cc73960 to
d76f5c8
Compare
|
First live test (run 30383424520,
Re-test once armbian/build#10301 is merged (the reprepro job checks out build |
d76f5c8 to
1289417
Compare
|
Second test run (30400943657) — the important parts now work: GPG import succeeds (both keys imported, But it produced a ~214 MB log / 7-min step. Root cause: the reprepro build ran under Fixes:
Note: the log bloat obscured the tail, so I could not confirm |
1289417 to
67b0e52
Compare
…oduction)
Adds an opt-in path that builds a complete, signed apt repository with the same
aptly tooling and keys production uses (tools/repository/repo.sh, the version
armbian.github.io runs to build repo.armbian.com), so the layout matches
apt.new (dists by release codename, pool by component) -- groundwork for
per-pull-request repositories.
Folded into the existing publish-debs-to-repo job, reusing its single
debs-to-repo-download: after the debs are downloaded (and before the rsync that
moves them away with --remove-source-files), an opt-in step checks out the build
repo's tools at repo_tool_ref and runs:
tools/repository/repo.sh -c update -k -i <output/debs[-beta]> -o output/repository
which publishes dists/<release> + pool/<component> under output/repository/public
and signs the top-level Release files with the keys imported above (GPG_KEY3 =
Armbian repo key, GPG_KEY4 = Igor). A companion step rsyncs the contents of
public/ to storage/repositories/<path> (served at
https://repo.armbian.com/repositories/<path>). Both steps are continue-on-error
so the optional repo can never block the raw-deb publish.
repo_tool_ref TEMPORARILY points at the armbian/build PR branch
(singlemode-to-main) that carries the production repo.sh; set it to "main" once
armbian/build#10304 lands.
Wiring:
- complete-artifact-matrix.yml: inputs renamed to generaterepository_default /
repository_target_path, new repo_tool_ref input; reprepro steps replaced with
the repo-tool checkout + repo.sh build + public/ upload.
- build-all.yml: manual input renamed generateReprepro -> generateRepository.
Replaces the earlier reprepro approach (debs-to-repo-reprepro); armbian/build
#10301 / #10303 remain valid fixes for that framework command but are no longer
on this path.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
67b0e52 to
840ff87
Compare
The "Build signed apt repository (aptly repo.sh)" step produced an empty repository: every aptly publish reported "publishing from empty source" and zero packages, so pool/ shipped empty. Root cause is a BETA mismatch between steps. The version, build and nightlybuild-passthrough steps resolve nightly/stable as `github.event.inputs.nightlybuild || inputs.nightlybuild_default`, so a run driven by the parent workflow's nightlybuild_default=yes (dispatch input unset) builds nightly -- trunk REVISION (26.8.0-trunk.5), debs pushed to the beta namespace. But the debs-to-repo download and repo.sh steps keyed off `github.event.inputs.nightlybuild == 'true'` alone, which ignores nightlybuild_default and evaluates to BETA=no. The download then looked in the stable namespace, logged "Missing deb" for every package, left output/debs empty, and repo.sh had nothing to import. Resolve BETA in both steps the same way the build does -- nightly unless explicitly 'no' (mirrors the Determine version step's `[ "$NIGHTLY" = "no" ]`) -- normalized to yes/no. Download and repo.sh now target the same namespace/dir the build wrote to, so the signed repo is populated. Signed-off-by: Igor Pecovnik <igor@armbian.com>
Adds an opt-in path that builds a complete, signed apt repository with the same aptly tooling and keys production uses —
tools/repository/repo.sh, the versionarmbian.github.ioruns to build https://repo.armbian.com — so the layout matchesapt.new(dists by release codename, pool by component). Groundwork for per-pull-request repositories.What it does
Folded into
publish-debs-to-repo, reusing its singledebs-to-repo-download. After the debs are downloaded (and before the rsync that moves them away):repo_tool_ref(the productionrepo.sh);tools/repository/repo.sh -c update -k -i <output/debs[-beta]> -o output/repository→ publishesdists/<release>+pool/<component>underoutput/repository/public, signing the top-levelReleasefiles with the keys imported above (GPG_KEY3= Armbian repo,GPG_KEY4= Igor);public/tostorage/repositories/<path>→ served athttps://repo.armbian.com/repositories/<path>.Both steps are
continue-on-error, so the optional repo can never block the raw-deb publish.Depends on armbian/build#10304
That PR brings the production
repo.sh(+ 6 review fixes) ontomain. Until it lands,repo_tool_reftemporarily points at its branchsinglemode-to-mainso this is testable now. Once #10304 merges, setrepo_tool_reftomain(then it just uses the normal build checkout).Toggle
build-all.yml: manualgenerateRepositoryinput (defaultno).generaterepository_default(defaultno),repository_target_path(→target_path),repo_tool_ref(→singlemode-to-main).Notes
complete-artifact-matrix.yml+build-all.ymlchange; actionlint-clean on the touched steps.armbian/build#10301/#10303remain valid fixes for the framework'sdebs-to-repo-reprepro, but are no longer on this path.