Add options to save and load pipeline caches #3159
Workflow file for this run
This file contains 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: CI Build | |
# Perform CI builds for pull requests targeting the dev branches. | |
on: | |
pull_request: | |
branches: | |
- dev | |
jobs: | |
linux: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Ubuntu GCC Release", | |
os: ubuntu-latest, | |
artifact: "gfxreconstruct-dev-ubuntu-gcc-release", | |
type: "release", | |
build_dir: "build", | |
cc: "gcc", cxx: "g++" | |
} | |
- { | |
name: "Ubuntu GCC Debug", | |
os: ubuntu-latest, | |
artifact: "gfxreconstruct-dev-ubuntu-gcc-debug", | |
type: "debug", | |
build_dir: "dbuild", | |
cc: "gcc", cxx: "g++" | |
} | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libx11-xcb-dev libxcb-keysyms1-dev libwayland-dev libxrandr-dev liblz4-dev libzstd-dev | |
- uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: 3.16.3 | |
- name: Run build script | |
run: | | |
if [ "${{ matrix.config.type }}" == "release" ] | |
then | |
clang-format --version # A check for version 9 should be added. | |
git fetch origin ${{ github.base_ref }} # Fetch target branch to FETCH_HEAD for code style check. | |
python3 scripts/build.py --config ${{ matrix.config.type }} --check-code-style-base FETCH_HEAD --parallel 0 | |
python3 framework/generated/generate_vulkan.py # check generated code isn't out of date | |
git diff --exit-code | |
else | |
python3 scripts/build.py --config ${{ matrix.config.type }} --skip-check-code-style --parallel 0 | |
fi | |
- name: Prepare artifacts | |
run: | | |
cp LICENSE.txt ${{ matrix.config.build_dir }}/linux/x64/output/bin/ | |
cp LICENSE_ThirdParty.txt ${{ matrix.config.build_dir }}/linux/x64/output/bin/ | |
cp USAGE_desktop_Vulkan.md ${{ matrix.config.build_dir }}/linux/x64/output/bin/ | |
cp layer/vk_layer_settings.txt ${{ matrix.config.build_dir }}/linux/x64/output/bin/ | |
mv ${{ matrix.config.build_dir }}/linux/x64/output/bin gfxreconstruct-dev | |
mv ${{ matrix.config.build_dir }}/linux/x64/output/lib*/*.so gfxreconstruct-dev/ | |
mv ${{ matrix.config.build_dir }}/linux/x64/output/share/vulkan/explicit_layer.d/*.json gfxreconstruct-dev/ | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.config.artifact }} | |
path: ./gfxreconstruct-dev | |
windows: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Windows MSVC Release", | |
os: windows-latest, | |
artifact: "gfxreconstruct-dev-windows-msvc-release", | |
type: "release", | |
build_dir: "build", | |
cc: "cl", cxx: "cl" | |
} | |
- { | |
name: "Windows MSVC Debug", | |
os: windows-latest, | |
artifact: "gfxreconstruct-dev-windows-msvc-debug", | |
type: "debug", | |
build_dir: "dbuild", | |
cc: "cl", cxx: "cl" | |
} | |
steps: | |
- name: Require Python 3.10 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Install Ply Python Module | |
run: pip install ply | |
- name: Run with VsDevCmd | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Install SDK 20348 | |
uses: GuillaumeFalourd/setup-windows10-sdk-action@v2 | |
with: | |
sdk-version: 20348 | |
- name: Set WindowsSDKVersion | |
run: | |
echo ("WindowsSDKVersion=10.0.20348.0\") >> $env:GITHUB_ENV | |
- name: Clone repository from merge of PR branch and dev branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Check generated code | |
run: | | |
python3 framework/generated/generate_dx12.py # check generated code isn't out of date | |
git diff --exit-code | |
- name: Run build script | |
run: | | |
python scripts\build.py --skip-check-code-style --config ${{ matrix.config.type }} --parallel 0 | |
- name: Prepare artifacts | |
run: | | |
copy LICENSE.txt ${{ matrix.config.build_dir }}\windows\x64\output\bin\ | |
copy LICENSE_ThirdParty.txt ${{ matrix.config.build_dir }}\windows\x64\output\bin\ | |
copy USAGE_desktop_D3D12.md ${{ matrix.config.build_dir }}\windows\x64\output\bin\ | |
copy USAGE_desktop_Vulkan.md ${{ matrix.config.build_dir }}\windows\x64\output\bin\ | |
copy layer\vk_layer_settings.txt ${{ matrix.config.build_dir }}\windows\x64\output\bin\ | |
move ${{ matrix.config.build_dir }}\windows\x64\output\bin gfxreconstruct-dev | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.config.artifact }} | |
path: .\gfxreconstruct-dev | |
macOS: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "macOS Release", | |
os: macos-latest, | |
artifact: "gfxreconstruct-dev-macOS-release", | |
type: "release", | |
build_dir: "build" | |
} | |
- { | |
name: "macOS Debug", | |
os: macos-latest, | |
artifact: "gfxreconstruct-dev-macOS-debug", | |
type: "debug", | |
build_dir: "dbuild" | |
} | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Cache dependencies | |
id: cache-deps | |
uses: actions/cache@v3 | |
with: | |
path: ~/deps | |
key: ${{ matrix.config.os }} deps ${{ hashFiles('.github/workflows/scripts/build-dependencies-macos.sh') }} | |
- name: Build dependencies | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
run: .github/workflows/scripts/build-dependencies-macos.sh | |
- name: Run build script | |
run: | | |
python3 scripts/build.py --skip-check-code-style --config ${{ matrix.config.type }} --cmake-extra "CMAKE_PREFIX_PATH=$HOME/deps" --cmake-extra CMAKE_OSX_DEPLOYMENT_TARGET=11.0 --parallel 0 | |
- name: Prepare artifacts | |
run: | | |
cp LICENSE.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/ | |
cp LICENSE_ThirdParty.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/ | |
cp USAGE_desktop_Vulkan.md ${{ matrix.config.build_dir }}/darwin/universal/output/bin/ | |
cp layer/vk_layer_settings.txt ${{ matrix.config.build_dir }}/darwin/universal/output/bin/ | |
mv ${{ matrix.config.build_dir }}/darwin/universal/output/bin gfxreconstruct-dev | |
mv ${{ matrix.config.build_dir }}/darwin/universal/output/lib*/*.dylib gfxreconstruct-dev/ | |
mv ${{ matrix.config.build_dir }}/darwin/universal/output/share/vulkan/explicit_layer.d/*.json gfxreconstruct-dev/ | |
# GitHub's artifact uploader doesn't preserve permissions, so zip everything ourselves | |
# This will result in a zip in a zip, but Finder's unzip will conveniently unzip both at once, so it's not too bad | |
cd gfxreconstruct-dev | |
zip -r9 "../${{ matrix.config.artifact }}.zip" * | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.config.artifact }} | |
path: ${{ matrix.config.artifact }}.zip | |
android: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "Android Debug", | |
os: ubuntu-latest, | |
type: "debug", | |
artifact: "gfxreconstruct-dev-android-debug" | |
} | |
- { | |
name: "Android Release", | |
os: ubuntu-latest, | |
type: "release", | |
artifact: "gfxreconstruct-dev-android-release" | |
} | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Update submodules | |
run: | | |
git submodule update --init | |
- name: Set up Java | |
uses: "actions/setup-java@v4" | |
with: | |
java-version: 17 | |
distribution: "temurin" | |
- name: Gradle build | |
run: | | |
cd android | |
if [ "${{ matrix.config.type }}" == "release" ] | |
then | |
sh gradlew assembleRelease -Parm64-v8a | |
else | |
sh gradlew assembleDebug -Parm64-v8a | |
fi | |
- name: Prepare artifacts | |
run: | | |
mkdir gfxreconstruct-dev | |
mkdir gfxreconstruct-dev/layer | |
mkdir gfxreconstruct-dev/tools | |
cp LICENSE.txt gfxreconstruct-dev/ | |
cp LICENSE_ThirdParty.txt gfxreconstruct-dev/ | |
cp USAGE_android.md gfxreconstruct-dev/ | |
cp layer/vk_layer_settings.txt gfxreconstruct-dev/ | |
if [ "${{ matrix.config.type }}" == "release" ] | |
then | |
cp -r android/layer/build/intermediates/cxx/RelWithDebInfo/*/obj/arm64-v8a gfxreconstruct-dev/layer/ | |
else | |
cp android/tools/replay/build/outputs/apk/debug/replay-debug.apk gfxreconstruct-dev/tools/ | |
fi | |
cp android/scripts/gfxrecon.py gfxreconstruct-dev/tools/ | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.config.artifact }} | |
path: ./gfxreconstruct-dev |