xref: /freebsd/sys/contrib/openzfs/.github/workflows/zloop.yml (revision 85e449cfcfdf3a3ea99bae7fed9f3cd436eb21ec)
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        [ -r /etc/hostid ] && [ -s /etc/hostid ] || sudo zgenhostid -f
53        sudo truncate -s 256G /mnt/vdev
54        sudo zpool create cipool -m $WORK_DIR -O compression=on -o autotrim=on /mnt/vdev
55        sudo /usr/share/zfs/zloop.sh -t 600 -I 6 -l -m 1 -c $CORE_DIR -f $WORK_DIR -- -T 120 -P 60
56    - name: Prepare artifacts
57      if: failure()
58      run: |
59        sudo chmod +r -R $WORK_DIR/
60    - name: Ztest log
61      if: failure()
62      run: |
63        grep -B10 -A1000 'ASSERT' $CORE_DIR/*/ztest.out || tail -n 1000 $CORE_DIR/*/ztest.out
64    - name: Gdb log
65      if: failure()
66      run: |
67        sed -n '/Backtraces (full)/q;p' $CORE_DIR/*/ztest.gdb
68    - name: Zdb log
69      if: failure()
70      run: |
71        cat $CORE_DIR/*/ztest.zdb
72    - uses: actions/upload-artifact@v7
73      if: failure()
74      with:
75        name: Logs
76        path: |
77          /mnt/zloop/*/
78          !/mnt/zloop/cores/*/vdev/
79        if-no-files-found: ignore
80    - uses: actions/upload-artifact@v7
81      if: failure()
82      with:
83        name: Pool files
84        path: |
85          /mnt/zloop/cores/*/vdev/
86        if-no-files-found: ignore
87