-
Notifications
You must be signed in to change notification settings - Fork 295
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 -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 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.