mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 10:01:01 +03:00
142 lines
4.8 KiB
YAML
142 lines
4.8 KiB
YAML
|
name: zfs-qemu
|
||
|
|
||
|
on:
|
||
|
push:
|
||
|
pull_request:
|
||
|
|
||
|
jobs:
|
||
|
|
||
|
qemu-vm:
|
||
|
name: qemu-x86
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
# all:
|
||
|
# os: [almalinux8, almalinux9, archlinux, centos-stream9, fedora39, fedora40, debian11, debian12, freebsd13, freebsd13r, freebsd14, freebsd14r, freebsd15, ubuntu20, ubuntu22, ubuntu24]
|
||
|
# openzfs:
|
||
|
os: [almalinux8, almalinux9, centos-stream9, debian11, debian12, fedora39, fedora40, freebsd13, freebsd13r, freebsd14, freebsd14r]
|
||
|
# freebsd:
|
||
|
# os: [freebsd13, freebsd14]
|
||
|
# small test:
|
||
|
# os: [archlinux]
|
||
|
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: |
|
||
|
echo "Install dependencies in QEMU machine"
|
||
|
IP=192.168.122.10
|
||
|
while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do
|
||
|
ssh 2>/dev/null zfs@$IP "uname -a" && break
|
||
|
done
|
||
|
scp .github/workflows/scripts/qemu-3-deps.sh zfs@$IP:qemu-3-deps.sh
|
||
|
PID=`pidof /usr/bin/qemu-system-x86_64`
|
||
|
ssh zfs@$IP '$HOME/qemu-3-deps.sh' ${{ matrix.os }}
|
||
|
# wait for poweroff to succeed
|
||
|
tail --pid=$PID -f /dev/null
|
||
|
sleep 5 # avoid this: "error: Domain is already active"
|
||
|
rm -f $HOME/.ssh/known_hosts
|
||
|
|
||
|
- name: Build modules
|
||
|
timeout-minutes: 30
|
||
|
run: |
|
||
|
echo "Build modules in QEMU machine"
|
||
|
sudo virsh start openzfs
|
||
|
IP=192.168.122.10
|
||
|
while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do
|
||
|
ssh 2>/dev/null zfs@$IP "uname -a" && break
|
||
|
done
|
||
|
rsync -ar $HOME/work/zfs/zfs zfs@$IP:./
|
||
|
ssh zfs@$IP '$HOME/zfs/.github/workflows/scripts/qemu-4-build.sh' ${{ 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
|
||
|
|
||
|
- 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-*
|