CI: Add Alpine Linux 3.23 runner to the pipeline (#18087)

Add an Alpine Linux 3.23 runner to the CI chain to run OpenZFS builds
and tests against musl libc.

Currently, zfs_send_sparse is killed after 10 minutes on Alpine, causing
cascading EBUSY failures in the test suite. With zfs_send_sparse
disabled, the ZFS test suite reaches a pass rate of 94.62%.

This commit introduces the required Alpine-specific setup and a small
set of shell and cloud-init compatibility fixes that also apply to
existing Linux runners.

The Alpine runner is not enabled by default and is not executed for new
pull requests.

Sponsored-by: ERNW Research GmbH - https://ernw-research.de/

Signed-off-by: Alexander Moch <amoch@ernw.de>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
This commit is contained in:
Alexander Moch
2025-12-30 17:29:48 +00:00
committed by GitHub
parent e72f3054e3
commit b9b84445ea
9 changed files with 121 additions and 20 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ echo "================================================================="
sudo tail -n $lines /proc/spl/kstat/zfs/dbgmsg
# reset dbgmsg
sudo bash -c "echo > /proc/spl/kstat/zfs/dbgmsg"
sudo sh -c "echo > /proc/spl/kstat/zfs/dbgmsg"
echo "================================================================="
echo " End of zfs_dbgmsg log"
+1 -1
View File
@@ -31,7 +31,7 @@ for f in /proc/spl/kstat/zfs/*/multihost; do
echo "================================================================="
sudo tail -n $lines $f
sudo bash -c "echo > $f"
sudo sh -c "echo > $f"
done
echo "================================================================="
+1 -1
View File
@@ -559,7 +559,7 @@ function default_cleanup_noexit
# Here, we loop through the pools we're allowed to
# destroy, only destroying them if it's safe to do
# so.
while [ ! -z ${ALL_POOLS} ]
while [ -n "${ALL_POOLS}" ]
do
for pool in ${ALL_POOLS}
do
@@ -79,7 +79,8 @@ function do_test
imgfile=$1
log_note "Running test on $imgfile"
log_must losetup -f $imgfile
DEV=$(losetup --associated $imgfile | grep -Eo '^/dev/loop[0-9]+')
# Alpine Linux loop devices appear as `/dev/loop/N` instead of `/dev/loopN`.
DEV=$(losetup --associated $imgfile | grep -Eo '^/dev/loop/?[0-9]+')
log_must mkfs.xfs $DEV
mkdir $TEST_BASE_DIR/mnt
log_must mount $DEV $TEST_BASE_DIR/mnt