ci: version the Windows deps cache key to drop pre-overhaul caches #278
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: Build Windows | |
| on: | |
| push: | |
| branches: [ master, development ] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| # The LLVM/Clang dev toolchain is provisioned by setup.ps1 itself | |
| # (LLVM.PREBUILT, see scripts/setup/setup_llvm.ps1) into deps/llvm-conda, | |
| # which the deps cache below picks up. | |
| - name: Setup sccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| variant: sccache | |
| key: ${{ github.job }}-${{ runner.os }} | |
| max-size: 2G | |
| - name: Cache AnyDSL toolchain (thorin/artic/runtime) | |
| uses: actions/cache@v4 | |
| with: | |
| path: deps | |
| # v2: setup.ps1 provisions LLVM into deps/llvm-conda itself; caches | |
| # from the setup-micromamba era bake dead env paths into the AnyDSL | |
| # cmake exports and must never be restored. | |
| key: anydsl-deps-v2-${{ runner.os }}-${{ hashFiles('scripts/setup/config.json', 'scripts/setup/*.ps1') }} | |
| restore-keys: | | |
| anydsl-deps-v2-${{ runner.os }}- | |
| - name: Cache CPM sources | |
| uses: actions/cache@v4 | |
| with: | |
| path: .cpm-cache | |
| key: cpm-${{ runner.os }}-${{ hashFiles('cmake/Dependencies.cmake') }} | |
| restore-keys: | | |
| cpm-${{ runner.os }}- | |
| - name: Generate CI setup config | |
| shell: pwsh | |
| run: | | |
| $cfg = Get-Content scripts/setup/config.json -Raw | ConvertFrom-Json | |
| # Keep the dependency tree inside the workspace so it can be cached. | |
| $cfg.LOCATION = "$env:GITHUB_WORKSPACE/deps" | |
| $cfg.CMAKE.EXTRA_ARGS += "-DCMAKE_C_COMPILER_LAUNCHER=sccache" | |
| $cfg.CMAKE.EXTRA_ARGS += "-DCMAKE_CXX_COMPILER_LAUNCHER=sccache" | |
| # zlib ships in the prebuilt LLVM env (LLVM.PREBUILT_PACKAGES), so skip | |
| # the flaky from-source build; setup_llvm.ps1 puts the env on | |
| # CMAKE_PREFIX_PATH and Ignis resolves it from there. | |
| $cfg.ZLIB.ENABLED = $false | |
| $cfg | ConvertTo-Json -Depth 16 | Set-Content scripts/setup/config.ci.json | |
| - name: Setup dependencies and build Ignis | |
| shell: pwsh | |
| run: | | |
| $env:CPM_SOURCE_CACHE = "$env:GITHUB_WORKSPACE/.cpm-cache" | |
| ./scripts/setup/setup.ps1 -config_file scripts/setup/config.ci.json | |
| - name: Run tests | |
| shell: pwsh | |
| run: ctest --test-dir build/Release --output-on-failure -E "(ignis_test_integrator)|(ignis_test_multiple_runtimes)" |