mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-09-15 13:50:11 +03:00

Testing on CentOS Stream provides several months advance notice of changes coming to the RHEL kernel. This should help OpenZFS be proactive instead of reactive to new RHEL minor versions. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Signed-off-by: Carl George <carlwgeorge@gmail.com> ZFS-CI-Type: full Closes #16904 Closes #17526
176 lines
6.1 KiB
YAML
176 lines
6.1 KiB
YAML
name: zfs-qemu
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
inputs:
|
|
fedora_kernel_ver:
|
|
type: string
|
|
required: false
|
|
default: ""
|
|
description: "(optional) Experimental kernel version to install on Fedora (like '6.14' or '6.13.3-0.rc3')"
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
test-config:
|
|
name: Setup
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
test_os: ${{ steps.os.outputs.os }}
|
|
ci_type: ${{ steps.os.outputs.ci_type }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Generate OS config and CI type
|
|
id: os
|
|
run: |
|
|
FULL_OS='["almalinux8", "almalinux9", "almalinux10", "centos-stream9", "centos-stream10", "debian11", "debian12", "fedora41", "fedora42", "freebsd13-5r", "freebsd14-3s", "freebsd15-0c", "ubuntu22", "ubuntu24"]'
|
|
QUICK_OS='["almalinux8", "almalinux9", "almalinux10", "debian12", "fedora42", "freebsd14-3s", "ubuntu24"]'
|
|
# determine CI type when running on PR
|
|
ci_type="full"
|
|
if ${{ github.event_name == 'pull_request' }}; then
|
|
head=${{ github.event.pull_request.head.sha }}
|
|
base=${{ github.event.pull_request.base.sha }}
|
|
ci_type=$(python3 .github/workflows/scripts/generate-ci-type.py $head $base)
|
|
fi
|
|
if [ "$ci_type" == "quick" ]; then
|
|
os_selection="$QUICK_OS"
|
|
else
|
|
os_selection="$FULL_OS"
|
|
fi
|
|
|
|
if [ ${{ github.event.inputs.fedora_kernel_ver }} != "" ] ; then
|
|
# They specified a custom kernel version for Fedora. Use only
|
|
# Fedora runners.
|
|
os_json=$(echo ${os_selection} | jq -c '[.[] | select(startswith("fedora"))]')
|
|
else
|
|
# Normal case
|
|
os_json=$(echo ${os_selection} | jq -c)
|
|
fi
|
|
|
|
echo $os_json
|
|
echo "os=$os_json" >> $GITHUB_OUTPUT
|
|
echo "ci_type=$ci_type" >> $GITHUB_OUTPUT
|
|
|
|
qemu-vm:
|
|
name: qemu-x86
|
|
needs: [ test-config ]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# rhl: almalinux8, almalinux9, centos-stream9, fedora41
|
|
# debian: debian11, debian12, ubuntu22, ubuntu24
|
|
# misc: archlinux, tumbleweed
|
|
# FreeBSD variants of 2025-06:
|
|
# FreeBSD Release: freebsd13-5r, freebsd14-2r, freebsd14-3r
|
|
# FreeBSD Stable: freebsd13-5s, freebsd14-3s
|
|
# FreeBSD Current: freebsd15-0c
|
|
os: ${{ fromJson(needs.test-config.outputs.test_os) }}
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Setup QEMU
|
|
timeout-minutes: 10
|
|
run: .github/workflows/scripts/qemu-1-setup.sh
|
|
|
|
- name: Start build machine
|
|
timeout-minutes: 10
|
|
run: .github/workflows/scripts/qemu-2-start.sh ${{ matrix.os }}
|
|
|
|
- name: Install dependencies
|
|
timeout-minutes: 20
|
|
run: .github/workflows/scripts/qemu-3-deps.sh ${{ matrix.os }} ${{ github.event.inputs.fedora_kernel_ver }}
|
|
|
|
- name: Build modules
|
|
timeout-minutes: 30
|
|
run: .github/workflows/scripts/qemu-4-build.sh --poweroff --enable-debug ${{ matrix.os }}
|
|
|
|
- name: Setup testing machines
|
|
timeout-minutes: 5
|
|
run: .github/workflows/scripts/qemu-5-setup.sh
|
|
|
|
- name: Run tests
|
|
timeout-minutes: 270
|
|
run: .github/workflows/scripts/qemu-6-tests.sh
|
|
env:
|
|
CI_TYPE: ${{ needs.test-config.outputs.ci_type }}
|
|
|
|
- name: Prepare artifacts
|
|
if: always()
|
|
timeout-minutes: 10
|
|
run: .github/workflows/scripts/qemu-7-prepare.sh
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
id: artifact-upload
|
|
if: always()
|
|
with:
|
|
name: Logs-functional-${{ matrix.os }}
|
|
path: /tmp/qemu-${{ matrix.os }}.tar
|
|
if-no-files-found: ignore
|
|
|
|
- name: Test Summary
|
|
if: always()
|
|
run: .github/workflows/scripts/qemu-8-summary.sh '${{ steps.artifact-upload.outputs.artifact-url }}'
|
|
|
|
cleanup:
|
|
if: always()
|
|
name: Cleanup
|
|
runs-on: ubuntu-latest
|
|
needs: [ qemu-vm ]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
- uses: actions/download-artifact@v4
|
|
- name: Generating summary
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 2
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 3
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 4
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 5
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 6
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 7
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 8
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 9
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 10
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 11
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 12
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 13
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 14
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 15
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 16
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 17
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 18
|
|
- name: Generating summary...
|
|
run: .github/workflows/scripts/qemu-9-summary-page.sh 19
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Summary Files
|
|
path: out-*
|