From aef61dc888056454c543535e1410c3b299d623a5 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 30 Nov 2020 23:03:52 +0000 Subject: [PATCH 1/4] mkosi: Replace iptables-dev with libiptc-dev in debian config Latest debian unstable doesn't have iptables-dev anymore. Instead, let's use libiptc-dev. --- .mkosi/mkosi.debian | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mkosi/mkosi.debian b/.mkosi/mkosi.debian index b5ed5768cb..ba9077eaa2 100644 --- a/.mkosi/mkosi.debian +++ b/.mkosi/mkosi.debian @@ -24,7 +24,7 @@ BuildPackages= git gnu-efi gperf - iptables-dev + libiptc-dev libacl1-dev libaudit-dev libblkid-dev From 8d036c446adc4dd8f9f1919916462752209c29a4 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 4 Dec 2020 20:05:19 +0000 Subject: [PATCH 2/4] mkosi: Add rpm to Fedora BuildPackages as it's needed by pkg-config --- .mkosi/mkosi.fedora | 1 + 1 file changed, 1 insertion(+) diff --git a/.mkosi/mkosi.fedora b/.mkosi/mkosi.fedora index 568e63651a..e2eca8a65a 100644 --- a/.mkosi/mkosi.fedora +++ b/.mkosi/mkosi.fedora @@ -64,6 +64,7 @@ BuildPackages= python3-devel python3-lxml qrencode-devel + rpm tree valgrind-devel xz-devel From 8f2c4c5e93718ac6d6f790de61fced5ed143de5d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 4 Dec 2020 22:23:11 +0000 Subject: [PATCH 3/4] mkosi: Add findutils to Fedora config find is needed by test_exec_dynamicuser. --- .mkosi/mkosi.fedora | 1 + 1 file changed, 1 insertion(+) diff --git a/.mkosi/mkosi.fedora b/.mkosi/mkosi.fedora index e2eca8a65a..a3e68acdfa 100644 --- a/.mkosi/mkosi.fedora +++ b/.mkosi/mkosi.fedora @@ -23,6 +23,7 @@ BuildPackages= diffutils docbook-style-xsl elfutils-devel + findutils gcc gettext git From 448d3462b0f85c0f70ce67f7684497247b34c3d8 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 30 Nov 2020 20:57:52 +0000 Subject: [PATCH 4/4] CI: Add mkosi boot tests Using the new mkosi Github Action, we can add some simple boot tests for the systemd mkosi configs. This makes sure these keep working as expected. --- .github/workflows/mkosi.yml | 42 ++++++++++++++++++++++++++++ .github/workflows/test_mkosi_boot.py | 27 ++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/workflows/mkosi.yml create mode 100755 .github/workflows/test_mkosi_boot.py diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml new file mode 100644 index 0000000000..7c55d7dc1b --- /dev/null +++ b/.github/workflows/mkosi.yml @@ -0,0 +1,42 @@ +name: mkosi + +# Simple boot tests that build and boot the mkosi images generated by the mkosi config files in .mkosi. + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + ci: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + distro: + - arch + - debian + - ubuntu + - fedora + + steps: + - uses: actions/checkout@v2 + - uses: systemd/mkosi@v8 + + - name: Install + run: sudo apt-get update && sudo apt-get install --no-install-recommends + ovmf + python3-pexpect + qemu-system-x86-64 + + - name: Build ${{ matrix.distro }} + run: sudo python3 -m mkosi --default .mkosi/mkosi.${{ matrix.distro }} --password= --qemu-headless build + + - name: Boot ${{ matrix.distro }} systemd-nspawn + run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --default .mkosi/mkosi.${{ matrix.distro }} --password= --qemu-headless boot + + - name: Boot ${{ matrix.distro }} QEMU + run: sudo ./.github/workflows/test_mkosi_boot.py python3 -m mkosi --default .mkosi/mkosi.${{ matrix.distro }} --password= --qemu-headless qemu diff --git a/.github/workflows/test_mkosi_boot.py b/.github/workflows/test_mkosi_boot.py new file mode 100755 index 0000000000..37904eb059 --- /dev/null +++ b/.github/workflows/test_mkosi_boot.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: LGPL-2.1-or-later + +import pexpect +import sys + + +def run() -> None: + p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=300) + + p.expect("login:") + p.sendline("root") + + p.expect("#") + 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)