Fetch appliance layers from the mirror instead of building them #3
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Keel-Linux/.github!3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ci/appliance-from-mirror"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The self-hosted runner
keel-lxc-1runs on the public services VM, which haslxc, kcov, bats, zstd and python3-yaml but no fab, deck, buildtasks or
/turnkeytrees.bt-layercannot run there, so the previoustest-appliance.ymlwould have failed on its first step for every caller. Thebuild host builds and publishes layers; this runner consumes them over IPv6
from
https://mirror.keellinux.org/layers.What the job does now, in order: check out the appliance repository, check out
keel-linux/keelatmainand put a wrapper onPATH, probe the mirror for<appliance>.manifest, check the publishedparentagainst the caller'sinput,
keel pullinto a scratch cache,keel verify, then assemble, boot andrun the repository's
tests/boot-test.shas root through/usr/local/sbin/keel-ci-boot-test, and finally destroy the container and thescratch tree in a step that runs after a failure too.
Choices worth reviewing:
signed and
archive.keellinux.orgserves only a README, so there is no keelpackage to install. The checkout needs python3 and PyYAML, both already on
the runner, and the resolved commit is printed in the job summary.
parentkept and now used.keel pullfollows the manifest chainitself, so the input is not needed to fetch anything. It is checked against
the
parentthe published manifest records, which catches a mirror serving alayer built on something other than what the repository declares.
notice and an "Appliance test skipped" section in the job summary, and the
job succeeds, so a repository can carry the gate before its first layer
exists.
keel verifyexit codes. 0, 8 (hash file present, not signed) and 9(packages half not implemented) pass; 6 and 7 fail.
runner user has no blanket sudo: it may run two root-owned entry points,
keel-ci-boot-testandkeel-ci-cleanup, each of which checks that it isacting on a CI workspace and a CI scratch directory.
Test plan:
keel-lxc-1as therunneruseragainst
core: pull 2.7 s, assemble 13 s, boot and first boot 10 s,keel diffclean, 23 s in total.appliance / build-and-bootrun in keel-core.appliance / build-and-bootrun in keel-nodebb.