Native IO (#71) #559
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - 'releases/**' | |
| pull_request: | |
| env: | |
| OMPI_ALLOW_RUN_AS_ROOT: 1 | |
| OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 | |
| jobs: | |
| build_base_container: | |
| name: Build base container | |
| runs-on: self-hosted | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
| password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
| - name: Set base image hash | |
| run: | | |
| BASE_IMAGE_TAG=$(sha256sum scripts/ci/Dockerfile.base | cut -d " " -f1) | |
| echo "BASE_IMAGE_TAG=$BASE_IMAGE_TAG" >> $GITHUB_ENV | |
| - name: Build dependencies | |
| run: | | |
| if docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:${{ env.BASE_IMAGE_TAG }}; then | |
| echo "Base image exists, using the cache." | |
| else | |
| echo "Building base image..." | |
| docker build -f scripts/ci/Dockerfile.base -t ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:${{ env.BASE_IMAGE_TAG }} . | |
| docker push ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:${{ env.BASE_IMAGE_TAG }} | |
| docker tag ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:${{ env.BASE_IMAGE_TAG }} ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:latest | |
| docker push ${{ secrets.DOCKER_HUB_USERNAME }}/l3ster-ci:latest | |
| fi | |
| unit_tests_and_static_analysis: | |
| name: Static analysis and unit tests | |
| needs: build_base_container | |
| runs-on: self-hosted | |
| container: kubagalecki/l3ster-ci:latest | |
| env: | |
| BUILD_TYPE: Release | |
| TOOLCHAIN_PATH: ../cmake/toolchains/StaticAnalysis.cmake | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and run tests | |
| run: scripts/ci/build-and-run-tests.sh | |
| - name: Cleanup | |
| if: always() | |
| run: rm -rf build/ | |
| sanitizers: | |
| name: Sanitizers | |
| needs: unit_tests_and_static_analysis | |
| runs-on: self-hosted | |
| container: kubagalecki/l3ster-ci:latest | |
| env: | |
| BUILD_TYPE: ${{ matrix.build_type }} | |
| TOOLCHAIN_PATH: "../cmake/toolchains/${{ matrix.sanitizer }}Sanitizer.cmake" | |
| strategy: | |
| matrix: | |
| build_type: [ Debug, Release ] | |
| sanitizer: [ Address, UndefinedBehavior ] # Thread disabled, too many false positives with TBB | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and run tests | |
| run: scripts/ci/build-and-run-tests.sh | |
| continue-on-error: true # Allow sanitizers to fail | |
| - name: Cleanup | |
| if: always() | |
| run: rm -rf build/ | |
| deployment: | |
| name: Deployment tests | |
| needs: unit_tests_and_static_analysis | |
| runs-on: self-hosted | |
| container: kubagalecki/l3ster-ci:latest | |
| env: | |
| DEPLOYMENT_TESTS: true | |
| BUILD_TYPE: Release | |
| TOOLCHAIN_PATH: ../cmake/toolchains/StaticAnalysis.cmake | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and run tests | |
| run: scripts/ci/build-and-run-tests.sh | |
| - name: Cleanup | |
| if: always() | |
| run: rm -rf build/ | |
| examples: | |
| name: Build examples | |
| needs: unit_tests_and_static_analysis | |
| runs-on: self-hosted | |
| container: kubagalecki/l3ster-ci:latest | |
| env: | |
| BUILD_TYPE: Release | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build examples | |
| run: scripts/ci/build-examples.sh | |
| - name: Cleanup | |
| if: always() | |
| run: rm -rf examples/build/ | |
| coverage: | |
| name: Code coverage | |
| needs: [ sanitizers, deployment, examples ] | |
| runs-on: self-hosted | |
| container: kubagalecki/l3ster-ci:latest | |
| env: | |
| BUILD_TYPE: Debug | |
| TOOLCHAIN_PATH: ../cmake/toolchains/Coverage.cmake | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and run tests | |
| run: scripts/ci/build-and-run-tests.sh | |
| - name: Gather coverage results via gcovr | |
| run: | | |
| gcovr --verbose --xml --print-summary --exclude-unreachable-branches --exclude-throw-branches \ | |
| --root "$GITHUB_WORKSPACE" \ | |
| --exclude "$GITHUB_WORKSPACE/tests/" \ | |
| --output "$GITHUB_WORKSPACE/coverage_report.xml" \ | |
| "$GITHUB_WORKSPACE/build/tests/" | |
| - name: Cleanup | |
| if: always() | |
| run: rm -rf build/ | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| fail_ci_if_error: true | |
| verbose: true |