| name: Pigz |
| on: [push, pull_request] |
| jobs: |
| pigz: |
| name: ${{ matrix.name }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: Ubuntu GCC |
| os: ubuntu-latest |
| compiler: gcc |
| codecov: ubuntu_gcc_pigz |
| |
| - name: Ubuntu GCC Symbol Prefix |
| os: ubuntu-latest |
| compiler: gcc |
| codecov: ubuntu_gcc_pigz |
| cmake-args: -DZLIB_SYMBOL_PREFIX=zTest_ |
| |
| - name: Ubuntu Clang |
| os: ubuntu-latest |
| compiler: clang |
| packages: llvm-11-tools |
| gcov-exec: llvm-cov-11 gcov |
| codecov: ubuntu_clang_pigz |
| |
| - name: Ubuntu Clang No Optim |
| os: ubuntu-latest |
| compiler: clang |
| packages: llvm-11-tools |
| gcov-exec: llvm-cov-11 gcov |
| codecov: ubuntu_clang_pigz_no_optim |
| cmake-args: -DWITH_OPTIM=OFF |
| |
| # Use v2.6 due to NOTHREADS bug https://github.com/madler/pigz/issues/97 |
| - name: Ubuntu Clang No Threads |
| os: ubuntu-latest |
| compiler: clang |
| packages: llvm-11-tools |
| gcov-exec: llvm-cov-11 gcov |
| codecov: ubuntu_clang_pigz_no_threads |
| cmake-args: -DWITH_THREADS=OFF -DPIGZ_VERSION=v2.6 |
| |
| - name: Ubuntu GCC AARCH64 |
| os: ubuntu-latest |
| cmake-args: -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchain-aarch64.cmake |
| packages: qemu qemu-user gcc-aarch64-linux-gnu libc-dev-arm64-cross |
| codecov: ubuntu_gcc_pigz_aarch64 |
| |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v3 |
| |
| - name: Checkout test corpora |
| uses: actions/checkout@v3 |
| with: |
| repository: zlib-ng/corpora |
| path: test/data/corpora |
| |
| - name: Install packages (Ubuntu) |
| if: runner.os == 'Linux' && matrix.packages |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y ${{ matrix.packages }} |
| |
| - name: Generate project files |
| run: | |
| cmake ${{ matrix.cmake-args }} \ |
| -DCMAKE_BUILD_TYPE=${{ matrix.build-config || 'Release' }} \ |
| -DBUILD_SHARED_LIBS=OFF \ |
| -DZLIB_ROOT=../.. \ |
| -DWITH_CODE_COVERAGE=ON \ |
| -DWITH_MAINTAINER_WARNINGS=ON |
| working-directory: test/pigz |
| env: |
| CC: ${{ matrix.compiler }} |
| CFLAGS: ${{ matrix.cflags }} |
| LDFLAGS: ${{ matrix.ldflags }} |
| CI: true |
| |
| - name: Compile source code |
| run: cmake --build . --config ${{ matrix.build-config || 'Release' }} |
| working-directory: test/pigz |
| |
| - name: Run test cases |
| run: ctest --verbose -C Release --output-on-failure --max-width 120 -j ${{ matrix.parallels-jobs || '2' }} |
| working-directory: test/pigz |
| |
| - name: Generate coverage report |
| if: matrix.codecov |
| run: | |
| python3 -u -m pip install --user gcovr==5.0 |
| python3 -m gcovr -j 3 --verbose \ |
| --exclude-unreachable-branches \ |
| --gcov-executable "${{ matrix.gcov-exec || 'gcov' }}" \ |
| --root . \ |
| --xml --output coverage.xml |
| |
| - name: Upload coverage report |
| uses: codecov/codecov-action@v2 |
| if: matrix.codecov && (env.CODECOV_TOKEN != '' || github.repository == 'zlib-ng/zlib-ng') |
| with: |
| token: ${{ secrets.CODECOV_TOKEN || 'e4fdf847-f541-4ab1-9d50-3d27e5913906' }} |
| flags: ${{ matrix.codecov }} |
| name: ${{ matrix.name }} |
| verbose: true |
| fail_ci_if_error: true |
| env: |
| CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}} |
| |
| - name: Upload build errors |
| uses: actions/upload-artifact@v2 |
| if: failure() |
| with: |
| name: ${{ matrix.name }} (cmake) |
| path: | |
| **/CMakeFiles/CMakeOutput.log |
| **/CMakeFiles/CMakeError.log |
| **/Testing/Temporary/* |
| coverage.xml |
| retention-days: 30 |