We now run repart before starting systemd-nspawn to make sure that the root partition is also generated when we boot the image in a container instead of a VM. To make sure we start from scratch for both the container boot and the VM boot, we also enable Ephemeral to make sure all changes to the image are ephemeral.
129 lines
3.4 KiB
YAML
129 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@77cde8a1252767ffc448bfb0fa237fb586a689a2
|
|
|
|
- name: Configure
|
|
run: |
|
|
tee mkosi.conf <<- EOF
|
|
[Distribution]
|
|
Distribution=${{ matrix.distro }}
|
|
Release=${{ matrix.release }}
|
|
|
|
[Content]
|
|
Environment=CI_BUILD=1
|
|
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
|
|
# Root device can take a long time to appear, so let's bump the timeout.
|
|
systemd.default_device_timeout_sec=180
|
|
|
|
[Host]
|
|
ExtraSearchPaths=!*
|
|
QemuVsock=yes
|
|
Ephemeral=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: test "$(sudo mkosi --debug boot 1>&2; echo $?)" -eq 123
|
|
|
|
- name: Boot ${{ matrix.distro }} QEMU
|
|
run: timeout -k 30 10m test "$(mkosi --debug qemu 1>&2; echo $?)" -eq 123
|