Skip to content

Upgrade build workflow cache action to v4 #167

Upgrade build workflow cache action to v4

Upgrade build workflow cache action to v4 #167

Workflow file for this run

name: 🛠️ Builds
on:
push:
pull_request:
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.runner }}
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- identifier: linux-debug
name: Linux Debug
runner: ubuntu-20.04
target: template_debug
platform: linux
arch: x86_64
- identifier: linux-release
name: Linux Release
runner: ubuntu-20.04
target: template_release
platform: linux
arch: x86_64
- identifier: windows-debug
name: Windows Debug
runner: ubuntu-20.04
target: template_debug
platform: windows
arch: x86_64
- identifier: windows-release
name: Windows Release
runner: ubuntu-20.04
target: template_release
platform: windows
arch: x86_64
- identifier: android-release
name: Android Release
runner: ubuntu-20.04
target: template_release
platform: android
arch: arm64
steps:
- name: (Windows) Install mingw64
if: ${{ startsWith(matrix.identifier, 'windows-') }}
shell: sh
run: |
sudo apt-get install mingw-w64
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
- name: (Android) Install JDK 17
if: ${{ startsWith(matrix.identifier, 'android-') }}
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: (Android) Install Android SDK
if: ${{ startsWith(matrix.identifier, 'android-') }}
uses: android-actions/setup-android@v3
# From Godot docs, might not be necessary.
#- name: (Android) Install Android Tools
# if: ${{ startsWith(matrix.identifier, 'android-') }}
# shell: sh
# run: |
# "$ANDROID_SDK_ROOT"/cmdline-tools/latest/bin/sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404"
- name: (Android) Install NDK r23c
if: ${{ matrix.platform == 'android' }}
uses: nttld/setup-ndk@v1
with:
ndk-version: r23c
link-to-sdk: true
- name: Install Python
uses: actions/setup-python@v2
- name: Install SCons
shell: bash
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons
scons --version
- name: Checkout project
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup SCons cache
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/.scons-cache/
${{ github.workspace }}/**/.sconsign.dblite
${{ github.workspace }}/godot-cpp/gen/
key: ${{ matrix.identifier }}-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ matrix.identifier }}-${{ github.ref }}-${{ github.sha }}
${{ matrix.identifier }}-${{ github.ref }}
${{ matrix.identifier }}
- name: Compile extension
shell: sh
env:
SCONS_CACHE: "${{ github.workspace }}/.scons-cache/"
SCONS_CACHE_LIMIT: 4096
run: |
scons target='${{ matrix.target }}' platform='${{ matrix.platform }}' arch='${{ matrix.arch }}' -j2
ls -l project/addons/*/bin/
- name: Copy README and Licensing files
shell: sh
run: |
for addon in ${{ github.workspace }}/project/addons/*/; do
cp --no-clobber '${{ github.workspace }}/README.md' '${{ github.workspace }}/LICENSE' '${{ github.workspace }}/AUTHORS.md' '${{ github.workspace }}/THIRDPARTY.md' "$addon"
done
- name: Remove unwanted files from artifact
shell: sh
run: |
rm -rf ${{ github.workspace }}/project/test
rm ${{ github.workspace }}/project/project.godot ${{ github.workspace }}/project/.gitignore ${{ github.workspace }}/project/.gitattributes
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: godot-subdiv-${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}
path: |
${{ github.workspace }}/project/
merge-artifacts:
runs-on: ubuntu-20.04
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: godot-subdiv
pattern: godot-subdiv-*
delete-merged: true