2
0
mirror of https://github.com/xcat2/xcat-dep.git synced 2026-10-17 09:10:30 +00:00
Files
xcat-dep/.github/workflows/genesis-openembedded.yml
T
2026-10-14 11:08:27 -03:00

124 lines
4.8 KiB
YAML

name: Genesis OpenEmbedded packages
on:
pull_request:
push:
branches:
- master
permissions:
contents: read
jobs:
package-tests:
runs-on: ubuntu-24.04
env:
XCAT_GENESIS_CI: 1
steps:
- uses: actions/checkout@v4
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
apt-utils bats createrepo-c dpkg-dev gnupg \
libfile-slurper-perl \
libparallel-forkmanager-perl libperl-critic-perl rpm rpm2cpio cpio \
grub-common ca-certificates
- name: Install the arm64-efi grub modules
# t/aarch64_target.t runs the spec's own grub2-mkimage command, and it skips without
# the arm64-efi modules -- a skip exactly where the suite runs. The script reads them
# from the runner's own suite through apt's signed metadata.
run: sudo ./install-grub-arm64-modules.sh
- name: Run static checks
run: |
perl -c genesis-openembedded/build
perl -c genesis-openembedded/package
perl -c genesis-openembedded/verify-release
perl -Ilib -c lib/XCAT/BuildUtils.pm
perl -Ilib -c lib/XCAT/GenesisRelease.pm
perl -c mockbuild-all.pl
perl -c BuildUtils.pm
perl -c sbuild-all.pl
perl -c ipxe-xcat/mockbuild.pl
perl -c ipxe-xcat/sbuild.pl
perl -c ipxe-xcat/verify-payload.pl
rpmspec -P ipxe-xcat/ipxe-xcat.spec >/dev/null
rpmspec -P \
-D 'genesis_arch x86_64' \
-D 'version 2.19.0' \
-D 'release snap202608210726' \
genesis-openembedded/rpm/xCAT-genesis-openembedded.spec >/dev/null
perlcritic \
genesis-openembedded/build \
genesis-openembedded/package \
genesis-openembedded/verify-release \
ipxe-xcat/mockbuild.pl \
ipxe-xcat/sbuild.pl \
ipxe-xcat/verify-payload.pl \
lib/XCAT/BuildUtils.pm \
lib/XCAT/GenesisRelease.pm \
mockbuild-all.pl \
t/build_utils.t \
t/common-repo-gate.t \
t/genesis_openembedded_release.t \
t/genesis_openembedded_consumer.t \
t/ipxe_xcat_payload.t \
t/lib/XCAT/GenesisReleaseTest.pm
- name: Run package tests
run: |
prove -v t/build_utils.t
prove -v t/build_timeout.t
prove -v t/sbuild-all.t
prove -v t/goconserver_cross_build.t
prove -v t/ipxe_xcat_payload.t
prove -v t/mockbuild-all.t
prove -v t/net_dns_rr_types.t
prove -v t/repo-lock-race.t
prove -v t/nfslock.t
prove -v -It/lib t/genesis_openembedded_release.t
sudo -E prove -v -It/lib t/genesis_openembedded_consumer.t
prove -v t/riscv64_perl_cell.t
prove -v t/aarch64_target.t
prove -v t/aarch64_cross_build.t
sudo -E prove -v -It/lib t/common-repo-gate.t
prove -v t/openeuler.t
prove -v t/openeuler_mock_template_include.t
# The result-directory checks create a directory owned by another uid, so they need root.
sudo -E prove -v t/perl_builder_mock_result_permissions.t
prove -v t/openeuler_native_result_permissions.t
prove -v -Ilib t/openeuler_native_procenv_plugin.t
prove -v -Ilib t/openeuler_native_trust_dbpath.t
prove -v -Ilib t/openeuler_native_cpio_scan.t
bats t/verify-xcatsn-install.bats
bats t/install-grub-arm64-modules.bats
# Ubuntu's AppArmor policy blocks these unprivileged test namespaces.
- name: Run native packaging tests
run: |
set -o pipefail
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
prove -v native/buildinfo_provenance.t native/goconserver-openeuler.t \
native/openeuler-power-inputs.t native/openeuler-srpm.t \
native/xnba-release-suffix.t 2>&1 | tee native.tap
# prove returns success when a test file skips all its checks.
if grep -E '^1\.\.0 # SKIP|^native/[^ ]+\.t \.+ skipped' native.tap; then
echo 'a native test file was skipped' >&2
exit 1
fi
# Ubuntu ships no mock, so the test of mock's configuration loader runs on Fedora.
- name: Run mock configuration loader 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 native/mock-chroot-uid.t' 2>&1 | tee mock.tap
if grep -E '^1\.\.0 # SKIP|^native/[^ ]+\.t \.+ skipped' mock.tap; then
echo 'the mock configuration loader test was skipped' >&2
exit 1
fi