From: Daan De Meyer Date: Sat, 15 Aug 2020 21:20:10 +0000 (+0100) Subject: CI: Add systemd-nspawn boot test X-Git-Tag: v6~11^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F514%2Fhead;p=thirdparty%2Fmkosi.git CI: Add systemd-nspawn boot test --- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec73f5376..eaf51413c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,11 +51,30 @@ jobs: - uses: actions/checkout@v2 - uses: ./.github/actions/setup-mkosi + - name: Install pexpect + run: sudo apt-get install python3-pexpect + - name: Build ${{ matrix.distro }}/${{ matrix.format }} - run: sudo ./mkosi - --debug run - --distribution ${{ matrix.distro }} - --format ${{ matrix.format }} + run: | + tee mkosi.default << EOF + [Distribution] + Distribution=${{ matrix.distro }} + + [Output] + Format=${{ matrix.format }} + + [Validation] + # Set to empty password if we ever get opensuse to work with empty root password. + # See https://github.com/systemd/mkosi/pull/514. + Password=root + EOF + + sudo ./mkosi build + + - name: Boot ${{ matrix.distro }}/${{ matrix.format }} + # photon boot gets stuck on systemd-networkd-wait-online. See https://github.com/systemd/mkosi/pull/514. + if: matrix.format != 'tar' && matrix.distro != 'photon' + run: sudo ./tests/pexpect/boot.py ./mkosi boot - name: Build ${{ matrix.distro }}/${{ matrix.format }} UEFI if: matrix.format != 'directory' && matrix.format != 'tar' && matrix.format != 'plain_squashfs' && diff --git a/tests/pexpect/boot.py b/tests/pexpect/boot.py new file mode 100755 index 000000000..ad2b7eed8 --- /dev/null +++ b/tests/pexpect/boot.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import pexpect +import sys + + +def run() -> None: + p = pexpect.spawnu(" ".join(sys.argv[1:]), logfile=sys.stdout, timeout=45) + + p.expect("login:") + p.sendline("root") + + p.expect("Password:") + 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) +