| # Copyright 2024 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| name: CI - Linux x64 clang TSan | |
| on: | |
| schedule: | |
| # Weekday mornings at 09:15 UTC = 01:15 PST (UTC - 8). | |
| - cron: "15 9 * * 1-5" | |
| workflow_dispatch: | |
| workflow_call: | |
| jobs: | |
| linux_x64_clang_tsan: | |
| if: ${{ github.repository_owner == 'iree-org' || github.event_name != 'schedule' }} | |
| runs-on: ${{ github.repository_owner == 'iree-org' && 'azure-linux-scale' || 'ubuntu-24.04' }} | |
| container: | |
| image: ghcr.io/iree-org/cpubuilder_ubuntu_jammy@sha256:78a558b999b230f7e1da376639e14b44f095f30f1777d6a272ba48c0bbdd4ccb | |
| # TSan in particular needs some settings that this option includes: | |
| # * https://github.com/google/sanitizers/issues/1716 | |
| # * https://security.stackexchange.com/q/214923 | |
| # Note that we are not using Docker for sandboxing. If we were, this | |
| # would *not* be safe. | |
| options: --privileged | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: "Checking out repository" | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: true | |
| - name: Install Python requirements | |
| run: | | |
| python3 -m pip install -r ./runtime/bindings/python/iree/runtime/build_requirements.txt | |
| python3 -m pip install -r ./build_tools/github_actions/ci_requirements.txt | |
| - name: Build and test with TSan | |
| env: | |
| # Use a modern clang explicitly. | |
| CC: clang-19 | |
| CXX: clang++-19 | |
| SCCACHE_AZURE_CONNECTION_STRING: "${{ secrets.AZURE_CCACHE_CONNECTION_STRING }}" | |
| SCCACHE_AZURE_BLOB_CONTAINER: ccache-container | |
| SCCACHE_CACHE_ZSTD_LEVEL: 10 | |
| SCCACHE_AZURE_KEY_PREFIX: "ci_linux_x64_clang_tsan" | |
| run: | | |
| source build_tools/cmake/setup_sccache.sh | |
| ./build_tools/cmake/build_and_test_tsan.sh | |
| sccache --show-stats | |
| - name: Post to Discord on Failure | |
| uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0 | |
| if: failure() && github.ref_name == 'main' && github.repository_owner == 'iree-org' | |
| with: | |
| webhook: ${{ secrets.DISCORD_WEBHOOK }} | |
| description: "The ${{ github.workflow }} workflow failed" | |
| url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}" |