Add GitHub Actions test
This commit is contained in:
parent
f8a73ebf8e
commit
5b0c3fcbfa
|
|
@ -0,0 +1,78 @@
|
||||||
|
name: sd-card-images CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: "*"
|
||||||
|
schedule:
|
||||||
|
- cron: "00 03 * * 0"
|
||||||
|
|
||||||
|
env:
|
||||||
|
MAKEFLAGS: -j2
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
bullseye-x86:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Install dependencies
|
||||||
|
timeout-minutes: 5
|
||||||
|
env:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get --assume-yes \
|
||||||
|
--no-install-recommends \
|
||||||
|
install bc \
|
||||||
|
bison \
|
||||||
|
bzip2 \
|
||||||
|
ca-certificates \
|
||||||
|
debian-archive-keyring \
|
||||||
|
debootstrap \
|
||||||
|
device-tree-compiler \
|
||||||
|
dosfstools \
|
||||||
|
e2fsprogs \
|
||||||
|
flex \
|
||||||
|
gcc \
|
||||||
|
gcc-arm-none-eabi \
|
||||||
|
gcc-i686-linux-gnu \
|
||||||
|
git \
|
||||||
|
libssl-dev \
|
||||||
|
make \
|
||||||
|
mtools \
|
||||||
|
parted \
|
||||||
|
pwgen \
|
||||||
|
python2-dev \
|
||||||
|
python3-dev \
|
||||||
|
python3-pkg-resources \
|
||||||
|
qemu-system-x86 \
|
||||||
|
ssh \
|
||||||
|
sshpass \
|
||||||
|
swig
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Build qemu_x86_virt
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
env PATH=$GITHUB_WORKSPACE/scripts:$PATH \
|
||||||
|
ARTIFACTS_DIR=$RUNNER_TEMP \
|
||||||
|
build-boot qemu_x86_virt \
|
||||||
|
qemu-x86 \
|
||||||
|
qemu-x86_defconfig \
|
||||||
|
i686-linux-gnu
|
||||||
|
|
||||||
|
- name: Build bullseye i386
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
sudo env PATH=$GITHUB_WORKSPACE/scripts:$PATH \
|
||||||
|
ARTIFACTS_DIR=$RUNNER_TEMP \
|
||||||
|
build-debian debian \
|
||||||
|
i386 \
|
||||||
|
bullseye
|
||||||
|
|
||||||
|
- name: Test qemu_x86_virt + bullseye i386
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
./test/qemu.sh $RUNNER_TEMP/boot-qemu_x86_virt.bin.gz \
|
||||||
|
$RUNNER_TEMP/debian-bullseye-i386-*.bin.gz
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Boot up and shutdown
|
||||||
|
|
||||||
|
BOOT="${1:-boot-qemu_aarch64_virt.bin.gz}"
|
||||||
|
DEBIAN="${2:-debian-bullseye-arm64-XXXXXX.bin.gz}"
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Parse out stuff
|
||||||
|
IFS="-." read -a PARTS1 <<< `basename "${BOOT}"`
|
||||||
|
BOARD="${PARTS1[1]}"
|
||||||
|
echo "Using board ${BOARD}"
|
||||||
|
|
||||||
|
# Parse out stuff
|
||||||
|
IFS="-." read -a PARTS2 <<< `basename "${DEBIAN}"`
|
||||||
|
ARCH="${PARTS2[2]}"
|
||||||
|
SSHPASS="${PARTS2[3]}"
|
||||||
|
echo "Using password ${SSHPASS}"
|
||||||
|
|
||||||
|
# Build image
|
||||||
|
zcat "${BOOT}" "${DEBIAN}" > image.bin
|
||||||
|
|
||||||
|
# Extract U-Boot (u-boot.rom in x86 case)
|
||||||
|
dd if=image.bin of=bios.bin count=2048 skip=16
|
||||||
|
|
||||||
|
case "${BOARD}" in
|
||||||
|
qemu*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported \$BOARD: ${BOARD}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "${ARCH}" in
|
||||||
|
amd64)
|
||||||
|
QEMU_ARCH="x86_64"
|
||||||
|
QEMU_MACHINE="pc"
|
||||||
|
QEMU_CPU="qemu64"
|
||||||
|
;;
|
||||||
|
i386)
|
||||||
|
QEMU_ARCH="i386"
|
||||||
|
QEMU_MACHINE="pc"
|
||||||
|
QEMU_CPU="qemu32"
|
||||||
|
;;
|
||||||
|
arm64)
|
||||||
|
QEMU_ARCH="aarch64"
|
||||||
|
QEMU_MACHINE="virt"
|
||||||
|
QEMU_CPU="cortex-a53"
|
||||||
|
;;
|
||||||
|
armhf)
|
||||||
|
QEMU_ARCH="arm"
|
||||||
|
QEMU_MACHINE="virt"
|
||||||
|
QEMU_CPU="cortex-a9"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown \$ARCH: ${ARCH}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Launch QEMU with U-Boot and image
|
||||||
|
qemu-system-${QEMU_ARCH} -machine ${QEMU_MACHINE} \
|
||||||
|
-cpu ${QEMU_CPU} \
|
||||||
|
-m 512 \
|
||||||
|
-bios bios.bin \
|
||||||
|
-serial stdio \
|
||||||
|
-no-reboot \
|
||||||
|
-display none \
|
||||||
|
-drive file=image.bin,format=raw,media=disk \
|
||||||
|
-nic user,hostfwd=tcp:127.0.0.1:5555-:22 &
|
||||||
|
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
# Pass password to sshpass
|
||||||
|
export SSHPASS
|
||||||
|
|
||||||
|
# SSH into QEMU and shut it down
|
||||||
|
until sshpass -e ssh -o "ConnectTimeout=5" \
|
||||||
|
-o "StrictHostKeyChecking=no" \
|
||||||
|
-o "UserKnownHostsFile=/dev/null" \
|
||||||
|
-p 5555 \
|
||||||
|
-q \
|
||||||
|
root@localhost "sleep 5 && poweroff"; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
# Wait for QEMU to exit
|
||||||
|
wait
|
||||||
Loading…
Reference in New Issue