Repository navigation
77 lines (66 loc) · 2.46 KB
/
Copy pathdebian-iso-e2e.yml
File metadata and controls
77 lines (66 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Builds the unattended Debian ISO and installs it from UEFI USB media in QEMU.
# It completes the required reboots and verifies the installed DAppNode system.
name: Debian unattended USB ISO end-to-end
on:
workflow_dispatch:
pull_request:
# Weekly run against master to catch breakage from upstream package changes.
schedule:
- cron: "0 7 * * 1"
timezone: "Europe/Madrid"
permissions:
contents: read
concurrency:
group: debian-iso-e2e-${{ github.ref }}
cancel-in-progress: true
jobs:
install:
name: Install Debian unattended ISO via UEFI USB
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Build Debian unattended ISO
run: |
export BASE_OS=debian
export UNATTENDED=true
# Retry so a transient mirror outage does not fail the whole E2E run.
for attempt in 1 2 3; do
docker compose up --build --abort-on-container-exit --exit-code-from dappnode_installer && break
[ "${attempt}" -lt 3 ] || exit 1
echo "::warning::ISO build attempt ${attempt} failed; retrying in 30s"
sleep 30
done
ls -lrt images/Dappnode-debian-*.iso
- name: Install QEMU test dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends qemu-system-x86 qemu-utils ovmf socat sshpass dnsmasq-base
if [ -e /dev/kvm ]; then
sudo chmod a+rw /dev/kvm
fi
- name: Create the guest network
run: |
mkdir -p test-output/debian-e2e
sudo E2E_NETWORK_STATE_DIR="${PWD}/test-output/debian-e2e/network" bash test/e2e_network.sh up
- name: Complete Debian unattended UEFI USB installation
env:
E2E_BOOT_MODE: usb
E2E_FIRMWARE: uefi
E2E_TAP_IFACE: dne2e0
run: |
debian_iso=$(find images -maxdepth 1 -type f -name 'Dappnode-debian-*-amd64-netinst.iso' -print -quit)
test -n "${debian_iso}"
bash test/e2e_debian_iso.sh "${debian_iso}"
- name: Make network logs readable
if: always()
run: sudo chmod -R a+rX test-output || true
- name: Upload installation logs
if: always()
uses: actions/upload-artifact@v4
with:
name: debian-unattended-usb-installation-logs
path: test-output/debian-e2e/
if-no-files-found: ignore
retention-days: 7