1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-28 02:50:16 +03:00

ci: run mkosi in a wrapper

So we can mitigate (to some degree) the reoccurring "dissect timeout"
issue:

```
Run sudo python3 -m mkosi boot 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
Failed to dissect image '/home/runner/work/systemd/systemd/image.raw': Connection timed out
Error: Process completed with exit code 1.
```
This commit is contained in:
Frantisek Sumsal 2021-12-09 18:03:50 +01:00
parent 24acd4064e
commit f7e3951d41
2 changed files with 36 additions and 7 deletions
.github/workflows

@ -62,20 +62,19 @@ jobs:
systemd-nspawn --version
- name: Build ${{ matrix.distro }}
run: |
sudo python3 -m mkosi --build-environment=CI_BUILD=1 --kernel-command-line "${{ env.KERNEL_CMDLINE }}" build
run: ./.github/workflows/run_mkosi.sh --build-environment=CI_BUILD=1 --kernel-command-line "${{ env.KERNEL_CMDLINE }}" build
- name: Show ${{ matrix.distro }} image summary
run: sudo python3 -m mkosi summary
run: ./.github/workflows/run_mkosi.sh summary
- name: Boot ${{ matrix.distro }} systemd-nspawn
run: sudo python3 -m mkosi boot ${{ env.KERNEL_CMDLINE }}
run: ./.github/workflows/run_mkosi.sh 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; }"
run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
- name: Boot ${{ matrix.distro }} QEMU
run: sudo python3 -m mkosi qemu
run: ./.github/workflows/run_mkosi.sh qemu
- name: Check ${{ matrix.distro }} QEMU
run: sudo python3 -m mkosi shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"
run: ./.github/workflows/run_mkosi.sh shell bash -c "[[ -e /testok ]] || { cat /failed-services; exit 1; }"

30
.github/workflows/run_mkosi.sh vendored Executable file

@ -0,0 +1,30 @@
#!/bin/bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# shellcheck disable=SC2064
set -eu
set -o pipefail
EC=0
TEMPFILE="$(mktemp)"
trap "rm -f '$TEMPFILE'" EXIT
for ((i = 0; i < 5; i++)); do
EC=0
(sudo python3 -m mkosi "$@") |& tee "$TEMPFILE" || EC=$?
if [[ $EC -eq 0 ]]; then
# The command passed - let's return immediatelly
break
fi
if ! grep -E "Failed to dissect image .+: Connection timed out" "$TEMPFILE"; then
# The command failed for other reason than the dissect-related timeout -
# let's exit with the same EC
exit $EC
fi
# The command failed due to the dissect-related timeout - let's try again
sleep 1
done
exit $EC