From 03453e7fcdee91f9fd81e63321344dc9b95530b3 Mon Sep 17 00:00:00 2001 From: Damian Szuberski Date: Mon, 7 Feb 2022 20:44:17 +0100 Subject: [PATCH] Extract workflows dependencies - Move build dependencies moved to `.github/workflows/build-dependencies.txt` shared among workflows. - Change `ubuntu-latest` -> `ubuntu-20.04` to avoid unexpected runner environment updates in `zloop` workflow. - Change `ubuntu-20.04` -> `ubuntu-latest` to track changes in runner environment in `checkstyle` workflow. - Kernel buffer is flushed before ZTS invocation to avoid storing the same data after each test case run. - `make` is invoked with consistent set of options to reduce clutter in logs. Reviewed-by: George Melikov Signed-off-by: szubersk Closes #13037 --- .github/workflows/build-dependencies.txt | 48 ++++++++++++++++++++++ .github/workflows/checkstyle.yaml | 32 +++++++++------ .github/workflows/zfs-tests-functional.yml | 24 +++++------ .github/workflows/zfs-tests-sanity.yml | 28 ++++++------- .github/workflows/zloop.yml | 15 +++---- 5 files changed, 96 insertions(+), 51 deletions(-) create mode 100644 .github/workflows/build-dependencies.txt diff --git a/.github/workflows/build-dependencies.txt b/.github/workflows/build-dependencies.txt new file mode 100644 index 000000000000..1dc745d5f642 --- /dev/null +++ b/.github/workflows/build-dependencies.txt @@ -0,0 +1,48 @@ +acl +alien +attr +autoconf +bc +build-essential +curl +dbench +fakeroot +fio +gdb +gdebi +git +ksh +lcov +libacl1-dev +libaio-dev +libattr1-dev +libblkid-dev +libcurl4-openssl-dev +libdevmapper-dev +libelf-dev +libffi-dev +libmount-dev +libpam0g-dev +libselinux-dev +libssl-dev +libtool +libudev-dev +lsscsi +mdadm +nfs-kernel-server +pamtester +parted +python3 +python3-cffi +python3-dev +python3-packaging +python3-setuptools +rng-tools +samba +sysstat +uuid-dev +watchdog +wget +xfslibs-dev +xz-utils +zlib1g-dev diff --git a/.github/workflows/checkstyle.yaml b/.github/workflows/checkstyle.yaml index a102b6e8aa1f..abc0ff11916a 100644 --- a/.github/workflows/checkstyle.yaml +++ b/.github/workflows/checkstyle.yaml @@ -6,7 +6,7 @@ on: jobs: checkstyle: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: @@ -14,31 +14,37 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install --yes -qq build-essential autoconf libtool gawk alien fakeroot linux-headers-$(uname -r) - sudo apt-get install --yes -qq zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libssl-dev python3 python3-dev python3-setuptools python3-cffi - # packages for tests - sudo apt-get install --yes -qq parted lsscsi ksh attr acl nfs-kernel-server fio - sudo apt-get install --yes -qq mandoc cppcheck pax-utils devscripts - sudo -E pip --quiet install flake8 + sudo xargs --arg-file=${{ github.workspace }}/.github/workflows/build-dependencies.txt apt-get install -qq + sudo apt-get install -qq mandoc cppcheck pax-utils devscripts + sudo python3 -m pip install --quiet flake8 + sudo apt-get clean + + # confirm that the tools are installed + # the build system doesn't fail when they are not + checkbashisms --version + cppcheck --version + flake8 --version + scanelf --version + shellcheck --version - name: Prepare run: | - sh ./autogen.sh + ./autogen.sh ./configure - make -j$(nproc) + make -j$(nproc) --no-print-directory --silent - name: Checkstyle run: | - make checkstyle + make -j$(nproc) --no-print-directory --silent checkstyle - name: Lint run: | - make lint + make -j$(nproc) --no-print-directory --silent lint - name: CheckABI id: CheckABI run: | - sudo docker run -v $(pwd):/source ghcr.io/openzfs/libabigail make checkabi + docker run -v $(pwd):/source ghcr.io/openzfs/libabigail make -j$(nproc) --no-print-directory --silent checkabi - name: StoreABI if: failure() && steps.CheckABI.outcome == 'failure' run: | - sudo docker run -v $(pwd):/source ghcr.io/openzfs/libabigail make storeabi + docker run -v $(pwd):/source ghcr.io/openzfs/libabigail make -j$(nproc) --no-print-directory --silent storeabi - name: Prepare artifacts if: failure() && steps.CheckABI.outcome == 'failure' run: | diff --git a/.github/workflows/zfs-tests-functional.yml b/.github/workflows/zfs-tests-functional.yml index ba3b2e11cfc2..a7be5f456108 100644 --- a/.github/workflows/zfs-tests-functional.yml +++ b/.github/workflows/zfs-tests-functional.yml @@ -18,24 +18,17 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install --yes -qq build-essential autoconf libtool gdb lcov \ - git alien fakeroot wget curl bc fio acl \ - sysstat mdadm lsscsi parted gdebi attr dbench watchdog ksh \ - nfs-kernel-server samba rng-tools xz-utils \ - zlib1g-dev uuid-dev libblkid-dev libselinux-dev \ - xfslibs-dev libattr1-dev libacl1-dev libudev-dev libdevmapper-dev \ - libssl-dev libffi-dev libaio-dev libelf-dev libmount-dev \ - libpam0g-dev pamtester libcurl4-openssl-dev \ - python3 python3-dev python3-setuptools python3-cffi python3-packaging + xargs --arg-file=${{ github.workspace }}/.github/workflows/build-dependencies.txt sudo apt-get install -qq + sudo apt-get clean - name: Autogen.sh run: | - sh autogen.sh + ./autogen.sh - name: Configure run: | ./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan - name: Make run: | - make --no-print-directory -s pkg-utils pkg-kmod + make -j$(nproc) --no-print-directory --silent pkg-utils pkg-kmod - name: Install run: | sudo dpkg -i *.deb @@ -61,6 +54,9 @@ jobs: sudo rm -rf /opt/ghc sudo rm -rf "/usr/local/share/boost" sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Clear the kernel ring buffer + run: | + sudo dmesg -c >/var/tmp/dmesg-prerun - name: Tests run: | /usr/share/zfs/zfs-tests.sh -vR -s 3G @@ -70,7 +66,7 @@ jobs: run: | RESULTS_PATH=$(readlink -f /var/tmp/test_results/current) sudo dmesg > $RESULTS_PATH/dmesg - sudo cp /var/log/syslog $RESULTS_PATH/ + sudo cp /var/log/syslog /var/tmp/dmesg-prerun $RESULTS_PATH/ sudo chmod +r $RESULTS_PATH/* # Replace ':' in dir names, actions/upload-artifact doesn't support it for f in $(find /var/tmp/test_results -name '*:*'); do mv "$f" "${f//:/__}"; done @@ -78,5 +74,7 @@ jobs: if: failure() with: name: Test logs Ubuntu-${{ matrix.os }} - path: /var/tmp/test_results/20*/ + path: | + /var/tmp/test_results/* + !/var/tmp/test_results/current if-no-files-found: ignore diff --git a/.github/workflows/zfs-tests-sanity.yml b/.github/workflows/zfs-tests-sanity.yml index abe7974dddc1..008c5a2b4845 100644 --- a/.github/workflows/zfs-tests-sanity.yml +++ b/.github/workflows/zfs-tests-sanity.yml @@ -6,7 +6,7 @@ on: jobs: tests: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 with: @@ -14,24 +14,17 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install --yes -qq build-essential autoconf libtool gdb lcov \ - git alien fakeroot wget curl bc fio acl \ - sysstat mdadm lsscsi parted gdebi attr dbench watchdog ksh \ - nfs-kernel-server samba rng-tools xz-utils \ - zlib1g-dev uuid-dev libblkid-dev libselinux-dev \ - xfslibs-dev libattr1-dev libacl1-dev libudev-dev libdevmapper-dev \ - libssl-dev libffi-dev libaio-dev libelf-dev libmount-dev \ - libpam0g-dev pamtester libcurl4-openssl-dev \ - python3 python3-dev python3-setuptools python3-cffi python3-packaging + xargs --arg-file=${{ github.workspace }}/.github/workflows/build-dependencies.txt sudo apt-get install -qq + sudo apt-get clean - name: Autogen.sh run: | - sh autogen.sh + ./autogen.sh - name: Configure run: | ./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan - name: Make run: | - make --no-print-directory -s pkg-utils pkg-kmod + make -j$(nproc) --no-print-directory --silent pkg-utils pkg-kmod - name: Install run: | sudo dpkg -i *.deb @@ -57,6 +50,9 @@ jobs: sudo rm -rf /opt/ghc sudo rm -rf "/usr/local/share/boost" sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Clear the kernel ring buffer + run: | + sudo dmesg -c >/var/tmp/dmesg-prerun - name: Tests run: | /usr/share/zfs/zfs-tests.sh -vR -s 3G -r sanity @@ -66,13 +62,15 @@ jobs: run: | RESULTS_PATH=$(readlink -f /var/tmp/test_results/current) sudo dmesg > $RESULTS_PATH/dmesg - sudo cp /var/log/syslog $RESULTS_PATH/ + sudo cp /var/log/syslog /var/tmp/dmesg-prerun $RESULTS_PATH/ sudo chmod +r $RESULTS_PATH/* # Replace ':' in dir names, actions/upload-artifact doesn't support it for f in $(find /var/tmp/test_results -name '*:*'); do mv "$f" "${f//:/__}"; done - uses: actions/upload-artifact@v2 if: failure() with: - name: Test logs - path: /var/tmp/test_results/20*/ + name: Test logs Ubuntu-${{ matrix.os }} + path: | + /var/tmp/test_results/* + !/var/tmp/test_results/current if-no-files-found: ignore diff --git a/.github/workflows/zloop.yml b/.github/workflows/zloop.yml index 0638bbe58f38..8eb2a1d9bb0f 100644 --- a/.github/workflows/zloop.yml +++ b/.github/workflows/zloop.yml @@ -6,7 +6,7 @@ on: jobs: tests: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 env: TEST_DIR: /var/tmp/zloop steps: @@ -16,22 +16,17 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install --yes -qq build-essential autoconf libtool gdb \ - git alien fakeroot \ - zlib1g-dev uuid-dev libblkid-dev libselinux-dev \ - xfslibs-dev libattr1-dev libacl1-dev libudev-dev libdevmapper-dev \ - libssl-dev libffi-dev libaio-dev libelf-dev libmount-dev \ - libpam0g-dev \ - python3 python3-dev python3-setuptools python3-cffi python3-packaging + xargs --arg-file=${{ github.workspace }}/.github/workflows/build-dependencies.txt sudo apt-get install -qq + sudo apt-get clean - name: Autogen.sh run: | - sh autogen.sh + ./autogen.sh - name: Configure run: | ./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan - name: Make run: | - make --no-print-directory -s pkg-utils pkg-kmod + make -j$(nproc) --no-print-directory --silent pkg-utils pkg-kmod - name: Install run: | sudo dpkg -i *.deb