1name: CI CMake 2on: [push, pull_request] 3jobs: 4 ci-cmake: 5 name: ${{ matrix.name }} 6 runs-on: ${{ matrix.os }} 7 strategy: 8 fail-fast: false 9 matrix: 10 include: 11 - name: Ubuntu 18.04 GCC 12 os: ubuntu-18.04 13 compiler: gcc 14 cxx-compiler: g++ 15 16 - name: Ubuntu GCC ASAN 17 os: ubuntu-latest 18 compiler: gcc 19 cxx-compiler: g++ 20 cmake-args: -DWITH_SANITIZER=Address 21 codecov: ubuntu_gcc 22 23 - name: Ubuntu GCC Benchmark 24 os: ubuntu-latest 25 compiler: gcc 26 cxx-compiler: g++ 27 cmake-args: -DWITH_BENCHMARKS=ON 28 codecov: ubuntu_gcc_benchmark 29 30 - name: Ubuntu GCC Symbol Prefix 31 os: ubuntu-latest 32 compiler: gcc 33 cxx-compiler: g++ 34 cmake-args: -DZLIB_SYMBOL_PREFIX=zTest_ 35 codecov: ubuntu_gcc_sprefix 36 37 - name: Ubuntu GCC Compat Symbol Prefix 38 os: ubuntu-latest 39 compiler: gcc 40 cxx-compiler: g++ 41 cmake-args: -DZLIB_COMPAT=ON -DZLIB_SYMBOL_PREFIX=zTest_ 42 codecov: ubuntu_gcc_compat_sprefix 43 44 - name: Ubuntu GCC -O3 OSB 45 os: ubuntu-latest 46 compiler: gcc 47 cxx-compiler: g++ 48 build-dir: ../build 49 build-src-dir: ../zlib-ng 50 codecov: ubuntu_gcc_osb 51 cflags: -O3 52 53 - name: Ubuntu GCC -O1 No Unaligned UBSAN 54 os: ubuntu-latest 55 compiler: gcc 56 cxx-compiler: g++ 57 cmake-args: -DWITH_UNALIGNED=OFF -DWITH_SANITIZER=Undefined 58 codecov: ubuntu_gcc_o1 59 cflags: -O1 60 61 - name: Ubuntu GCC 32-bit 62 os: ubuntu-latest 63 compiler: gcc 64 cxx-compiler: g++ 65 cmake-args: -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_SHARED_LINKER_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 66 packages: gcc-multilib g++-multilib 67 codecov: ubuntu_gcc_m32 68 69 - name: Ubuntu GCC No CTZLL 70 os: ubuntu-latest 71 compiler: gcc 72 cxx-compiler: g++ 73 cmake-args: -DWITH_OPTIM=OFF -DHAVE_BUILTIN_CTZLL=OFF 74 codecov: ubuntu_gcc_no_ctzll 75 76 - name: Ubuntu GCC No CTZ 77 os: ubuntu-latest 78 compiler: gcc 79 cxx-compiler: g++ 80 cmake-args: -DWITH_OPTIM=OFF -DHAVE_BUILTIN_CTZLL=OFF -DHAVE_BUILTIN_CTZ=OFF 81 codecov: ubuntu_gcc_no_ctz 82 83 - name: Ubuntu GCC Link Zlib 84 os: ubuntu-latest 85 compiler: gcc 86 cxx-compiler: g++ 87 cmake-args: -DZLIB_DUAL_LINK=ON 88 89 - name: Ubuntu GCC No AVX2 UBSAN 90 os: ubuntu-latest 91 compiler: gcc 92 cxx-compiler: g++ 93 cmake-args: -DWITH_AVX2=OFF -DWITH_SANITIZER=Undefined 94 codecov: ubuntu_gcc_no_avx2 95 96 - name: Ubuntu GCC No SSE2 UBSAN 97 os: ubuntu-latest 98 compiler: gcc 99 cxx-compiler: g++ 100 cmake-args: -DWITH_SSE2=OFF -DWITH_SANITIZER=Undefined 101 codecov: ubuntu_gcc_no_sse2 102 103 - name: Ubuntu GCC No SSE4 UBSAN 104 os: ubuntu-latest 105 compiler: gcc 106 cxx-compiler: g++ 107 cmake-args: -DWITH_SSE4=OFF -DWITH_SANITIZER=Undefined 108 codecov: ubuntu_gcc_no_sse4 109 110 - name: Ubuntu GCC No PCLMULQDQ UBSAN 111 os: ubuntu-latest 112 compiler: gcc 113 cxx-compiler: g++ 114 cmake-args: -DWITH_PCLMULQDQ=OFF -DWITH_SANITIZER=Undefined 115 codecov: ubuntu_gcc_no_pclmulqdq 116 117 - name: Ubuntu GCC Compat No Opt ASAN 118 os: ubuntu-latest 119 compiler: gcc 120 cxx-compiler: g++ 121 cmake-args: -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF -DWITH_OPTIM=OFF -DWITH_SANITIZER=Address 122 codecov: ubuntu_gcc_compat_no_opt 123 cflags: -DNOT_TWEAK_COMPILER 124 125 - name: Ubuntu GCC ARM SF ASAN 126 os: ubuntu-latest 127 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-arm.cmake -DWITH_SANITIZER=Address 128 asan-options: detect_leaks=0 129 packages: qemu qemu-user gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc-dev-armel-cross 130 codecov: ubuntu_gcc_armsf 131 132 - name: Ubuntu GCC ARM SF Compat No Opt UBSAN 133 os: ubuntu-latest 134 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-arm.cmake -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF -DWITH_OPTIM=OFF -DWITH_SANITIZER=Undefined 135 packages: qemu qemu-user gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc-dev-armel-cross 136 codecov: ubuntu_gcc_armsf_compat_no_opt 137 138 - name: Ubuntu GCC ARM HF ASAN 139 os: ubuntu-latest 140 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armhf.cmake -DWITH_SANITIZER=Address 141 asan-options: detect_leaks=0 142 packages: qemu qemu-user gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc-dev-armel-cross 143 codecov: ubuntu_gcc_armhf 144 145 - name: Ubuntu GCC ARM HF No ACLE ASAN 146 os: ubuntu-latest 147 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armhf.cmake -DWITH_ACLE=OFF -DWITH_SANITIZER=Address 148 asan-options: detect_leaks=0 149 packages: qemu qemu-user gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc-dev-armel-cross 150 codecov: ubuntu_gcc_armhf_no_acle 151 152 - name: Ubuntu GCC ARM HF No NEON ASAN 153 os: ubuntu-latest 154 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armhf.cmake -DWITH_NEON=OFF -DWITH_SANITIZER=Address 155 asan-options: detect_leaks=0 156 packages: qemu qemu-user gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc-dev-armel-cross 157 codecov: ubuntu_gcc_armhf_no_neon 158 159 - name: Ubuntu GCC ARM HF Compat No Opt UBSAN 160 os: ubuntu-latest 161 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armhf.cmake -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF -DWITH_OPTIM=OFF -DWITH_SANITIZER=Undefined 162 packages: qemu qemu-user gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc-dev-armel-cross 163 codecov: ubuntu_gcc_armhf_compat_no_opt 164 165 - name: Ubuntu GCC AARCH64 ASAN 166 os: ubuntu-latest 167 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake -DWITH_SANITIZER=Address 168 asan-options: detect_leaks=0 169 packages: qemu qemu-user gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc-dev-arm64-cross 170 codecov: ubuntu_gcc_aarch64 171 172 - name: Ubuntu GCC AARCH64 No ACLE UBSAN 173 os: ubuntu-latest 174 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake -DWITH_ACLE=OFF -DWITH_SANITIZER=Undefined 175 packages: qemu qemu-user gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc-dev-arm64-cross 176 codecov: ubuntu_gcc_aarch64_no_acle 177 178 - name: Ubuntu GCC AARCH64 No NEON UBSAN 179 os: ubuntu-latest 180 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake -DWITH_NEON=OFF -DWITH_SANITIZER=Undefined 181 packages: qemu qemu-user gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc-dev-arm64-cross 182 codecov: ubuntu_gcc_aarch64_no_neon 183 184 - name: Ubuntu GCC AARCH64 Compat No Opt UBSAN 185 os: ubuntu-latest 186 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-aarch64.cmake -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF -DWITH_OPTIM=OFF -DWITH_SANITIZER=Undefined 187 packages: qemu qemu-user gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc-dev-arm64-cross 188 codecov: ubuntu_gcc_aarch64_compat_no_opt 189 190 - name: Ubuntu GCC PPC 191 os: ubuntu-latest 192 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc.cmake 193 packages: qemu qemu-user gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc-dev-powerpc-cross 194 codecov: ubuntu_gcc_ppc 195 196 - name: Ubuntu GCC PPC No Power8 197 os: ubuntu-latest 198 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc.cmake -DWITH_POWER8=OFF 199 packages: qemu qemu-user gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc-dev-powerpc-cross 200 codecov: ubuntu_gcc_ppc_no_power8 201 202 - name: Ubuntu GCC PPC64 203 os: ubuntu-latest 204 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc64.cmake 205 packages: qemu qemu-user gcc-powerpc64-linux-gnu g++-powerpc64-linux-gnu libc-dev-ppc64-cross 206 ldflags: -static 207 codecov: ubuntu_gcc_ppc64 208 209 - name: Ubuntu GCC PPC64LE 210 os: ubuntu-latest 211 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-powerpc64le.cmake 212 packages: qemu qemu-user gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc-dev-ppc64el-cross 213 codecov: ubuntu_gcc_ppc64le 214 215 - name: Ubuntu GCC SPARC64 216 os: ubuntu-latest 217 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-sparc64.cmake 218 packages: qemu qemu-user gcc-sparc64-linux-gnu g++-sparc64-linux-gnu libc-dev-sparc64-cross 219 ldflags: -static 220 codecov: ubuntu_gcc_sparc64 221 222 - name: Ubuntu GCC S390X ASAN 223 os: ubuntu-latest 224 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-s390x.cmake -DWITH_SANITIZER=Address 225 asan-options: detect_leaks=0 226 packages: qemu qemu-user gcc-s390x-linux-gnu g++-s390x-linux-gnu libc-dev-s390x-cross 227 ldflags: -static 228 codecov: ubuntu_gcc_s390x 229 230 - name: Ubuntu GCC S390X No vectorized CRC32 ASAN 231 os: ubuntu-latest 232 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-s390x.cmake -DWITH_CRC32_VX=OFF -DWITH_SANITIZER=Address 233 asan-options: detect_leaks=0 234 packages: qemu qemu-user gcc-s390x-linux-gnu g++-s390x-linux-gnu libc-dev-s390x-cross 235 ldflags: -static 236 codecov: ubuntu_gcc_s390x_no_crc32 237 238 - name: Ubuntu GCC S390X DFLTCC ASAN 239 os: z15 240 compiler: gcc 241 cxx-compiler: g++ 242 cmake-args: -DWITH_DFLTCC_DEFLATE=ON -DWITH_DFLTCC_INFLATE=ON -DWITH_SANITIZER=Address 243 asan-options: detect_leaks=0 244 ldflags: -static 245 codecov: ubuntu_gcc_s390x_dfltcc 246 247 - name: Ubuntu GCC S390X DFLTCC Compat UBSAN 248 os: z15 249 compiler: gcc 250 cxx-compiler: g++ 251 cmake-args: -DZLIB_COMPAT=ON -DWITH_DFLTCC_DEFLATE=ON -DWITH_DFLTCC_INFLATE=ON -DWITH_SANITIZER=Undefined 252 ldflags: -static 253 codecov: ubuntu_gcc_s390x_dfltcc_compat 254 255 - name: Ubuntu MinGW i686 256 os: ubuntu-latest 257 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw-i686.cmake 258 packages: wine32 gcc-mingw-w64-i686 g++-mingw-w64-i686 libpcre2-8-0=10.34-7 libpcre2-8-0:i386=10.34-7 libodbc1=2.3.6-0.1build1 libodbc1:i386=2.3.6-0.1build1 259 ldflags: -static 260 codecov: ubuntu_gcc_mingw_i686 261 # Limit parallel test jobs to prevent wine errors 262 parallels-jobs: 1 263 264 - name: Ubuntu MinGW x86_64 265 os: ubuntu-latest 266 cmake-args: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw-x86_64.cmake 267 packages: wine-stable gcc-mingw-w64 g++-mingw-w64 268 ldflags: -static 269 codecov: ubuntu_gcc_mingw_x86_64 270 # Limit parallel test jobs to prevent wine errors 271 parallels-jobs: 1 272 273 - name: Ubuntu 18.04 Clang 274 os: ubuntu-18.04 275 compiler: clang-6.0 276 cxx-compiler: clang++-6.0 277 packages: clang-6.0 278 279 - name: Ubuntu Clang 280 os: ubuntu-latest 281 compiler: clang-11 282 cxx-compiler: clang++-11 283 packages: llvm-11-tools 284 gcov-exec: llvm-cov-11 gcov 285 codecov: ubuntu_clang 286 287 - name: Ubuntu Clang Inflate Strict 288 os: ubuntu-latest 289 compiler: clang-11 290 cxx-compiler: clang++-11 291 cmake-args: -DWITH_INFLATE_STRICT=ON 292 packages: llvm-11-tools 293 gcov-exec: llvm-cov-11 gcov 294 codecov: ubuntu_clang_inflate_strict 295 296 - name: Ubuntu Clang Inflate Allow Invalid Dist 297 os: ubuntu-latest 298 compiler: clang-11 299 cxx-compiler: clang++-11 300 cmake-args: -DWITH_INFLATE_ALLOW_INVALID_DIST=ON 301 packages: llvm-11-tools 302 gcov-exec: llvm-cov-11 gcov 303 codecov: ubuntu_clang_inflate_allow_invalid_dist 304 305 - name: Ubuntu Clang Reduced Memory 306 os: ubuntu-latest 307 compiler: clang-11 308 cxx-compiler: clang++-11 309 cmake-args: -DWITH_REDUCED_MEM=ON 310 packages: llvm-11-tools 311 gcov-exec: llvm-cov-11 gcov 312 codecov: ubuntu_clang_reduced_mem 313 314 - name: Ubuntu Clang Memory Map 315 os: ubuntu-latest 316 compiler: clang-11 317 cxx-compiler: clang++-11 318 cflags: -DUSE_MMAP 319 packages: llvm-11-tools 320 gcov-exec: llvm-cov-11 gcov 321 codecov: ubuntu_clang_mmap 322 323 - name: Ubuntu Clang Debug 324 os: ubuntu-latest 325 compiler: clang-11 326 cxx-compiler: clang++-11 327 packages: llvm-11-tools 328 gcov-exec: llvm-cov-11 gcov 329 codecov: ubuntu_clang_debug 330 build-config: Debug 331 332 - name: Ubuntu Clang MSAN 333 os: ubuntu-latest 334 compiler: clang-11 335 cxx-compiler: clang++-11 336 cmake-args: -GNinja -DWITH_SANITIZER=Memory 337 packages: ninja-build llvm-11-tools 338 gcov-exec: llvm-cov-11 gcov 339 340 - name: Windows MSVC Win32 341 os: windows-latest 342 compiler: cl 343 cmake-args: -A Win32 344 345 - name: Windows MSVC Win64 346 os: windows-latest 347 compiler: cl 348 cmake-args: -A x64 349 350 - name: Windows MSVC ARM No Test 351 os: windows-latest 352 compiler: cl 353 cmake-args: -A ARM 354 355 - name: Windows MSVC ARM64 No Test 356 os: windows-latest 357 compiler: cl 358 cmake-args: -A ARM64 359 360 - name: Windows ClangCl Win32 361 os: windows-latest 362 cmake-args: -T ClangCl -A Win32 363 364 - name: Windows ClangCl Win64 365 os: windows-latest 366 cmake-args: -T ClangCl -A x64 367 368 - name: Windows GCC 369 os: windows-latest 370 compiler: gcc 371 cxx-compiler: g++ 372 cmake-args: -G Ninja 373 codecov: win64_gcc 374 375 - name: Windows GCC Compat No Opt 376 os: windows-latest 377 compiler: gcc 378 cxx-compiler: g++ 379 cmake-args: -G Ninja -DZLIB_COMPAT=ON -DWITH_NEW_STRATEGIES=OFF -DWITH_OPTIM=OFF 380 codecov: win64_gcc_compat_no_opt 381 382 - name: macOS Clang ASAN 383 os: macos-latest 384 compiler: clang 385 cxx-compiler: clang++ 386 cmake-args: -DWITH_SANITIZER=Address 387 codecov: macos_clang 388 389 - name: macOS GCC UBSAN 390 os: macos-latest 391 compiler: gcc-10 392 cxx-compiler: g++-10 393 cmake-args: -DWITH_SANITIZER=Undefined 394 packages: gcc@10 395 gcov-exec: gcov-10 396 codecov: macos_gcc 397 398 steps: 399 - name: Checkout repository 400 uses: actions/checkout@v2 401 402 - name: Checkout test corpora 403 uses: actions/checkout@v2 404 # Don't test against all corpora with MinGW due to Wine being unable to run parallel jobs 405 # without connection timeout. Without parallel jobs test runs using Wine take close to an hour. 406 if: contains(matrix.name, 'MinGW') == false 407 with: 408 repository: zlib-ng/corpora 409 path: test/data/corpora 410 411 - name: Add repositories (Wine) 412 if: contains(matrix.packages, 'wine') 413 run: | 414 sudo dpkg --add-architecture i386 415 416 - name: Install packages (Ubuntu) 417 if: runner.os == 'Linux' && matrix.packages 418 run: | 419 sudo apt-get update 420 sudo apt-get install -y --allow-downgrades ${{ matrix.packages }} 421 422 - name: Install packages (Windows) 423 if: runner.os == 'Windows' 424 run: | 425 choco install ninja ${{ matrix.packages }} --no-progress 426 427 - name: Install packages (macOS) 428 if: runner.os == 'macOS' 429 run: | 430 brew install ninja ${{ matrix.packages }} 431 env: 432 HOMEBREW_NO_INSTALL_CLEANUP: 1 433 434 - name: Initialize Wine 435 # Prevent parallel test jobs from initializing Wine at the same time 436 if: contains(matrix.packages, 'wine') 437 run: | 438 wineboot --init 439 440 - name: Compile LLVM C++ libraries (MSAN) 441 if: contains(matrix.name, 'MSAN') 442 run: | 443 git clone --depth=1 https://github.com/llvm/llvm-project --single-branch --branch llvmorg-11.0.0 444 cd llvm-project 445 mkdir build 446 cd build 447 cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" -DLLVM_USE_SANITIZER=MemoryWithOrigins -DLLVM_LIBC_ENABLE_LINTING=OFF 448 cmake --build . -- cxx cxxabi 449 echo "LLVM_BUILD_DIR=`pwd`" >> $GITHUB_ENV 450 env: 451 CC: ${{ matrix.compiler }} 452 CXX: ${{ matrix.cxx-compiler }} 453 454 - name: Generate project files 455 # Shared libraries turned off for qemu ppc* and sparc & reduce code coverage sources 456 run: | 457 mkdir ${{ matrix.build-dir || '.not-used' }} 458 cd ${{ matrix.build-dir || '.' }} 459 cmake ${{ matrix.build-src-dir || '.' }} ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=${{ matrix.build-config || 'Release' }} -DBUILD_SHARED_LIBS=OFF -DWITH_FUZZERS=ON ${{ matrix.codecov && '-DWITH_CODE_COVERAGE=ON' }} -DWITH_MAINTAINER_WARNINGS=ON 460 env: 461 CC: ${{ matrix.compiler }} 462 CXX: ${{ matrix.cxx-compiler }} 463 CFLAGS: ${{ matrix.cflags }} 464 LDFLAGS: ${{ matrix.ldflags }} 465 CI: true 466 467 - name: Compile source code 468 run: | 469 cd ${{ matrix.build-dir || '.' }} 470 cmake --build . --config ${{ matrix.build-config || 'Release' }} 471 472 - name: Run test cases 473 # Don't run tests on Windows ARM 474 if: runner.os != 'Windows' || contains(matrix.name, 'ARM') == false 475 run: | 476 cd ${{ matrix.build-dir || '.' }} 477 ctest --verbose -C Release --output-on-failure --max-width 120 -j ${{ matrix.parallels-jobs || '6' }} 478 env: 479 ASAN_OPTIONS: ${{ matrix.asan-options || 'verbosity=0' }}:abort_on_error=1:halt_on_error=1 480 MSAN_OPTIONS: ${{ matrix.msan-options || 'verbosity=0' }}:abort_on_error=1:halt_on_error=1 481 TSAN_OPTIONS: ${{ matrix.tsan-options || 'verbosity=0' }}:abort_on_error=1:halt_on_error=1 482 LSAN_OPTIONS: ${{ matrix.lsan-options || 'verbosity=0' }}:abort_on_error=1:halt_on_error=1 483 UBSAN_OPTIONS: ${{ matrix.ubsan-options || 'verbosity=0' }}:print_stacktrace=1:abort_on_error=1:halt_on_error=1 484 485 - name: Generate coverage report 486 if: matrix.codecov 487 shell: bash 488 run: | 489 python3 -u -m pip install --user gcovr==5.0 490 python3 -m gcovr --exclude-unreachable-branches --gcov-executable "${{ matrix.gcov-exec || 'gcov' }}" --root ${{ matrix.build-src-dir || '.' }} --xml --output coverage.xml -j 3 --verbose 491 492 - name: Upload coverage report 493 uses: codecov/codecov-action@v2 494 if: matrix.codecov && (env.CODECOV_TOKEN != '' || github.repository == 'zlib-ng/zlib-ng') 495 with: 496 token: ${{ secrets.CODECOV_TOKEN || 'e4fdf847-f541-4ab1-9d50-3d27e5913906' }} 497 flags: ${{ matrix.codecov }} 498 name: ${{ matrix.name }} 499 directory: ${{ matrix.build-src-dir || '.' }} 500 verbose: true 501 fail_ci_if_error: true 502 env: 503 CODECOV_TOKEN: "${{secrets.CODECOV_TOKEN}}" 504 505 - name: Upload build errors 506 uses: actions/upload-artifact@v2 507 if: failure() 508 with: 509 name: ${{ matrix.name }} (cmake) 510 path: | 511 **/CMakeFiles/CMakeOutput.log 512 **/CMakeFiles/CMakeError.log 513 **/Testing/Temporary/* 514 coverage.xml 515 retention-days: 30 516