1name: zloop 2 3on: 4 push: 5 pull_request: 6 7concurrency: 8 group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} 9 cancel-in-progress: true 10 11jobs: 12 zloop: 13 runs-on: ubuntu-24.04 14 env: 15 TEST_DIR: /var/tmp/zloop 16 steps: 17 - uses: actions/checkout@v4 18 with: 19 ref: ${{ github.event.pull_request.head.sha }} 20 - name: Install dependencies 21 run: | 22 sudo apt-get purge -y snapd google-chrome-stable firefox 23 ONLY_DEPS=1 .github/workflows/scripts/qemu-3-deps.sh ubuntu24 24 - name: Autogen.sh 25 run: | 26 sed -i '/DEBUG_CFLAGS="-Werror"/s/^/#/' config/zfs-build.m4 27 ./autogen.sh 28 - name: Configure 29 run: | 30 ./configure --prefix=/usr --enable-debug --enable-debuginfo \ 31 --enable-asan --enable-ubsan \ 32 --enable-debug-kmem --enable-debug-kmem-tracking 33 - name: Make 34 run: | 35 make -j$(nproc) 36 - name: Install 37 run: | 38 sudo make install 39 sudo depmod 40 sudo modprobe zfs 41 - name: Tests 42 run: | 43 sudo mkdir -p $TEST_DIR 44 # run for 10 minutes or at most 6 iterations for a maximum runner 45 # time of 60 minutes. 46 sudo /usr/share/zfs/zloop.sh -t 600 -I 6 -l -m 1 -- -T 120 -P 60 47 - name: Prepare artifacts 48 if: failure() 49 run: | 50 sudo chmod +r -R $TEST_DIR/ 51 - name: Ztest log 52 if: failure() 53 run: | 54 grep -B10 -A1000 'ASSERT' $TEST_DIR/*/ztest.out || tail -n 1000 $TEST_DIR/*/ztest.out 55 - name: Gdb log 56 if: failure() 57 run: | 58 sed -n '/Backtraces (full)/q;p' $TEST_DIR/*/ztest.gdb 59 - name: Zdb log 60 if: failure() 61 run: | 62 cat $TEST_DIR/*/ztest.zdb 63 - uses: actions/upload-artifact@v4 64 if: failure() 65 with: 66 name: Logs 67 path: | 68 /var/tmp/zloop/*/ 69 !/var/tmp/zloop/*/vdev/ 70 if-no-files-found: ignore 71 - uses: actions/upload-artifact@v4 72 if: failure() 73 with: 74 name: Pool files 75 path: | 76 /var/tmp/zloop/*/vdev/ 77 if-no-files-found: ignore 78