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.
131 lines
3.4 KiB
YAML
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; }"
|