mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
ci: check for failed services after boot
This should, hopefully, catch issues like systemd/systemd#21671 automagically.
This commit is contained in:
18
.github/workflows/mkosi.yml
vendored
18
.github/workflows/mkosi.yml
vendored
@@ -17,6 +17,11 @@ on:
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# Enable debug logging in systemd, but keep udev's log level to info,
|
||||
# since it's _very_ verbose in the QEMU task
|
||||
KERNEL_CMDLINE: "systemd.unit=mkosi-check-and-shutdown.service !quiet systemd.log_level=debug systemd.log_target=console udev.log_level=info systemd.default_standard_output=journal+console"
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
runs-on: ubuntu-20.04
|
||||
@@ -57,13 +62,20 @@ jobs:
|
||||
systemd-nspawn --version
|
||||
|
||||
- name: Build ${{ matrix.distro }}
|
||||
run: sudo python3 -m mkosi build
|
||||
run: |
|
||||
sudo python3 -m mkosi --build-environment=CI_BUILD=1 --kernel-command-line "${{ env.KERNEL_CMDLINE }}" build
|
||||
|
||||
- name: Show ${{ matrix.distro }} image summary
|
||||
run: sudo python3 -m mkosi summary
|
||||
|
||||
- name: Boot ${{ matrix.distro }} systemd-nspawn
|
||||
run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi boot
|
||||
run: sudo python3 -m mkosi boot ${{ env.KERNEL_CMDLINE }}
|
||||
|
||||
- name: Check ${{ matrix.distro }} systemd-nspawn
|
||||
run: sudo python3 -m mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
|
||||
|
||||
- name: Boot ${{ matrix.distro }} QEMU
|
||||
run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi qemu
|
||||
run: sudo python3 -m mkosi qemu
|
||||
|
||||
- name: Check ${{ matrix.distro }} QEMU
|
||||
run: sudo python3 -m mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
|
||||
|
||||
26
.github/workflows/test_mkosi_boot.py
vendored
26
.github/workflows/test_mkosi_boot.py
vendored
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
import pexpect
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
||||
def run() -> None:
|
||||
p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300)
|
||||
|
||||
# distro-independent root prompt
|
||||
p.expect(re.compile("~[^#]{0,3}#"))
|
||||
p.sendline("systemctl poweroff")
|
||||
|
||||
p.expect(pexpect.EOF)
|
||||
|
||||
|
||||
try:
|
||||
run()
|
||||
except pexpect.EOF:
|
||||
print("UNEXPECTED EOF")
|
||||
sys.exit(1)
|
||||
except pexpect.TIMEOUT:
|
||||
print("TIMED OUT")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user