mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-10-21 15:18:19 +00:00
0b70a389a3
The image caller tests create the run directory in their fixture image, so they did not see a bind mount to a missing mount point. Run rh/genimage on a new and on an existing image directory. The mount fixture fails like mount(8) when the mount point is missing, and the package manager fixture records the mounts in place when the packages install. Cover EL9 through the rh and rocky entry points, and EL6, which does not mount /proc and /sys. The pull-request workflow runs the test.
100 lines
5.3 KiB
YAML
100 lines
5.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
|
|
- 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: 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
|
|
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'
|