[CI] Upload build cache before running tests

This improves turnaround time on large PRs where compilation is
successful but unit testing or similar fails, forcing recompilation of
unchanged code
This commit is contained in:
A Thousand Ships 2024-07-13 15:50:30 +02:00
parent 97b8ad1af0
commit 32f8292679
No known key found for this signature in database
GPG Key ID: 2033189A662F8BD7
8 changed files with 67 additions and 17 deletions

View File

@ -1,5 +1,5 @@
name: Setup Godot build cache name: Restore Godot build cache
description: Setup Godot build cache. description: Restore Godot build cache.
inputs: inputs:
cache-name: cache-name:
description: The cache base name (job name by default). description: The cache base name (job name by default).
@ -10,9 +10,8 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
# Upload cache on completion and check it out now. - name: Restore SCons cache directory
- name: Load SCons cache directory uses: actions/cache/restore@v4
uses: actions/cache@v4
with: with:
path: ${{inputs.scons-cache}} path: ${{inputs.scons-cache}}
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}} key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}

View File

@ -0,0 +1,17 @@
name: Save Godot build cache
description: Save Godot build cache.
inputs:
cache-name:
description: The cache base name (job name by default).
default: "${{github.job}}"
scons-cache:
description: The SCons cache path.
default: "${{github.workspace}}/.scons-cache/"
runs:
using: "composite"
steps:
- name: Save SCons cache directory
uses: actions/cache/save@v4
with:
path: ${{inputs.scons-cache}}
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}

View File

@ -49,8 +49,8 @@ jobs:
distribution: temurin distribution: temurin
java-version: 17 java-version: 17
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
with: with:
cache-name: ${{ matrix.cache-name }} cache-name: ${{ matrix.cache-name }}
continue-on-error: true continue-on-error: true
@ -66,6 +66,12 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
tests: ${{ matrix.tests }} tests: ${{ matrix.tests }}
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Generate Godot templates - name: Generate Godot templates
if: matrix.target == 'template_release' if: matrix.target == 'template_release'
run: | run: |

View File

@ -22,8 +22,8 @@ jobs:
with: with:
submodules: recursive submodules: recursive
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
continue-on-error: true continue-on-error: true
- name: Setup Python and SCons - name: Setup Python and SCons
@ -37,5 +37,9 @@ jobs:
target: template_release target: template_release
tests: false tests: false
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
continue-on-error: true
- name: Upload artifact - name: Upload artifact
uses: ./.github/actions/upload-artifact uses: ./.github/actions/upload-artifact

View File

@ -111,8 +111,8 @@ jobs:
sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/local/lib/android
echo "Disk usage after:" && df -h echo "Disk usage after:" && df -h
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
with: with:
cache-name: ${{ matrix.cache-name }} cache-name: ${{ matrix.cache-name }}
continue-on-error: true continue-on-error: true
@ -140,6 +140,12 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
tests: ${{ matrix.tests }} tests: ${{ matrix.tests }}
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Generate C# glue - name: Generate C# glue
if: ${{ matrix.build-mono }} if: ${{ matrix.build-mono }}
run: | run: |

View File

@ -37,8 +37,8 @@ jobs:
with: with:
submodules: recursive submodules: recursive
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
with: with:
cache-name: ${{ matrix.cache-name }} cache-name: ${{ matrix.cache-name }}
continue-on-error: true continue-on-error: true
@ -66,6 +66,12 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
tests: ${{ matrix.tests }} tests: ${{ matrix.tests }}
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Prepare artifact - name: Prepare artifact
run: | run: |
lipo -create ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 -output ./bin/godot.macos.${{ matrix.target }}.universal lipo -create ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 -output ./bin/godot.macos.${{ matrix.target }}.universal

View File

@ -52,8 +52,8 @@ jobs:
run: | run: |
emcc -v emcc -v
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
with: with:
cache-name: ${{ matrix.cache-name }} cache-name: ${{ matrix.cache-name }}
continue-on-error: true continue-on-error: true
@ -69,6 +69,12 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
tests: ${{ matrix.tests }} tests: ${{ matrix.tests }}
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Upload artifact - name: Upload artifact
uses: ./.github/actions/upload-artifact uses: ./.github/actions/upload-artifact
if: ${{ matrix.artifact }} if: ${{ matrix.artifact }}

View File

@ -42,8 +42,8 @@ jobs:
with: with:
submodules: recursive submodules: recursive
- name: Setup Godot build cache - name: Restore Godot build cache
uses: ./.github/actions/godot-cache uses: ./.github/actions/godot-cache-restore
with: with:
cache-name: ${{ matrix.cache-name }} cache-name: ${{ matrix.cache-name }}
continue-on-error: true continue-on-error: true
@ -76,6 +76,12 @@ jobs:
target: ${{ matrix.target }} target: ${{ matrix.target }}
tests: ${{ matrix.tests }} tests: ${{ matrix.tests }}
- name: Save Godot build cache
uses: ./.github/actions/godot-cache-save
with:
cache-name: ${{ matrix.cache-name }}
continue-on-error: true
- name: Prepare artifact - name: Prepare artifact
run: | run: |
Remove-Item bin/* -Include *.exp,*.lib,*.pdb -Force Remove-Item bin/* -Include *.exp,*.lib,*.pdb -Force