Build-CI #1707
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
# Main Build CI. This compiles TRAP™ for Windows and Linux (Ubuntu) | |
name: Build-CI | |
# Controls when the workflow will run | |
on: | |
# Run on all pull requests | |
pull_request: | |
# Run on main, master and dev branches | |
push: | |
branches: [ main, master, dev ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
build-linux-gcc-14: | |
name: Build Linux GCC 14 | |
runs-on: [self-hosted, Linux, X64, ubuntu, "24.10", cpu] | |
env: | |
CC: gcc-14 | |
CXX: g++-14 | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Retrieve keys for cache | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
shell: bash | |
id: cache-keys | |
run: | | |
echo "Box2D=$(git -C Dependencies/Box2D rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "Catch2=$(git -C Dependencies/Catch2 rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "fmt=$(git -C Dependencies/fmt rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "GLSLang=$(git -C Dependencies/GLSLang rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGui=$(git -C Dependencies/ImGui rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGuizmo=$(git -C Dependencies/ImGuizmo rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "libpng=$(git -C Dependencies/libpng rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ModernDialogs=$(git -C Dependencies/ModernDialogs rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "QuiteOKImage=$(git -C Dependencies/QuiteOKImage rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "SPIRVCross=$(git -C Dependencies/SPIRV-Cross rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "TracyClient=$(git -C Dependencies/Tracy rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "YAMLCpp=$(git -C Dependencies/YAMLCpp rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "zlib=$(git -C Dependencies/zlib rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
- name: Restore Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Box2D/ | |
- name: Restore Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Catch2/ | |
- name: Restore fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/fmt/ | |
- name: Restore GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/GLSLang/ | |
- name: Restore ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGui/ | |
- name: Restore ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGuizmo/ | |
- name: Restore libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/libpng/ | |
- name: Restore ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ModernDialogs/ | |
- name: Restore QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/QuiteOKImage/ | |
- name: Restore SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/SPIRV-Cross/ | |
- name: Restore TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/TracyClient/ | |
- name: Restore YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/YAMLCpp/ | |
- name: Restore zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/zlib/ | |
- name: Add toolchain ppa | |
run: sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/ppa | |
- name: Update package list | |
run: sudo apt update | |
- name: Install dependencies | |
run: sudo apt install -y g++-14 mold xorg-dev libwayland-dev libxkbcommon-dev wayland-protocols ninja-build | |
- name: Make python3 available as python | |
run: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 | |
- name: Make pip3 available as pip | |
run: sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10 | |
- name: Make g++-14 available as g++ | |
run: sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 10 | |
- name: Make gcc-14 available as gcc | |
run: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 10 | |
- name: Make scripts and premake executable | |
run: | | |
chmod +x libs/premake5/linux/premake5 | |
chmod +x GeneratorScripts/GenerateProjectNinjaGCC.sh | |
- name: Generate Ninja files | |
run: | | |
cd GeneratorScripts/ | |
RUN_CICD_PIPELINE=1 ./GenerateProjectNinjaGCC.sh | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: ninja Release -j $(nproc) | |
- name: Save Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Box2D/./ | |
- name: Save Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Catch2/./ | |
- name: Save fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/fmt/./ | |
- name: Save GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/GLSLang/./ | |
- name: Save ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGui/./ | |
- name: Save ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGuizmo/./ | |
- name: Save libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/libpng/./ | |
- name: Save ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ModernDialogs/./ | |
- name: Save QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/QuiteOKImage/./ | |
- name: Save SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/SPIRV-Cross/./ | |
- name: Save TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/TracyClient/./ | |
- name: Save YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/YAMLCpp/./ | |
- name: Save zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/zlib/./ | |
- name: Finalize data for artifact | |
run: | | |
cp -r Games/Headless-Tests/Assets bin/Release-linux-x86_64/Games/Headless-Tests/ | |
cp -r Games/Sandbox/Assets bin/Release-linux-x86_64/Games/Sandbox/ | |
cp -r Games/Tests/Assets bin/Release-linux-x86_64/Games/Tests/ | |
cp -r Games/Tests3D/Assets bin/Release-linux-x86_64/Games/Tests3D/ | |
cp -r Games/TRAP-Editor/Assets bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Games/TRAP-Editor/Resources bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Utility/QOIConv bin/Release-linux-x86_64/Utility/ | |
cp -r Licenses bin/Release-linux-x86_64/Licenses | |
rm bin/Release-linux-x86_64/Utility/QOIConv/QOIConv.exe | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Linux GCC Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-linux-x86_64/./Games | |
bin/Release-linux-x86_64/./Utility | |
bin/Release-linux-x86_64/./UnitTests | |
bin/Release-linux-x86_64/./Licenses | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux GCC Release Executables | |
path: | | |
bin/Release-linux-x86_64/Games | |
bin/Release-linux-x86_64/Utility | |
bin/Release-linux-x86_64/UnitTests | |
bin/Release-linux-x86_64/Licenses | |
build-linux-clang-19: | |
name: Build Linux Clang 19 | |
runs-on: [self-hosted, Linux, X64, ubuntu, "24.10", cpu] | |
env: | |
CC: clang-19 | |
CXX: clang++-19 | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Retrieve keys for cache | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
shell: bash | |
id: cache-keys | |
run: | | |
echo "Box2D=$(git -C Dependencies/Box2D rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "Catch2=$(git -C Dependencies/Catch2 rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "fmt=$(git -C Dependencies/fmt rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "GLSLang=$(git -C Dependencies/GLSLang rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGui=$(git -C Dependencies/ImGui rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGuizmo=$(git -C Dependencies/ImGuizmo rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "libpng=$(git -C Dependencies/libpng rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "ModernDialogs=$(git -C Dependencies/ModernDialogs rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "QuiteOKImage=$(git -C Dependencies/QuiteOKImage rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "SPIRVCross=$(git -C Dependencies/SPIRV-Cross rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "TracyClient=$(git -C Dependencies/Tracy rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "YAMLCpp=$(git -C Dependencies/YAMLCpp rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
echo "zlib=$(git -C Dependencies/zlib rev-parse HEAD)_Linux_Release" >> "$GITHUB_OUTPUT" | |
- name: Restore Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Box2D/ | |
- name: Restore Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Catch2/ | |
- name: Restore fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/fmt/ | |
- name: Restore GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/GLSLang/ | |
- name: Restore ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGui/ | |
- name: Restore ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGuizmo/ | |
- name: Restore libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/libpng/ | |
- name: Restore ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ModernDialogs/ | |
- name: Restore QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/QuiteOKImage/ | |
- name: Restore SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/SPIRV-Cross/ | |
- name: Restore TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/TracyClient/ | |
- name: Restore YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/YAMLCpp/ | |
- name: Restore zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/zlib/ | |
- name: Add toolchain ppa | |
run: sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/ppa | |
- name: Update package list | |
run: sudo apt update | |
- name: Install dependencies | |
run: sudo apt install -y clang-19 llvm-19 mold xorg-dev libwayland-dev libxkbcommon-dev wayland-protocols ninja-build | |
- name: Make python3 available as python | |
run: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 | |
- name: Make pip3 available as pip | |
run: sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10 | |
- name: Make llvm-ar-19 available as llvm-ar | |
run: sudo update-alternatives --install /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-19 10 | |
- name: Make clang-19 available as clang | |
run: sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 10 | |
- name: Make clang++-19 available as clang++ | |
run: sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 10 | |
- name: Make scripts and premake executable | |
run: | | |
chmod +x libs/premake5/linux/premake5 | |
chmod +x GeneratorScripts/GenerateProjectNinjaClang.sh | |
- name: Generate Ninja files | |
run: | | |
cd GeneratorScripts/ | |
RUN_CICD_PIPELINE=1 ./GenerateProjectNinjaClang.sh | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: ninja Release -j $(nproc) | |
- name: Save Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Box2D/./ | |
- name: Save Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/Catch2/./ | |
- name: Save fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/fmt/./ | |
- name: Save GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/GLSLang/./ | |
- name: Save ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGui/./ | |
- name: Save ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ImGuizmo/./ | |
- name: Save libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/libpng/./ | |
- name: Save ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/ModernDialogs/./ | |
- name: Save QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/QuiteOKImage/./ | |
- name: Save SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/SPIRV-Cross/./ | |
- name: Save TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/TracyClient/./ | |
- name: Save YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/YAMLCpp/./ | |
- name: Save zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-linux-x86_64/Dependencies/zlib/./ | |
- name: Finalize data for artifact | |
run: | | |
cp -r Games/Headless-Tests/Assets bin/Release-linux-x86_64/Games/Headless-Tests/ | |
cp -r Games/Sandbox/Assets bin/Release-linux-x86_64/Games/Sandbox/ | |
cp -r Games/Tests/Assets bin/Release-linux-x86_64/Games/Tests/ | |
cp -r Games/Tests3D/Assets bin/Release-linux-x86_64/Games/Tests3D/ | |
cp -r Games/TRAP-Editor/Assets bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Games/TRAP-Editor/Resources bin/Release-linux-x86_64/Games/TRAP-Editor/ | |
cp -r Utility/QOIConv bin/Release-linux-x86_64/Utility/ | |
cp -r Licenses bin/Release-linux-x86_64/Licenses | |
rm bin/Release-linux-x86_64/Utility/QOIConv/QOIConv.exe | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Linux Clang Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-linux-x86_64/./Games | |
bin/Release-linux-x86_64/./Utility | |
bin/Release-linux-x86_64/./UnitTests | |
bin/Release-linux-x86_64/./Licenses | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Linux Clang Release Executables | |
path: | | |
bin/Release-linux-x86_64/Games | |
bin/Release-linux-x86_64/Utility | |
bin/Release-linux-x86_64/UnitTests | |
bin/Release-linux-x86_64/Licenses | |
build-windows-msvc-2022: | |
name: Build Windows MSVC 2022 | |
runs-on: [self-hosted, windows, X64, cpu] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Checkout DiscordGameSDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_DISCORDGAMESDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_DISCORDGAMESDK: ${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
run: | | |
cd Dependencies/DiscordGameSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_DISCORDGAMESDK }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout NVIDIA Nsight Aftermath SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_NSIGHTAFTERMATH: ${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
run: | | |
cd Dependencies/Nsight-Aftermath | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_NSIGHTAFTERMATH }} | |
git pull origin main | |
cd ../.. | |
- name: Checkout Steamworks SDK | |
if: env.HAS_GIT_NDA_DEPS && env.HAS_GIT_NDA_DEPS_STEAMWORKSSDK | |
env: | |
HAS_GIT_NDA_DEPS: ${{ secrets.GIT_NDA_DEPS }} | |
HAS_GIT_NDA_DEPS_STEAMWORKSSDK: ${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
run: | | |
cd Dependencies/SteamworksSDK | |
git init | |
git remote add origin ${{ secrets.GIT_NDA_DEPS }}/${{ secrets.GIT_NDA_DEPS_STEAMWORKSSDK }} | |
git pull origin main | |
cd ../.. | |
- name: Retrieve keys for cache | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
shell: bash | |
id: cache-keys | |
run: | | |
echo "Box2D=$(git -C Dependencies/Box2D rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "Catch2=$(git -C Dependencies/Catch2 rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "fmt=$(git -C Dependencies/fmt rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "GLSLang=$(git -C Dependencies/GLSLang rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGui=$(git -C Dependencies/ImGui rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "ImGuizmo=$(git -C Dependencies/ImGuizmo rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "libpng=$(git -C Dependencies/libpng rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "ModernDialogs=$(git -C Dependencies/ModernDialogs rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "QuiteOKImage=$(git -C Dependencies/QuiteOKImage rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "SPIRVCross=$(git -C Dependencies/SPIRV-Cross rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "TracyClient=$(git -C Dependencies/Tracy rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "YAMLCpp=$(git -C Dependencies/YAMLCpp rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
echo "zlib=$(git -C Dependencies/zlib rev-parse HEAD)_Windows_Release" >> "$GITHUB_OUTPUT" | |
- name: Restore Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/Box2D/ | |
- name: Restore Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/Catch2/ | |
- name: Restore fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/fmt/ | |
- name: Restore GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/GLSLang/ | |
- name: Restore ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ImGui/ | |
- name: Restore ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ImGuizmo/ | |
- name: Restore libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/libpng/ | |
- name: Restore ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ModernDialogs/ | |
- name: Restore QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/QuiteOKImage/ | |
- name: Restore SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/SPIRV-Cross/ | |
- name: Restore TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/TracyClient/ | |
- name: Restore YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/YAMLCpp/ | |
- name: Restore zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/restore-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/zlib/ | |
- name: Setup developer console | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Generate Visual Studio 2022 Project files | |
run: | | |
cd GeneratorScripts | |
$ENV:RUN_CICD_PIPELINE=1 | |
.\GenerateProjectNinjaMSVC.bat | |
cd .. | |
- name: Setup problem matchers | |
uses: ./.github/composite/problem-matchers | |
- name: Compile code | |
run: | | |
$maxCPUCount = if($env:CONTAINER_MAX_CPUS) {$env:CONTAINER_MAX_CPUS} Else {$env:NUMBER_OF_PROCESSORS} | |
ninja Release -j $maxCPUCount | |
- name: Save Box2D cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Box2D}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/Box2D/./ | |
- name: Save Catch2 cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.Catch2}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/Catch2/./ | |
- name: Save fmt cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.fmt}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/fmt/./ | |
- name: Save GLSLang cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.GLSLang}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/GLSLang/./ | |
- name: Save ImGui cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGui}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ImGui/./ | |
- name: Save ImGuizmo cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ImGuizmo}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ImGuizmo/./ | |
- name: Save libpng cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.libpng}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/libpng/./ | |
- name: Save ModernDialogs cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.ModernDialogs}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/ModernDialogs/./ | |
- name: Save QuiteOKImage cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.QuiteOKImage}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/QuiteOKImage/./ | |
- name: Save SPIRV-Cross cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.SPIRVCross}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/SPIRV-Cross/./ | |
- name: Save TracyClient cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.TracyClient}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/TracyClient/./ | |
- name: Save YAMLCpp cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.YAMLCpp}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/YAMLCpp/./ | |
- name: Save zlib cache (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/save-cache | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
key: ${{steps.cache-keys.outputs.zlib}} | |
folder-path: bin/Release-windows-x86_64/Dependencies/zlib/./ | |
- name: Finalize data for artifact | |
run: | | |
Xcopy Games\Headless-Tests\Assets bin\Release-windows-x86_64\Games\Headless-Tests\Assets /I /H /E /C | |
Xcopy Games\Sandbox\Assets bin\Release-windows-x86_64\Games\Sandbox\Assets /I /H /E /C | |
Xcopy Games\Tests\Assets bin\Release-windows-x86_64\Games\Tests\Assets /I /H /E /C | |
Xcopy Games\Tests3D\Assets bin\Release-windows-x86_64\Games\Tests3D\Assets /I /H /E /C | |
Xcopy Games\TRAP-Editor\Assets bin\Release-windows-x86_64\Games\TRAP-Editor\Assets /I /H /E /C | |
Xcopy Games\TRAP-Editor\Resources bin\Release-windows-x86_64\Games\TRAP-Editor\Resources /I /H /E /C | |
Xcopy Licenses bin\Release-windows-x86_64\Licenses /I /H /E /C | |
Xcopy Utility\QOIConv bin\Release-windows-x86_64\Utility\QOIConv /I /H /E /C | |
Xcopy Redists bin\Release-windows-x86_64\Redists /I /H /E /C | |
Get-ChildItem -Path "bin" -Filter "*.pdb" -Recurse | Remove-Item -Force | |
Remove-Item bin\Release-windows-x86_64\Utility\QOIConv\QOIConv | |
- name: Upload artifacts (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: ./.github/composite/artifact-upload | |
with: | |
target-filename: Windows MSVC Release Executables | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
folder-to-upload: > | |
bin/Release-windows-x86_64/./Games | |
bin/Release-windows-x86_64/./Utility | |
bin/Release-windows-x86_64/./UnitTests | |
bin/Release-windows-x86_64/./Licenses | |
bin/Release-windows-x86_64/./Redists | |
- name: Upload artifacts (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Windows MSVC 2022 Release Executables | |
path: | | |
bin/Release-windows-x86_64/Games | |
bin/Release-windows-x86_64/Utility | |
bin/Release-windows-x86_64/UnitTests | |
bin/Release-windows-x86_64/Licenses | |
bin/Release-windows-x86_64/Redists | |
test-windows: | |
name: Unit-Test Windows | |
runs-on: [self-hosted, windows, X64, cpu] | |
needs: [build-windows-msvc-2022] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Download artifact (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: gamestrap/[email protected] | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
artifact-name: "Windows MSVC Release Executables" | |
- name: Download artifact (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/download-artifact@v4 | |
with: | |
name: Windows MSVC 2022 Release Executables | |
- name: Run Tests | |
run: | | |
cd UnitTests | |
$env:TRACY_NO_INVARIANT_CHECK=1; .\UnitTests.exe; Remove-Item Env:\TRACY_NO_INVARIANT_CHECK | |
test-linux: | |
name: Unit-Test Linux | |
runs-on: [self-hosted, Linux, X64, ubuntu, cpu] | |
needs: [build-linux-clang-19] | |
steps: | |
- name: Cleanup workspace | |
if: ${{ always() }} | |
uses: gamestrap/[email protected] | |
- name: Download artifact (TrappedGames) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname != null | |
uses: gamestrap/[email protected] | |
with: | |
server-hostname: ${{ secrets.ARTIFACT_HOST }} | |
server-share: "artifacts" | |
server-username: ${{ secrets.ARTIFACT_USERNAME }} | |
server-password: ${{ secrets.ARTIFACT_PASSWORD }} | |
artifact-name: "Linux Clang Release Executables" | |
- name: Download artifact (GitHub) | |
env: | |
artifact_hostname: ${{secrets.ARTIFACT_HOST}} | |
if: env.artifact_hostname == null | |
uses: actions/download-artifact@v4 | |
with: | |
name: Linux Clang Release Executables | |
- name: Run Tests | |
run: | | |
cd UnitTests | |
chmod +x UnitTests | |
TRACY_NO_INVARIANT_CHECK=1 ./UnitTests |