2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-21 15:18:19 +00:00
Files
xcat-core/.github/workflows/xcat_test.yml
T
Daniel Hilst 558bf24138 Merge pull request #7923 from VersatusHPC/test/r26-profile-rendering
test(provisioning): exercise rendered profiles and installer commands
2026-10-16 20:19:26 -03:00

119 lines
6.3 KiB
YAML

name: xcat_test
on: [pull_request, workflow_dispatch]
jobs:
xcat_pr_test:
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
- name: Refresh package indexes
run: sudo apt-get update
- name: Install dependencies
run: sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests bats bubblewrap cpio xz-utils gzip gawk mawk rpm rsyslog build-essential fakeroot reprepro devscripts debhelper libcapture-tiny-perl libfile-slurper-perl libjson-perl libyaml-pp-perl libparallel-forkmanager-perl libsoap-lite-perl libdbi-perl libdbd-sqlite3-perl libcgi-pm-perl quilt openssh-server dpkg looptools genometools software-properties-common grub-common grub-efi-amd64-bin squashfs-tools pigz python3-yaml
- name: Enable postscript test namespaces
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
- name: Install lifecycle test dependencies
run: sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests ucf debconf-utils systemd libxml-simple-perl apache2 curl
- name: Test Debian package lifecycle
run: prove -v xCAT-test/native/xcatd_debian_lifecycle.t xCAT-test/native/xcatd_restart_callers.t xCAT-test/native/apache_package_lifecycle.t xCAT-test/native/package_upgrade_logging.t
- name: Install image test dependencies
if: ${{ !cancelled() }}
run: sudo apt-get install -y --no-install-recommends cpio gzip libdbd-sqlite3-perl libxml-simple-perl libnet-dns-perl
- name: Exercise image driver selection
if: ${{ !cancelled() }}
run: prove xCAT-test/native/genimage_network_drivers.t
- name: Exercise image package policy
if: ${{ !cancelled() }}
run: prove xCAT-test/native/el10_image_package_policy.t
- name: Exercise image chroot mounts
if: ${{ !cancelled() }}
run: prove xCAT-test/native/rh_genimage_chroot_mounts.t
- name: Check Debian probe payload permissions
if: ${{ !cancelled() }}
run: bats xCAT-test/native/probe_debian_permissions.bats
- name: Test isolated system scripts
if: ${{ !cancelled() }}
run: |
workdir=$(sudo mktemp -d /tmp/xcat-script-tests.XXXXXX)
trap 'sudo rm -rf -- "$workdir"' EXIT
sudo cp -R xCAT-test xCAT-server perl-xCAT xCAT "$workdir/"
status=0
sudo sh -c 'cd "$1" && bats xCAT-test/native/getinstdisk_selection.bats' sh "$workdir" || status=1
sudo sh -c 'cd "$1" && prove -v xCAT-test/native/getinstdisk_installer.t xCAT-test/native/enablekdump_per_node.t xCAT-test/native/sudoer_password_source.t' sh "$workdir" || status=1
exit "$status"
- name: Prepare xCAT syslog directory
if: ${{ !cancelled() }}
run: sudo install -d -o syslog -g adm -m 0750 /var/log/xcat
- name: Run Ubuntu image fixture tests
if: ${{ !cancelled() }}
run: >-
prove xCAT-test/native/ubuntu_live_media_guardrails.t
xCAT-test/native/ubuntu_genimage_debootstrap_arch.t
xCAT-test/native/ubuntu_genimage_apt_mirror.t
xCAT-test/native/ubuntu_genimage_resolver_libs.t
- name: Exercise the liteimg ramdisk archive
if: ${{ !cancelled() }}
run: prove xCAT-test/native/liteimg_ramdisk_archive.t
- name: Run tests
if: ${{ !cancelled() }}
run: perl github_action_xcat_test.pl
- name: Install package test dependencies
id: package-deps
if: ${{ !cancelled() }}
run: sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests cpio createrepo-c zstd rsync gnupg libxml-libxml-perl python3-rpm
- name: Exercise probe package payloads
if: ${{ !cancelled() && steps.package-deps.outcome == 'success' }}
run: prove xCAT-test/native/probe_package_payload.t
- name: Exercise release repositories
if: ${{ !cancelled() && steps.package-deps.outcome == 'success' }}
run: prove xCAT-test/native/release_repository.t
- name: Check parsed package relations
if: ${{ !cancelled() && steps.package-deps.outcome == 'success' }}
run: prove xCAT-test/native/package_relations.t
# Ubuntu ships no mock, so the mock result directory test runs as root on Fedora.
- name: Run mock result directory test
run: |
set -o pipefail
docker run --rm -v "$PWD:/src:ro" -w /src fedora:42 bash -ec '
dnf -y -q install mock perl perl-File-Slurper >/dev/null
prove -v xCAT-test/native/mock_resultdir_owner.t \
xCAT-test/native/build_sources_other_uid.t' 2>&1 | tee mock.tap
if grep -iE '# skip' mock.tap; then
echo 'a mock result directory test was skipped' >&2
exit 1
fi
- name: Run profile artifact tests
if: ${{ !cancelled() }}
working-directory: ${{ runner.temp }}/xcat-core-unitsrc
shell: bash
run: |
log=$(mktemp)
trap 'rm -f -- "$log"' EXIT
prove -v xCAT-test/native/install_profile_riscv64.t xCAT-test/native/netboot_profile_riscv64.t xCAT-test/native/builddebs_riscv64.t xCAT-test/native/ubuntu_subiquity_template.t | tee "$log"
! grep -qi skipped "$log"
rpm_lifecycle_test:
runs-on: ubuntu-24.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- image: almalinux:8
repository: powertools
- image: almalinux:10
repository: crb
container:
image: ${{ matrix.image }}
options: --privileged --init
steps:
- uses: actions/checkout@v6
- name: Install lifecycle test dependencies
run: |
dnf install -y epel-release
dnf --enablerepo=${{ matrix.repository }} install -y perl perl-Capture-Tiny perl-File-Slurper perl-Test-Simple rpm-build bubblewrap systemd chkconfig initscripts tar gzip which diffutils httpd curl procps-ng
- name: Enable lifecycle test namespaces
run: sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
- name: Test RPM package lifecycle
run: su -s /bin/sh nobody -c 'prove -v xCAT-test/native/xcatd_rpm_lifecycle.t xCAT-test/native/apache_rpm_configuration.t xCAT-test/native/apache_package_lifecycle.t xCAT-test/native/package_upgrade_logging.t'