jobs:
ci:
- runs-on: ubuntu-24.04
+ runs-on: ${{ matrix.runner }}
concurrency:
- group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }}
+ group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }}-${{ matrix.runner }}
cancel-in-progress: true
strategy:
fail-fast: false
include:
- distro: arch
release: rolling
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-O2 -D_FORTIFY_SOURCE=3"
relabel: no
vm: 1
+ no_qemu: 0
+ no_kvm: 0
- distro: debian
release: testing
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: no
vm: 0
+ no_qemu: 0
+ no_kvm: 0
+ - distro: debian
+ release: testing
+ runner: ubuntu-24.04-arm
+ sanitizers: ""
+ llvm: 0
+ cflags: "-Og"
+ relabel: no
+ vm: 0
+ no_qemu: 1
+ no_kvm: 1
- distro: ubuntu
release: noble
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: no
vm: 0
+ no_qemu: 0
+ no_kvm: 0
- distro: fedora
release: "42"
+ runner: ubuntu-24.04
sanitizers: address,undefined
llvm: 1
cflags: "-Og"
relabel: yes
vm: 0
+ no_qemu: 0
+ no_kvm: 0
- distro: fedora
release: rawhide
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: yes
vm: 0
+ no_qemu: 0
+ no_kvm: 0
- distro: opensuse
release: tumbleweed
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: no
vm: 0
+ no_qemu: 0
+ no_kvm: 0
- distro: centos
release: "9"
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: yes
vm: 0
+ no_qemu: 0
+ no_kvm: 0
- distro: centos
release: "10"
+ runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: yes
vm: 0
+ no_qemu: 0
+ no_kvm: 0
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
MAX_LINES=()
fi
+ if [ "${{ matrix.no_kvm }}" = 1 ] && [ "${{ matrix.no_qemu }}" = 0 ]; then
+ timeout_multiplier=4
+ fi
+
# --preserve-env makes sure all the github actions environment variables are propagated which are
# used in integration-test-wrapper.py to construct the `gh` command line to download the journals
# of failed tests.
sudo --preserve-env mkosi sandbox -- \
env \
TEST_PREFER_QEMU=${{ matrix.vm }} \
+ TEST_NO_QEMU=${{ matrix.no_qemu }} \
+ TEST_NO_KVM=${{ matrix.no_kvm }} \
+ TEST_RUNNER=${{ matrix.runner }} \
meson test \
-C build \
+ --timeout-multiplier="${timeout_multiplier:-1}" \
--no-rebuild \
--setup=integration \
--suite=integration-tests \
uses: actions/upload-artifact@v4
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
with:
- name: ci-mkosi-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.distro }}-${{ matrix.release }}-failed-test-journals
+ name: ci-mkosi-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.distro }}-${{ matrix.release }}-${{ matrix.runner }}-failed-test-journals
path: |
build/test/journal/*.journal
build/meson-logs/*
id = os.environ['GITHUB_RUN_ID']
wf = os.environ['GITHUB_WORKFLOW']
iter = os.environ['GITHUB_RUN_ATTEMPT']
- artifact = f'ci-{wf}-{id}-{iter}-{summary.distribution}-{summary.release}-failed-test-journals'
+ runner = os.environ['TEST_RUNNER']
+ artifact = (
+ f'ci-{wf}-{id}-{iter}-{summary.distribution}-{summary.release}-{runner}-failed-test-journals' # noqa: E501
+ )
ops += [f'gh run download {id} --name {artifact} -D ci/{artifact}']
journal_file = Path(f'ci/{artifact}/test/journal/{name}.journal')