Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 52 additions & 49 deletions .github/workflows/unit-test-on-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,54 @@ jobs:
uname -a
sudo go test ./interpreter/... -v -run "TestIntegration/(node-local-nightly|node-latest)"

build-distro-qemu-initramfs:
name: Build distro QEMU initramfs (${{ matrix.target_arch }})
runs-on: ${{ matrix.runner }}
timeout-minutes: 10
strategy:
matrix:
include:
- { target_arch: amd64, runner: ubuntu-24.04 }
- { target_arch: arm64, runner: ubuntu-24.04-arm }
steps:
- name: Clone code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
- name: Set up environment
uses: ./.github/workflows/env
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends debootstrap systemtap-sdt-dev
- name: Get parcagpu image digest
id: parcagpu-digest
run: |
digest=$(docker buildx imagetools inspect ghcr.io/parca-dev/parcagpu:latest --format '{{.Digest}}' 2>/dev/null || echo "unknown")
echo "digest=${digest}" >> "$GITHUB_OUTPUT"
- name: Cache parcagpu library
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: test/distro-qemu/parcagpu-lib
key: parcagpu-${{ matrix.target_arch }}-${{ steps.parcagpu-digest.outputs.digest }}
- name: Build initramfs
run: |
cd test/distro-qemu
./build-initramfs.sh initramfs-${{ matrix.target_arch }}.gz
- name: Upload initramfs
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: distro-qemu-initramfs-${{ matrix.target_arch }}
path: test/distro-qemu/initramfs-${{ matrix.target_arch }}.gz

distro-qemu-tests:
name: Distro QEMU tests (${{ matrix.kernel }} ${{ matrix.target_arch }})
runs-on: ${{ matrix.target_arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
timeout-minutes: 15
needs: build-distro-qemu-initramfs
timeout-minutes: 10
strategy:
matrix:
include:
Expand All @@ -253,65 +297,24 @@ jobs:
steps:
- name: Clone code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
- name: Set up environment
uses: ./.github/workflows/env
- name: Install dependencies
run: |
sudo tee /etc/apt/sources.list.d/ubuntu.sources <<EOF > /dev/null
Types: deb
URIs: http://azure.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64

Types: deb
URIs: http://azure.ports.ubuntu.com/ubuntu-ports/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: arm64
EOF

sudo dpkg --add-architecture arm64

sudo apt-get update -y
case "${{ matrix.target_arch }}" in
amd64) sudo apt-get -y --no-install-recommends --no-install-suggests install qemu-system-x86;;
arm64) sudo apt-get -y install qemu-system-arm ipxe-qemu gcc-aarch64-linux-gnu libc6-arm64-cross libc6:arm64 binutils-aarch64-linux-gnu musl-dev:arm64;;
arm64) sudo apt-get -y --no-install-recommends --no-install-suggests install qemu-system-arm ipxe-qemu;;
*) echo >&2 "bug: bad arch selected"; exit 1;;
esac
sudo apt-get install -y --no-install-recommends debootstrap
- name: Get parcagpu image digest
id: parcagpu-digest
run: |
digest=$(docker buildx imagetools inspect ghcr.io/parca-dev/parcagpu:latest --format '{{.Digest}}' 2>/dev/null || echo "unknown")
echo "digest=${digest}" >> "$GITHUB_OUTPUT"
- name: Cache parcagpu library
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
- name: Fetch initramfs
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
path: test/distro-qemu/parcagpu-lib
key: parcagpu-${{ matrix.target_arch }}-${{ steps.parcagpu-digest.outputs.digest }}
name: distro-qemu-initramfs-${{ matrix.target_arch }}
path: test/distro-qemu
- name: Download kernel
run: |
cd test/distro-qemu
case "${{ matrix.target_arch }}" in
amd64) export QEMU_ARCH=x86_64;;
arm64) export QEMU_ARCH=aarch64;;
*) echo >&2 "bug: bad arch selected"; exit 1;;
esac
./download-kernel.sh ${{ matrix.kernel }}
- name: Run Full Distro tests in QEMU
- name: Run distro tests in QEMU
run: |
cd test/distro-qemu
case "${{ matrix.target_arch }}" in
amd64) export QEMU_ARCH=x86_64;;
arm64) export QEMU_ARCH=aarch64;;
*) echo >&2 "bug: bad arch selected"; exit 1;;
esac
./build-and-run.sh ${{ matrix.kernel }}
./run-qemu.sh ${{ matrix.kernel }} initramfs-${{ matrix.target_arch }}.gz
Loading
Loading