default: timeout: 2h workflow: rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_TAG - if: $CI_COMMIT_REF_PROTECTED == "true" test:linux: image: $image before_script: - ./ci/install-docker-dependencies.sh script: - useradd builder --create-home - chown -R builder "${CI_PROJECT_DIR}" - sudo --preserve-env --set-home --user=builder ./ci/run-build-and-tests.sh after_script: - | if test "$CI_JOB_STATUS" != 'success' then sudo --preserve-env --set-home --user=builder ./ci/print-test-failures.sh fi parallel: matrix: - jobname: linux-sha256 image: ubuntu:latest CC: clang - jobname: linux-gcc image: ubuntu:20.04 CC: gcc CC_PACKAGE: gcc-8 - jobname: linux-TEST-vars image: ubuntu:20.04 CC: gcc CC_PACKAGE: gcc-8 - jobname: linux-gcc-default image: ubuntu:latest CC: gcc - jobname: linux-leaks image: ubuntu:latest CC: gcc - jobname: linux-asan-ubsan image: ubuntu:latest CC: clang - jobname: pedantic image: fedora:latest - jobname: linux-musl image: alpine:latest artifacts: paths: - t/failed-test-artifacts when: on_failure test:osx: image: $image tags: - saas-macos-medium-m1 variables: TEST_OUTPUT_DIRECTORY: "/Volumes/RAMDisk" before_script: # Create a 4GB RAM disk that we use to store test output on. This small hack # significantly speeds up tests by more than a factor of 2 because the # macOS runners use network-attached storage as disks, which is _really_ # slow with the many small writes that our tests do. - sudo diskutil apfs create $(hdiutil attach -nomount ram://8192000) RAMDisk - ./ci/install-dependencies.sh script: - ./ci/run-build-and-tests.sh after_script: - | if test "$CI_JOB_STATUS" != 'success' then ./ci/print-test-failures.sh mv "$TEST_OUTPUT_DIRECTORY"/failed-test-artifacts t/ fi parallel: matrix: - jobname: osx-clang image: macos-13-xcode-14 CC: clang artifacts: paths: - t/failed-test-artifacts when: on_failure static-analysis: image: ubuntu:22.04 variables: jobname: StaticAnalysis before_script: - ./ci/install-docker-dependencies.sh script: - ./ci/run-static-analysis.sh - ./ci/check-directional-formatting.bash