xref: /freebsd/sys/contrib/openzfs/.github/workflows/zloop.yml (revision 22649d4dba730d46244fd2dff4fd174903c8379f)
1name: zloop
2
3on:
4  push:
5  pull_request:
6    paths-ignore:
7      - 'man/**'
8      - '**.md'
9      - 'AUTHORS'
10      - 'COPYRIGHT'
11      - 'LICENSE'
12      - 'NOTICE'
13      - '.gitignore'
14
15concurrency:
16  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
17  cancel-in-progress: true
18
19jobs:
20  zloop:
21    runs-on: ubuntu-24.04
22    env:
23      WORK_DIR: /mnt/zloop
24      CORE_DIR: /mnt/zloop/cores
25    steps:
26    - uses: actions/checkout@v6
27      with:
28        ref: ${{ github.event.pull_request.head.sha }}
29    - name: Install dependencies
30      run: |
31        sudo apt-get purge -y snapd google-chrome-stable firefox
32        ONLY_DEPS=1 .github/workflows/scripts/qemu-3-deps-vm.sh ubuntu24
33    - name: Autogen.sh
34      run: |
35        sed -i '/DEBUG_CFLAGS="-Werror"/s/^/#/' config/zfs-build.m4
36        ./autogen.sh
37    - name: Configure
38      run: |
39        ./configure --prefix=/usr --enable-debug --enable-debuginfo \
40           --enable-asan --enable-ubsan \
41           --enable-debug-kmem --enable-debug-kmem-tracking
42    - name: Make
43      run: |
44        make -j$(nproc)
45    - name: Install
46      run: |
47        sudo make install
48        sudo depmod
49        sudo modprobe zfs
50    - name: Tests
51      run: |
52        sudo truncate -s 256G /mnt/vdev
53        sudo zpool create cipool -m $WORK_DIR -O compression=on -o autotrim=on /mnt/vdev
54        sudo /usr/share/zfs/zloop.sh -t 600 -I 6 -l -m 1 -M -c $CORE_DIR -f $WORK_DIR -- -T 120 -P 60
55    - name: Prepare artifacts
56      if: failure()
57      run: |
58        sudo chmod +r -R $WORK_DIR/
59    - name: Ztest log
60      if: failure()
61      run: |
62        grep -B10 -A1000 'ASSERT' $CORE_DIR/*/ztest.out || tail -n 1000 $CORE_DIR/*/ztest.out
63    - name: Gdb log
64      if: failure()
65      run: |
66        sed -n '/Backtraces (full)/q;p' $CORE_DIR/*/ztest.gdb
67    - name: Zdb log
68      if: failure()
69      run: |
70        cat $CORE_DIR/*/ztest.zdb
71    - uses: actions/upload-artifact@v7
72      if: failure()
73      with:
74        name: Logs
75        path: |
76          /mnt/zloop/*/
77          !/mnt/zloop/cores/*/vdev/
78        if-no-files-found: ignore
79    - uses: actions/upload-artifact@v7
80      if: failure()
81      with:
82        name: Pool files
83        path: |
84          /mnt/zloop/cores/*/vdev/
85        if-no-files-found: ignore
86