Skip to content

Commit 0de67d6

Browse files
authored
Use a cache in GitHub workflow instead of downloading Vulkan SDK with every CI run (#491)
1 parent f0dc115 commit 0de67d6

File tree

3 files changed

+53
-38
lines changed

3 files changed

+53
-38
lines changed

.github/workflows/linux.yaml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build code on Linux
1+
name: Build code
22

33
on:
44
push:
@@ -23,26 +23,33 @@ jobs:
2323
steps:
2424
- uses: actions/checkout@v4
2525

26+
- name: Set Vulkan SDK Version
27+
id: set-version
28+
run: echo "VULKAN_SDK_VERSION=1.3.283.0" >> $GITHUB_ENV
29+
2630
- name: Create Build Environment
2731
run: |
2832
sudo apt update
2933
${{matrix.install}}
3034
cmake -E make_directory ${{runner.workspace}}/build
3135
32-
- name: Prepare Vulkan SDK
33-
shell: bash
36+
- name: Check for Vulkan SDK Cache
37+
id: cache-vulkan
38+
uses: actions/cache@v4
39+
with:
40+
path: vulkan_sdk
41+
key: vulkan-sdk-${{env.VULKAN_SDK_VERSION}}
42+
43+
- name: Download Vulkan SDK
44+
if: steps.cache-vulkan.outputs.cache-hit != 'true'
3445
run: |
35-
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/1.4.309.0/linux/vulkansdk-linux-x86_64-1.4.309.0.tar.xz
46+
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/${{env.VULKAN_SDK_VERSION}}/linux/vulkansdk-linux-x86_64-${{env.VULKAN_SDK_VERSION}}.tar.xz
3647
mkdir -p vulkan_sdk
3748
tar xf vulkansdk.tar.xz -C vulkan_sdk
38-
rm -rf vulkansdk.tar.xz
39-
40-
export VULKAN_SDK=$GITHUB_WORKSPACE/vulkan_sdk/1.4.309.0/x86_64
41-
export PATH=$VULKAN_SDK/bin:$PATH
42-
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
43-
export VK_ICD_FILENAMES=$VULKAN_SDK/etc/vulkan/icd.d
44-
export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/layer.d
4549
50+
- name: Set environment variables
51+
run: |
52+
export VULKAN_SDK=$GITHUB_WORKSPACE/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64
4653
echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV
4754
echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
4855
echo "LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV

.github/workflows/static_code_analysis.yaml

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Static code analysis (clang-tidy)
1+
name: Static code analysis
22

33
on:
44
push:
@@ -12,39 +12,38 @@ jobs:
1212
steps:
1313
- uses: actions/checkout@v4
1414

15-
# Cache Vulkan SDK
16-
- name: Cache Vulkan SDK
17-
id: cache-vulkan
18-
uses: actions/cache@v4
19-
with:
20-
path: vulkan_sdk
21-
key: vulkan-sdk-1.4.309.0
15+
- name: Set Vulkan SDK Version
16+
id: set-version
17+
run: echo "VULKAN_SDK_VERSION=1.3.283.0" >> $GITHUB_ENV
2218

23-
# Install system dependencies
2419
- name: Install system dependencies
2520
run: |
2621
sudo apt update
2722
sudo apt install -y clang-15 clang-tidy-15 cmake parallel libc++-15-dev libc++abi-15-dev
2823
29-
# Download Vulkan SDK only if not cached
24+
- name: Check for Vulkan SDK Cache
25+
id: cache-vulkan
26+
uses: actions/cache@v4
27+
with:
28+
path: vulkan_sdk
29+
key: vulkan-sdk-${{env.VULKAN_SDK_VERSION}}
30+
3031
- name: Download Vulkan SDK
3132
if: steps.cache-vulkan.outputs.cache-hit != 'true'
3233
run: |
33-
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/1.4.309.0/linux/vulkansdk-linux-x86_64-1.4.309.0.tar.xz
34+
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/${{env.VULKAN_SDK_VERSION}}/linux/vulkansdk-linux-x86_64-${{env.VULKAN_SDK_VERSION}}.tar.xz
3435
mkdir -p vulkan_sdk
3536
tar xf vulkansdk.tar.xz -C vulkan_sdk
3637
37-
# Set environment variables for Clang and Vulkan SDK
3838
- name: Set environment variables
3939
run: |
4040
echo "CLANG_TIDY=clang-tidy-15" >> $GITHUB_ENV
41-
echo "VULKAN_SDK=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64" >> $GITHUB_ENV
42-
echo "PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/bin:$PATH" >> $GITHUB_ENV
43-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
44-
echo "VK_ICD_FILENAMES=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/etc/vulkan/icd.d" >> $GITHUB_ENV
45-
echo "VK_LAYER_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/1.4.309.0/x86_64/etc/vulkan/layer.d" >> $GITHUB_ENV
41+
echo "VULKAN_SDK=${GITHUB_WORKSPACE}/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64" >> $GITHUB_ENV
42+
echo "PATH=${GITHUB_WORKSPACE}/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64/bin:$PATH" >> $GITHUB_ENV
43+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
44+
echo "VK_ICD_FILENAMES=${GITHUB_WORKSPACE}/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64/etc/vulkan/icd.d" >> $GITHUB_ENV
45+
echo "VK_LAYER_PATH=${GITHUB_WORKSPACE}/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64/etc/vulkan/layer.d" >> $GITHUB_ENV
4646
47-
# Configure the project with CMake
4847
- name: Configure with CMake
4948
run: |
5049
cmake -S . -B build \
@@ -53,15 +52,13 @@ jobs:
5352
-DCMAKE_C_COMPILER=clang-15 \
5453
-DVMA_BUILD_SAMPLES=YES
5554
56-
# List files to analyze
5755
- name: Check the files found for clang-tidy
5856
run: |
5957
find src include \
6058
-path '*/_deps/*' -prune -o \
6159
-path '*/build/*' -prune -o \
6260
\( -name '*.cpp' -o -name '*.hpp' \) -print
6361
64-
# Run clang-tidy in parallel
6562
- name: Run clang-tidy
6663
run: |
6764
find src include \
@@ -71,7 +68,6 @@ jobs:
7168
parallel -0 clang-tidy -p build {} |
7269
tee output || true
7370
74-
# Summarize warnings
7571
- name: Summarize clang-tidy warnings
7672
run: |
7773
grep -hEo '\[[a-z0-9]+-[a-z0-9-]+\]' output \

.github/workflows/windows.yaml

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77

88
env:
99
VMA_VULKAN_VERSION: "1.3.283.0"
10-
VMA_VULKAN_SDK_PATH: "$GITHUB_WORKSPACE/../vulkan_sdk/"
10+
VMA_VULKAN_SDK_PATH: ${{ github.workspace }}/vulkan_sdk
1111

1212
jobs:
1313
windows:
@@ -33,14 +33,26 @@ jobs:
3333
}
3434

