-
Notifications
You must be signed in to change notification settings - Fork 294
CI Pipelines
The woof-CE project on GitHub is configured to run automated Puppy builds, for three purposes:
- Automated releases of new Puppy versions
- Easy publishing of alpha releases, to allow quick and frequent testing
- To continuously run woof-CE with recent changes, to make sure it still works as expected
The continuous builds use aggressive caching that reduces build times:
- Packages downloaded by 1download are cached, and only the delta (updated or newly added packages) is downloaded
- Packages built during 3builddistro are cached, and get rebuilt only if their build script has changed, or the packages selection has changed
- When 3builddistro cross-compiles packages, busybox and bash are replaced with native executables that speed up autoconf
- 3builddistro uses ccache, so slightly changed packages are very fast to build
With all this caching in place, most builds (including those that involve slow ARM cross-compilation under emulation), take 5 to 15 minutes:
In contrast, in release builds, only downloaded files are cached (for example, cross-compilation output is not cached), to ensure the entire Puppy build flow works end-to-end.
Every Monday, this pipeline builds following kernels using the testing branch kernel-kit:
- Latest 4.19.x, for x86 and x86_64
- Latest 5.4.x, for x86 and x86_64
- Latest 5.10.x, for x86 and x86_64
- Latest 5.15.x, for x86 and x86_64
These kernel versions are chosen for their "longterm" status, which means they receive bug fixes and security fixes for years. This stability guarantee allows safe upgrade to a later bugfix release, i.e. from 4.19.185 to 4.19.186.
The output of kernel-kit is available for download, as build artifacts, and other CI pipelines download it. It is accompanied by matching, up-to-date firmware.
Some kernel versions have a -overlay
variant, alongside the -aufs
: this variant is built without aufs support.
Some kernel versions have a -usrmerge
variant: one where /lib/modules is moved to /usr/lib/modules, /sbin is moved to /usr/sbin, and so on. They will work with a Puppy built with USR_SYMLINKS=yes
, where /lib and /sbin are symlinks to their counterparts under /usr.
To save time and space, forks of woof-CE use the build artifacts from puppylinux-woof-CE/woof-CE.
This rebuilds the Debian kernel with minimal Puppy customization on top, in order to achieve a low-maintenance, reliable stream of Debian-compatible and up-to-date kernels.
These kernels include all stability and security fixes that go into the Debian kernel, and most kernel-dependent things that work in Debian (for example, Landlock requires CONFIG_SECURITY_LANDLOCK=y
) will also work in a Puppy that uses one of these.
However, this also means that these slightly more battle-tested and conservative kernels lag behind those in kernel.org: the 5.10.x kernel in Debian 11 is updated to the latest 5.10.x bugfix release only once in a while and goes through more QA before it's updated.
Twice a month, this pipeline builds following kernels using the Debian kernel source, Debian kernel configuration (with few changes) and kernel-kit from the testing branch:
- Debian 11 (Bullseye) kernel, for x86 and x86_64
- Debian 12 (Bookworm) kernel, for x86 and x86_64
- Debian Unstable (Sid) kernel, for x86_64
These kernels have only one variant, -usrmerge-overlay
: they don't support aufs and will only work in any Puppy (not just Debian-based ones) where USR_SYMLINKS=yes
.
This builds a Puppy and creates a GitHub draft release with the build output. The draft can be published to make it generally available for download, or discarded (for example, if it's found to be broken).
Every once in a while, this pipeline builds:
- Something similar to Vanilla Dpup 10.x development builds.
- A development build of Slacko{,64} 8.x, with the most recent 5.15.x kernel.
- Slacko{,64} 7.0 with woof-CE updates, updates from Slackware and the most recent 4.19.x kernel.
- Something similar to Vanilla Dpup 9.x, but using the testing branch.
- Something similar to FossaPup64 9.5 with woof-CE updates, updates from Ubuntu and the most recent 5.4.x kernel.
- Something similar to BionicPup64 with woof-CE updates, updates from Ubuntu and the most recent 4.19.x kernel.
Build output is uploaded as a build artifact, and discarded at some point.