| # Copyright (c) 2020 Project CHIP Authors | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| name: Unit / Integration Tests | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - 'v*-branch' | |
| pull_request: | |
| merge_group: | |
| concurrency: | |
| group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Builds and runs the host unit-test suite with the PSA and mbedTLS crypto backends. | |
| # See docs/ci-cd/host_unit_tests.md for which crypto backends run on PRs, pushes and nightly. | |
| crypto_backend_unit_tests: | |
| name: Crypto Backend Unit Tests (PSA, mbedTLS) | |
| if: github.actor != 'restyled-io[bot]' | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/project-chip/chip-build:215 | |
| volumes: | |
| - "/:/runner-root-volume" | |
| - "/tmp/log_output:/tmp/test_logs" | |
| options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| # Runs before bootstrap so runs that do not match the filter skip the whole job body. | |
| - name: Detect changed paths | |
| uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4 | |
| id: changed_paths | |
| with: | |
| filters: | | |
| # PSA on Linux is provided by the mbedTLS library, so both backends share one filter. | |
| crypto: | |
| - 'src/credentials/**' | |
| - 'src/crypto/**' | |
| - 'src/pw_backends/**' | |
| - 'third_party/pigweed/**' | |
| - 'third_party/mbedtls/**' | |
| - '.github/workflows/unit_integration_test.yaml' | |
| - name: Checkout submodules & Bootstrap | |
| if: steps.changed_paths.outputs.crypto == 'true' | |
| uses: ./.github/actions/checkout-submodules-and-bootstrap | |
| with: | |
| platform: linux | |
| bootstrap-log-name: bootstrap-logs-unittest-crypto-backends | |
| - name: Build and run PSA unit tests (ASan) | |
| if: steps.changed_paths.outputs.crypto == 'true' | |
| run: | | |
| ./scripts/run_in_build_env.sh \ | |
| "./scripts/build/build_examples.py --target linux-x64-tests-psa-asan-clang build" \ | |
| && rm -rf out/linux-x64-tests-psa-asan-clang | |
| - name: Build and run mbedTLS unit tests (ASan) | |
| if: steps.changed_paths.outputs.crypto == 'true' | |
| run: | | |
| ./scripts/run_in_build_env.sh \ | |
| "./scripts/build/build_examples.py --target linux-x64-tests-mbedtls-asan-clang build" \ | |
| && rm -rf out/linux-x64-tests-mbedtls-asan-clang | |
| - name: Notify Slack on Failure | |
| if: failure() | |
| uses: ./.github/actions/notify-slack-failure | |
| with: | |
| slack-webhook: ${{ secrets.SWTT_SLACK_WEBHOOK }} |