mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
52842bb2c5
Both building and booting a directory image is much faster than building or booting a disk image so let's default to a directory image. In CI, we stick to a disk image to make sure that keeps working as well. The only extra dependency this introduces is virtiofsd which is packaged in all distributions except Debian stable. For users hacking on systemd on Debian stable, a disk image can be built by writing the following to mkosi.local.conf: ``` [Output] Format=disk ```
154 lines
4.5 KiB
YAML
154 lines
4.5 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: "39"
|
|
- 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@b4ffde65f46336ab88eb53be808477a3936bae11
|
|
- uses: systemd/mkosi@dbce89aabda438ba58080366631b2c242e365f21
|
|
|
|
- name: Configure
|
|
run: |
|
|
tee mkosi.local.conf <<EOF
|
|
[Distribution]
|
|
Distribution=${{ matrix.distro }}
|
|
Release=${{ matrix.release }}
|
|
|
|
[Output]
|
|
# Build a disk image in CI as this logic is much more prone to breakage.
|
|
Format=disk
|
|
|
|
[Content]
|
|
Environment=CI_BUILD=1
|
|
SLOW_TESTS=true
|
|
|
|
[Host]
|
|
ToolsTree=default
|
|
ToolsTreeDistribution=fedora
|
|
QemuVsock=yes
|
|
# Sometimes we run on a host with /dev/kvm, but it is broken, so explicitly disable it
|
|
QemuKvm=no
|
|
Ephemeral=yes
|
|
EOF
|
|
|
|
# These should override the options from mkosi.conf so we put them in a dropin that's ordered later
|
|
# instead.
|
|
tee mkosi.conf.d/99-ci.conf <<EOF
|
|
[Host]
|
|
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
|
|
# Root device can take a long time to appear, so let's bump the timeout.
|
|
systemd.default_device_timeout_sec=180
|
|
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.images/system/mkosi.repart/10-usr.conf.d
|
|
tee mkosi.images/system/mkosi.repart/10-usr.conf.d/squashfs.conf <<EOF
|
|
[Partition]
|
|
Format=squashfs
|
|
EOF
|
|
|
|
# The emergency shell is not useful in the CI, as it just blocks for a long time before the job
|
|
# eventually times out. Override it to just shutdown immediately.
|
|
mkdir -p mkosi.images/initrd/mkosi.extra/usr/lib/systemd/system/emergency.service.d/
|
|
mkdir -p mkosi.images/system/mkosi.extra/usr/lib/systemd/system/emergency.service.d/
|
|
tee mkosi.images/initrd/mkosi.extra/usr/lib/systemd/system/emergency.service.d/poweroff.conf <<EOF
|
|
[Unit]
|
|
FailureAction=exit
|
|
[Service]
|
|
ExecStartPre=
|
|
ExecStart=
|
|
ExecStart=false
|
|
EOF
|
|
cp mkosi.images/initrd/mkosi.extra/usr/lib/systemd/system/emergency.service.d/poweroff.conf mkosi.images/system/mkosi.extra/usr/lib/systemd/system/emergency.service.d/poweroff.conf
|
|
|
|
- name: Generate secure boot key
|
|
run: mkosi --debug genkey
|
|
|
|
- name: Show image summary
|
|
run: mkosi summary
|
|
|
|
- name: Build
|
|
run: mkosi --debug
|
|
|
|
- name: Boot systemd-nspawn
|
|
run: test "$(sudo mkosi --debug boot 1>&2; echo $?)" -eq 123
|
|
|
|
- name: Boot QEMU
|
|
run: timeout -k 30 10m test "$(mkosi --debug qemu 1>&2; echo $?)" -eq 123
|