Build and test daily RHEL boot.iso #1194
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and test daily RHEL boot.iso | |
on: | |
schedule: | |
- cron: 0 3 * * * | |
# be able to start this action manually from a actions tab when needed | |
workflow_dispatch: | |
jobs: | |
build: | |
name: run | |
runs-on: [self-hosted, kstest] | |
env: | |
LORAX_BUILD_CONTAINER: registry.access.redhat.com/ubi8 | |
steps: | |
# self-hosted runners don't do this automatically; also useful to keep stuff around for debugging | |
# need to run sudo as the launch script and the container create root/other user owned files | |
- name: Clean up previous run | |
run: | | |
sudo podman ps -q --all --filter='ancestor=kstest-runner' | xargs -tr sudo podman rm -f | |
sudo podman volume rm --all || true | |
sudo rm -rf * | |
- name: Update container images used here | |
run: | | |
sudo podman pull ${{ env.LORAX_BUILD_CONTAINER }} | |
sudo podman pull quay.io/rhinstaller/kstest-runner:latest | |
- name: Checkout repository | |
uses: actions/[email protected] | |
- name: Build boot.iso with lorax | |
run: | | |
mkdir build | |
# We have to pre-create loop devices because they are not namespaced in kernel so | |
# podman can't access newly created ones. That caused failures of tests when runners | |
# were rebooted. | |
sudo mknod -m 0660 /dev/loop0 b 7 0 2> /dev/null || true | |
sudo mknod -m 0660 /dev/loop1 b 7 1 2> /dev/null || true | |
# /var/tmp tmpfs speeds up lorax and avoids https://bugzilla.redhat.com/show_bug.cgi?id=1906364 | |
sudo podman run --rm -i --privileged --tmpfs /var/tmp:rw,mode=1777 --network host -v $PWD/build:/data ${{ env.LORAX_BUILD_CONTAINER }} <<EOF | |
set -eux | |
# lorax must run on RHEL host to produce RHEL guest images :-( | |
# need to enable internal repos so that we don't need a subscription; | |
rm /etc/yum.repos.d/* | |
cat <<EOR > /etc/yum.repos.d/rhel8.repo | |
[RHEL-8-BaseOS] | |
name=baseos | |
baseurl=http://download.devel.redhat.com/nightly/rhel-8/RHEL-8/latest-RHEL-8/compose/BaseOS/x86_64/os/ | |
enabled=1 | |
gpgcheck=0 | |
install_weak_deps=0 | |
module_hotfixes=1 | |
[RHEL-8-AppStream] | |
name=appstream | |
baseurl=http://download.devel.redhat.com/nightly/rhel-8/RHEL-8/latest-RHEL-8/compose/AppStream/x86_64/os/ | |
enabled=1 | |
gpgcheck=0 | |
install_weak_deps=0 | |
module_hotfixes=1 | |
EOR | |
dnf install -y lorax | |
cd /data | |
# don't mess around with the volid too much, it causes different network interface naming: | |
# https://github.com/rhinstaller/kickstart-tests/issues/448 | |
lorax -p "Red Hat Enterprise Linux" \ | |
--version 8 --release 8 --variant=BaseOS --volid=RHEL-8-0-0-BaseOS-x86_64 --nomacboot \ | |
-s http://download.devel.redhat.com/nightly/rhel-8/RHEL-8/latest-RHEL-8/compose/BaseOS/x86_64/os/ \ | |
-s http://download.devel.redhat.com/nightly/rhel-8/RHEL-8/latest-RHEL-8/compose/AppStream/x86_64/os/ \ | |
-s http://download.devel.redhat.com/nightly/rhel-8/RHEL-8/latest-RHEL-8/compose/CRB/x86_64/os/ \ | |
-s http://coprbe.devel.redhat.com/results/rhinstaller-group/Anaconda/rhel-8.dev-x86_64/ \ | |
/data/results | |
# Make generated files accessible | |
chmod -R a+rX . | |
EOF | |
- name: Upload image build log artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: image-build-logs | |
path: | | |
build/*.log | |
build/*.txt | |
# useful for manual local debugging | |
- name: Store generated boot.iso in home directory | |
run: cp build/results/images/boot.iso /home/github/rhel8-daily-boot.iso | |
- name: Set up data directory for test | |
run: | | |
mkdir -p data/images | |
cp /home/github/rhel8-daily-boot.iso data/images/boot.iso | |
- name: Run coverage tests | |
run: | | |
source $PWD/containers/runner/skip-testtypes | |
sudo TEST_JOBS=16 containers/runner/launch --retry --testtype coverage --skip-testtypes "$SKIP_TESTTYPES_RHEL8_DAILY" --platform rhel8 | |
- name: Upload test logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: 'logs-rhel8-daily' | |
# skip the /anaconda subdirectories, too large | |
path: | | |
data/logs/kstest.log | |
data/logs/kstest-*/*.log | |
- name: Clean up | |
if: always() | |
run: | | |
# just in case it leaves some behind | |
sudo losetup -d /dev/loop0 2>/dev/null || true | |
sudo losetup -d /dev/loop1 2>/dev/null || true | |
sudo rm -rf build |