Skip to content

Migrate CI from Cirrus CI to GitHub Actions. #3

Migrate CI from Cirrus CI to GitHub Actions.

Migrate CI from Cirrus CI to GitHub Actions. #3

Workflow file for this run

name: Low Scale Tests
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
dependencies: >-
qemu-system-x86 qemu-utils genisoimage rsync openssh-client wget xz-utils
jobs:
low-scale:
strategy:
fail-fast: false
matrix:
include:
- os: fedora
- os: ubuntu
name: low-scale ${{ matrix.os }}
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- name: checkout
uses: actions/checkout@v4
- name: enable KVM access
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: update APT cache
run: sudo apt update || true
- name: install host dependencies
run: sudo apt install -y ${{ env.dependencies }}
- name: generate image cache key
id: gen_key
run: |
key="${{ matrix.os }}-"
key+="${{ hashFiles('.ci/vm.sh', '.ci/prepare-image.sh',
'.github/workflows/low-scale.yml') }}"
echo "key=${key}" >> "$GITHUB_OUTPUT"
- name: restore image cache
id: image_cache
uses: actions/cache@v4
with:
path: ${{ matrix.os }}-ci.qcow2
key: ${{ steps.gen_key.outputs.key }}
- name: prepare VM image
if: steps.image_cache.outputs.cache-hit != 'true'
env:
OS_TYPE: ${{ matrix.os }}
run: ./.ci/prepare-image.sh
- name: run tests
env:
OS_TYPE: ${{ matrix.os }}
run: ./.ci/run-tests.sh
- name: copy logs on failure
if: failure() || cancelled()
run: |
mkdir -p logs
cp vm-console.log logs/ 2>/dev/null || true
cp cloud-init-output.log logs/ 2>/dev/null || true
tar -czvf logs.tgz logs/ test_results/ 2>/dev/null || true
- name: upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.os }}
path: test_results/**
- name: upload logs on failure
if: failure() || cancelled()
uses: actions/upload-artifact@v4
with:
name: logs-${{ matrix.os }}
path: logs.tgz