Files
systemd/.github/workflows/mkosi.yml
T
Daan De Meyer df4835c897 mkosi: Check for failures by mounting again
We rely on vsock to communicate the exit status back to us from the
VM but vsock in Github Actions is broken so let's switch back to
mounting for now.
2023-05-31 14:22:58 +02:00

131 lines
3.4 KiB
YAML

---
# vi: ts=2 sw=2 et:
# SPDX-License-Identifier: LGPL-2.1-or-later
# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in mkosi.conf.d/.
name: mkosi
on:
push:
branches:
- main
- v[0-9]+-stable
paths:
- '**'
- '!README*'
- '!LICENSE*'
- '!LICENSES/**'
- '!TODO'
- '!docs/**'
- '!man/**'
- '!catalog/**'
- '!shell-completion/**'
- '!po/**'
- '!.**'
- '.github/**'
pull_request:
branches:
- main
- v[0-9]+-stable
paths:
- '**'
- '!README*'
- '!LICENSE*'
- '!LICENSES/**'
- '!TODO'
- '!docs/**'
- '!man/**'
- '!catalog/**'
- '!shell-completion/**'
- '!po/**'
- '!.**'
- '.github/**'
permissions:
contents: read
jobs:
ci:
runs-on: ubuntu-22.04
concurrency:
group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.release }}-${{ github.ref }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
include:
- distro: arch
release: rolling
- distro: debian
release: testing
- distro: ubuntu
release: jammy
- distro: fedora
release: "38"
- distro: fedora
release: rawhide
- distro: opensuse
release: tumbleweed
- distro: centos
release: "9"
- distro: centos
release: "8"
env:
SYSTEMD_LOG_LEVEL: debug
steps:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- uses: systemd/mkosi@c3103868cccc722ef45838fdd37fb462c21948f2
- name: Configure
run: |
tee mkosi.conf <<- EOF
[Distribution]
Distribution=${{ matrix.distro }}
Release=${{ matrix.release }}
[Content]
Environment=CI_BUILD=1
DEFAULT_TIMEOUT_SEC=180
SLOW_TESTS=true
[Output]
KernelCommandLineExtra=systemd.unit=mkosi-check-and-shutdown.service
systemd.journald.max_level_console=debug
# udev's debug log output is very verbose, so up it to info in CI.
udev.log_level=info
[Host]
ExtraSearchPaths=!*
QemuVsock=yes
EOF
# For erofs, we have to install linux-modules-extra-azure, but that doesn't match the running kernel
# version, so we can't load the erofs module. squashfs is a builtin module so we use that instead.
mkdir -p mkosi.presets/20-final/mkosi.repart/10-usr.conf.d
tee mkosi.presets/20-final/mkosi.repart/10-usr.conf.d/squashfs.conf <<- EOF
[Partition]
Format=squashfs
EOF
- name: Generate secure boot key
run: mkosi --debug genkey
- name: Show ${{ matrix.distro }} image summary
run: mkosi summary
- name: Build ${{ matrix.distro }}
run: mkosi --debug
- name: Boot ${{ matrix.distro }} systemd-nspawn
run: sudo mkosi --debug boot
- name: Boot ${{ matrix.distro }} QEMU
run: timeout -k 30 10m mkosi --debug qemu
# vsock in Github Actions with qemu is broken so for now we check for failures manually.
- name: Check ${{ matrix.distro }} QEMU
run: sudo mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"