From 0dfd312baa3cb12b997d64d4f2c3c79d79eb9c1c Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 18 Oct 2022 17:28:27 -0700 Subject: [PATCH 1/4] Try caching Windows Haders build. --- .github/workflows/windows.yml | 82 ++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 20 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f084fa5a..d9a60c74 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -3,15 +3,17 @@ name: Windows on: [push, pull_request] jobs: - msvc: + + headers: + name: Build and cache Headers runs-on: windows-2022 strategy: matrix: - VER: [v141, v142, v143] - EXT: [ON, OFF] - GEN: [Visual Studio 17 2022, Ninja Multi-Config] - BIN: [x64, x86] - STD: [90, 11, 17] + VER: [v143] + EXT: [ON] + GEN: [Visual Studio 17 2022] + BIN: [x64] + STD: [17] CMAKE: [3.22.0] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip @@ -21,16 +23,24 @@ jobs: NINJA_EXE: C:\Tools\Ninja\ninja.exe steps: - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v2 + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Checkout OpenCL-Headers + if: steps.headers.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: KhronosGroup/OpenCL-Headers path: external/OpenCL-Headers - name: Create Build Environment + if: steps.headers.outputs.cache-hit != 'true' shell: pwsh run: | Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip @@ -42,8 +52,9 @@ jobs: & ${env:CMAKE_EXE} --version & ${env:NINJA_EXE} --version + - name: Build & install OpenCL-Headers (MSBuild) - if: matrix.GEN == 'Visual Studio 17 2022' + if: steps.headers.outputs.cache-hit != 'true' shell: cmd run: | set C_FLAGS="/W4 /WX" @@ -51,18 +62,49 @@ jobs: %CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo - - name: Build & install OpenCL-Headers (Ninja Multi-Config) - if: matrix.GEN == 'Ninja Multi-Config' - shell: cmd + + msvc: + needs: [headers] + runs-on: windows-2022 + strategy: + matrix: + VER: [v141, v142, v143] + EXT: [ON, OFF] + GEN: [Visual Studio 17 2022, Ninja Multi-Config] + BIN: [x64, x86] + STD: [90, 11, 17] + CMAKE: [3.22.0] + env: + CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip + CMAKE_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\cmake.exe + CTEST_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\ctest.exe + NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip + NINJA_EXE: C:\Tools\Ninja\ninja.exe + + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v2 + + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Create Build Environment + shell: pwsh run: | - set C_FLAGS="/W4 /WX" - if /I "${{matrix.VER}}"=="v140" (set VER=14.0) - if /I "${{matrix.VER}}"=="v141" (set VER=14.1) - if /I "${{matrix.VER}}"=="v142" (set VER=14.2) - if /I "${{matrix.VER}}"=="v143" (set VER=14.3) - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% - %CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build - %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install -- -j%NUMBER_OF_PROCESSORS% + Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip + Expand-Archive ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip -DestinationPath C:\Tools\Kitware\CMake\ + Rename-Item C:\Tools\Kitware\CMake\* ${{matrix.CMAKE}} + Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip + Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath C:\Tools\Ninja\ + Remove-Item ~\Downloads\* + & ${env:CMAKE_EXE} --version + & ${env:NINJA_EXE} --version - name: Configure (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' From 946631eb1b7c27cc7eda942136279b913033520d Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 18 Oct 2022 20:05:35 -0700 Subject: [PATCH 2/4] Cache Headers for MacOS. --- .github/workflows/macos.yml | 58 +++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4144a2bb..4d4d7d98 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -3,33 +3,43 @@ name: MacOS on: [push, pull_request] jobs: - macos-gcc: + + headers: + name: Build and cache Headers runs-on: macos-latest strategy: matrix: - VER: [9, 10, 11] - EXT: [ON, OFF] - GEN: [Xcode, Ninja Multi-Config] - STD: [99, 11] # 90 results in errors + VER: [11] + EXT: [ON] + GEN: [Xcode] + STD: [11] # 90 results in errors steps: - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v2 + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Checkout OpenCL-Headers + if: steps.headers.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: KhronosGroup/OpenCL-Headers path: external/OpenCL-Headers - name: Create Build Environment + if: steps.headers.outputs.cache-hit != 'true' run: | cmake -E make_directory $GITHUB_WORKSPACE/build; cmake -E make_directory $GITHUB_WORKSPACE/install; if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; - # Install Ninja only if it's the selected generator and it's not available. - name: Build & install OpenCL-Headers + if: steps.headers.outputs.cache-hit != 'true' run: cmake -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS="-w" @@ -45,6 +55,36 @@ jobs: --config Release --parallel `sysctl -n hw.logicalcpu` + macos-gcc: + needs: [headers] + runs-on: macos-latest + strategy: + matrix: + VER: [9, 10, 11] + EXT: [ON, OFF] + GEN: [Xcode, Ninja Multi-Config] + STD: [99, 11] # 90 results in errors + + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v2 + + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Create Build Environment + run: | + cmake -E make_directory $GITHUB_WORKSPACE/build; + cmake -E make_directory $GITHUB_WORKSPACE/install; + if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; + # Install Ninja only if it's the selected generator and it's not available. + - name: Configure CMake # no -Werror during configuration because: # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] @@ -93,4 +133,4 @@ jobs: if: matrix.GEN == 'Ninja Multi-Config' shell: bash run: | - cmake --build $GITHUB_WORKSPACE/build --config Release --target install \ No newline at end of file + cmake --build $GITHUB_WORKSPACE/build --config Release --target install From d53346edd5dfd1eda0c724586afbabcc68ece00f Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 18 Oct 2022 20:40:10 -0700 Subject: [PATCH 3/4] Added Header cache for Linux. --- .github/workflows/linux.yml | 105 ++++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 34 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 32703836..0c8def82 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -3,29 +3,36 @@ name: Linux on: [push, pull_request] jobs: - cmake-minimum: + headers: + name: Build and cache Headers runs-on: ${{ matrix.OS }} strategy: matrix: - OS: [ubuntu-18.04] - COMPILER: [gcc-7, gcc-8, clang-8, clang-10] - EXT: [ON, OFF] + OS: [ubuntu-18.04, ubuntu-20.04] + COMPILER: [gcc] + EXT: [ON] GEN: [Unix Makefiles] - CONFIG: [Debug, Release] - STD: [99, 11] - BIN: [32, 64] - CMAKE: [3.1.3, 3.21.2] + CONFIG: [Release] + STD: [99] + BIN: [64] + CMAKE: [3.21.2] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest - steps: - - name: Checkout OpenCL-ICD-Loader - uses: actions/checkout@v2 + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Checkout OpenCL-Headers + if: steps.headers.outputs.cache-hit != 'true' uses: actions/checkout@v2 with: repository: KhronosGroup/OpenCL-Headers @@ -40,8 +47,7 @@ jobs: mkdir -p /opt/Kitware/CMake; wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake; mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} - # Install Ninja only if it's the selected generator and it's not available. - + - name: Build & install OpenCL-Headers run: $CMAKE_EXE -G "${{matrix.GEN}}" @@ -59,6 +65,50 @@ jobs: -- -j`nproc` + + cmake-minimum: + needs: [headers] + runs-on: ${{ matrix.OS }} + strategy: + matrix: + OS: [ubuntu-18.04] + COMPILER: [gcc-7, gcc-8, clang-8, clang-10] + EXT: [ON, OFF] + GEN: [Unix Makefiles] + CONFIG: [Debug, Release] + STD: [99, 11] + BIN: [32, 64] + CMAKE: [3.1.3, 3.21.2] + env: + CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz + CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake + CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest + + + steps: + - name: Checkout OpenCL-ICD-Loader + uses: actions/checkout@v2 + + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers + with: + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Create Build Environment + run: sudo apt-get update -q; + if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; + sudo apt install -y ${{matrix.COMPILER}}; + if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "gcc" ]]; then sudo apt install -y ${{matrix.COMPILER}}-multilib; fi; + if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "clang" ]]; then sudo apt install -y gcc-multilib ; fi; + mkdir -p /opt/Kitware/CMake; + wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake; + mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} + # Install Ninja only if it's the selected generator and it's not available. + - name: Configure shell: bash run: $CMAKE_EXE @@ -137,6 +187,7 @@ jobs: cmake-latest: + needs: [headers] runs-on: ${{ matrix.OS }} strategy: matrix: @@ -157,11 +208,14 @@ jobs: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v2 - - name: Checkout OpenCL-Headers - uses: actions/checkout@v2 + - uses: actions/cache@v2 + name: Restore Headers + id: headers + env: + cache-name: cache-headers with: - repository: KhronosGroup/OpenCL-Headers - path: external/OpenCL-Headers + path: external/OpenCL-Headers/install + key: ${{ runner.os }}-build-${{ env.cache-name }} - name: Create Build Environment run: sudo apt-get update -q; @@ -176,23 +230,6 @@ jobs: mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} # Install Ninja only if it's the selected generator and it's not available. - - name: Build & install OpenCL-Headers - run: $CMAKE_EXE - -G "${{matrix.GEN}}" - -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}" - -D CMAKE_C_COMPILER=${{matrix.COMPILER}} - -D CMAKE_C_STANDARD=${{matrix.STD}} - -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} - -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install - -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build - -S $GITHUB_WORKSPACE/external/OpenCL-Headers; - $CMAKE_EXE - --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build - --target install - --config Release - -- - -j`nproc` - - name: Configure shell: bash run: $CMAKE_EXE From 5eb5a5b9d2ac973a6fd2971b9a1ebcef9e1beb51 Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Tue, 18 Oct 2022 21:24:17 -0700 Subject: [PATCH 4/4] Refresh cache on Headers change. --- .github/workflows/linux.yml | 25 +++++++++++++++++++++---- .github/workflows/macos.yml | 16 +++++++++++++--- .github/workflows/windows.yml | 16 +++++++++++++--- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 0c8def82..dcda8a95 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -22,14 +22,19 @@ jobs: CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest steps: + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 - name: Restore Headers + name: Cache Headers id: headers env: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Checkout OpenCL-Headers if: steps.headers.outputs.cache-hit != 'true' @@ -39,6 +44,7 @@ jobs: path: external/OpenCL-Headers - name: Create Build Environment + if: steps.headers.outputs.cache-hit != 'true' run: sudo apt-get update -q; if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; sudo apt install -y ${{matrix.COMPILER}}; @@ -49,6 +55,7 @@ jobs: mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }} - name: Build & install OpenCL-Headers + if: steps.headers.outputs.cache-hit != 'true' run: $CMAKE_EXE -G "${{matrix.GEN}}" -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} @@ -89,6 +96,11 @@ jobs: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v2 + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 name: Restore Headers id: headers @@ -96,7 +108,7 @@ jobs: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Create Build Environment run: sudo apt-get update -q; @@ -208,6 +220,11 @@ jobs: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v2 + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 name: Restore Headers id: headers @@ -215,7 +232,7 @@ jobs: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Create Build Environment run: sudo apt-get update -q; diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4d4d7d98..5c1efd0e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -15,14 +15,19 @@ jobs: STD: [11] # 90 results in errors steps: + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 - name: Restore Headers + name: Cache Headers id: headers env: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Checkout OpenCL-Headers if: steps.headers.outputs.cache-hit != 'true' @@ -69,6 +74,11 @@ jobs: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v2 + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 name: Restore Headers id: headers @@ -76,7 +86,7 @@ jobs: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Create Build Environment run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d9a60c74..11cb0346 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -23,14 +23,19 @@ jobs: NINJA_EXE: C:\Tools\Ninja\ninja.exe steps: + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 - name: Restore Headers + name: Cache Headers id: headers env: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Checkout OpenCL-Headers if: steps.headers.outputs.cache-hit != 'true' @@ -85,6 +90,11 @@ jobs: - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v2 + - name: Get sha of Headers + id: get-sha + run: | + echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' ) + - uses: actions/cache@v2 name: Restore Headers id: headers @@ -92,7 +102,7 @@ jobs: cache-name: cache-headers with: path: external/OpenCL-Headers/install - key: ${{ runner.os }}-build-${{ env.cache-name }} + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }} - name: Create Build Environment shell: pwsh