Build Actions Cache #1
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 Actions Cache | |
| on: | |
| workflow_dispatch: # allows manual triggering | |
| workflow_call: # reusable | |
| schedule: | |
| - cron: '0 * * * *' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| ubuntu-24-vulkan-cache: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Get latest Vulkan SDK version | |
| id: vulkan_sdk_version | |
| run: | | |
| echo "VULKAN_SDK_VERSION=$(curl https://vulkan.lunarg.com/sdk/latest/linux.txt)" >> "$GITHUB_ENV" | |
| - name: Cache Vulkan SDK | |
| id: cache_vulkan_sdk | |
| uses: actions/cache@v4 | |
| with: | |
| path: ./vulkan_sdk | |
| key: vulkan-sdk-${{ env.VULKAN_SDK_VERSION }}-${{ runner.os }} | |
| - name: Install Vulkan SDK | |
| if: steps.cache_vulkan_sdk.outputs.cache-hit != 'true' | |
| id: vulkan_sdk_install | |
| run: | | |
| mkdir -p vulkan_sdk | |
| cd vulkan_sdk | |
| curl --no-progress-meter https://sdk.lunarg.com/sdk/download/latest/linux/vulkan_sdk.tar.xz | tar -Jx --strip-components=1 | |
| ubuntu-24-spacemit-cache: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| SPACEMIT_IME_TOOLCHAIN_VERSION: "1.1.2" | |
| steps: | |
| - name: Cache SpacemiT Toolchain | |
| uses: actions/cache@v4 | |
| id: cache-spacemit-ime-cross-toolchain | |
| with: | |
| path: ./spacemit-toolchain | |
| key: spacemit-ime-toolchain-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}-${{ runner.os }} | |
| - name: Setup SpacemiT Toolchain | |
| if: steps.cache-spacemit-ime-cross-toolchain.outputs.cache-hit != 'true' | |
| run: | | |
| mkdir -p spacemit-toolchain | |
| cd spacemit-toolchain | |
| curl --no-progress-meter https://archive.spacemit.com/toolchain/spacemit-toolchain-linux-glibc-x86_64-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}.tar.xz | tar -Jx --strip-components=1 | |
| windows-2022-rocm-cache: | |
| runs-on: windows-2022 | |
| env: | |
| # The ROCm version must correspond to the version used in the HIP SDK. | |
| ROCM_VERSION: "6.4.2" | |
| HIPSDK_INSTALLER_VERSION: "25.Q3" | |
| steps: | |
| - name: Cache ROCm Installation | |
| id: cache-rocm | |
| uses: actions/cache@v4 | |
| with: | |
| path: C:\Program Files\AMD\ROCm | |
| key: rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }} | |
| - name: Install ROCm | |
| if: steps.cache-rocm.outputs.cache-hit != 'true' | |
| id: depends | |
| run: | | |
| $ErrorActionPreference = "Stop" | |
| write-host "Downloading AMD HIP SDK Installer" | |
| Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-${{ env.HIPSDK_INSTALLER_VERSION }}-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe" | |
| write-host "Installing AMD HIP SDK" | |
| $proc = Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -PassThru | |
| $completed = $proc.WaitForExit(600000) | |
| if (-not $completed) { | |
| Write-Error "ROCm installation timed out after 10 minutes. Killing the process" | |
| $proc.Kill() | |
| exit 1 | |
| } | |
| if ($proc.ExitCode -ne 0) { | |
| Write-Error "ROCm installation failed with exit code $($proc.ExitCode)" | |
| exit 1 | |
| } | |
| write-host "Completed AMD HIP SDK installation" | |
| - name: Verify ROCm | |
| id: verify | |
| run: | | |
| # Find and test ROCm installation | |
| $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1 | |
| if (-not $clangPath) { | |
| Write-Error "ROCm installation not found" | |
| exit 1 | |
| } | |
| & $clangPath.FullName --version |