mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-07-21 15:30:33 +00:00
chore(ci): add compiler caching via sccache (#903)
This commit is contained in:
@@ -8,6 +8,11 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- "main"
|
- "main"
|
||||||
|
|
||||||
|
env:
|
||||||
|
SCCACHE_GHA_ENABLED: "on"
|
||||||
|
SCCACHE_BASEDIRS: ${{ github.workspace }}
|
||||||
|
SCCACHE_IGNORE_SERVER_IO_ERROR: "1"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-test-linux:
|
build-test-linux:
|
||||||
strategy:
|
strategy:
|
||||||
@@ -58,6 +63,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 24
|
node-version: 24
|
||||||
|
|
||||||
|
- name: Set up sccache
|
||||||
|
uses: mozilla-actions/[email protected]
|
||||||
|
with:
|
||||||
|
version: v0.15.0
|
||||||
|
|
||||||
- name: Premake generate
|
- name: Premake generate
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
@@ -73,6 +83,13 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
|
if [[ "${{ matrix.toolset }}" == "gcc" ]]; then
|
||||||
|
export CC="sccache gcc"
|
||||||
|
export CXX="sccache g++"
|
||||||
|
else
|
||||||
|
export CC="sccache clang"
|
||||||
|
export CXX="sccache clang++"
|
||||||
|
fi
|
||||||
[[ "${{ matrix.build_arch }}" == "x86" ]] && export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:$PKG_CONFIG_PATH || true
|
[[ "${{ matrix.build_arch }}" == "x86" ]] && export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:$PKG_CONFIG_PATH || true
|
||||||
echo "Package config path: $PKG_CONFIG_PATH"
|
echo "Package config path: $PKG_CONFIG_PATH"
|
||||||
scripts/build.sh release ${{ matrix.build_arch }}
|
scripts/build.sh release ${{ matrix.build_arch }}
|
||||||
@@ -111,6 +128,38 @@ jobs:
|
|||||||
- name: Add MSBuild to PATH
|
- name: Add MSBuild to PATH
|
||||||
uses: microsoft/[email protected]
|
uses: microsoft/[email protected]
|
||||||
|
|
||||||
|
- name: Set up sccache
|
||||||
|
uses: mozilla-actions/[email protected]
|
||||||
|
with:
|
||||||
|
version: v0.15.0
|
||||||
|
|
||||||
|
- name: Configure sccache for MSBuild
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||||
|
$installationPath = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
|
||||||
|
if (-not $installationPath) {
|
||||||
|
throw "Could not locate the Visual C++ tools"
|
||||||
|
}
|
||||||
|
|
||||||
|
$toolsVersionFile = Join-Path $installationPath "VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"
|
||||||
|
$toolsVersion = (Get-Content -Raw -LiteralPath $toolsVersionFile).Trim()
|
||||||
|
$targetArchitecture = "${{ matrix.build_arch }}"
|
||||||
|
$compilerDirectory = Join-Path $installationPath "VC\Tools\MSVC\$toolsVersion\bin\Hostx86\$targetArchitecture"
|
||||||
|
$compilerPath = Join-Path $compilerDirectory "cl.exe"
|
||||||
|
if (-not (Test-Path -LiteralPath $compilerPath)) {
|
||||||
|
throw "Could not locate cl.exe at $compilerPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
# A cl.exe-named copy enables sccache's compiler-proxy mode. The real
|
||||||
|
# compiler directory must also be on PATH so cache misses can run cl.exe.
|
||||||
|
$wrapperDirectory = Join-Path $env:RUNNER_TEMP "sccache-msvc"
|
||||||
|
$wrapperPath = Join-Path $wrapperDirectory "cl.exe"
|
||||||
|
New-Item -ItemType Directory -Path $wrapperDirectory -Force | Out-Null
|
||||||
|
Copy-Item -LiteralPath (Get-Command sccache.exe).Source -Destination $wrapperPath -Force
|
||||||
|
$compilerDirectory >> $env:GITHUB_PATH
|
||||||
|
"SCCACHE_CL_WRAPPER=$wrapperPath" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/[email protected]
|
uses: actions/[email protected]
|
||||||
with:
|
with:
|
||||||
@@ -131,7 +180,7 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
msbuild /m /p:Configuration=Release /p:Platform=${{ matrix.msbuild_config }} build
|
msbuild /m /p:TrackFileAccess=false /p:UseMultiToolTask=true "/p:CLToolExe=$env:SCCACHE_CL_WRAPPER" /p:Configuration=Release /p:Platform=${{ matrix.msbuild_config }} build
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
working-directory: ${{ github.workspace }}/build/lib/Release_${{ matrix.build_arch }}/tests
|
working-directory: ${{ github.workspace }}/build/lib/Release_${{ matrix.build_arch }}/tests
|
||||||
|
|||||||
Reference in New Issue
Block a user