3535
steps:
36-
- name: Checkout
37-
uses: actions/checkout@v4
36+
- uses: actions/checkout@v4
3837

39-
- name: Install Vulkan SDK
38+
- name: Check for Vulkan SDK Cache
39+
id: cache-vulkan
40+
uses: actions/cache@v4
41+
with:
42+
path: ${{ env.VMA_VULKAN_SDK_PATH }}
43+
key: vulkan-sdk-${{ env.VMA_VULKAN_VERSION }}
44+
45+
- name: Download Vulkan SDK
46+
if: steps.cache-vulkan.outputs.cache-hit != 'true'
4047
shell: pwsh
4148
run: |
42-
curl -LS -o vulkansdk.exe https://sdk.lunarg.com/sdk/download/${{ env.VMA_VULKAN_VERSION }}/windows/VulkanSDK-${{ env.VMA_VULKAN_VERSION }}-Installer.exe
43-
7z x vulkansdk.exe -o"${{ env.VMA_VULKAN_SDK_PATH }}"
49+
if (-Not (Test-Path ${{ env.VMA_VULKAN_SDK_PATH }})) {
50+
Write-Host "Vulkan SDK not found in cache. Downloading..."
51+
curl -LS -o vulkansdk.exe https://sdk.lunarg.com/sdk/download/${{ env.VMA_VULKAN_VERSION }}/windows/VulkanSDK-${{ env.VMA_VULKAN_VERSION }}-Installer.exe
52+
7z x vulkansdk.exe -o"${{ env.VMA_VULKAN_SDK_PATH }}"
53+
} else {
54+
Write-Host "Using cached Vulkan SDK"
55+
}
4456
4557
- name: Configure CMake
4658
shell: pwsh

0 commit comments

Comments
 (0)