Merge pull request #1622 from Repiteo/ci/runner

CI: Add `runner` workflow to call other workflows
pull/1635/head
David Snopek 2024-10-30 08:48:37 -05:00 committed by GitHub
commit 7796fcc890
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 58 additions and 31 deletions

View File

@ -3,19 +3,22 @@ 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).
default: "${{github.job}}" default: ${{ github.job }}
scons-cache: scons-cache:
description: The scons cache path. description: The SCons cache path.
default: "${{github.workspace}}/.scons-cache/" default: ${{ github.workspace }}/.scons-cache/
runs: runs:
using: "composite" using: composite
steps: steps:
- name: Restore .scons_cache directory - name: Restore SCons cache directory
uses: actions/cache/restore@v3 uses: actions/cache/restore@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 }}
restore-keys: | restore-keys: |
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}} ${{ inputs.cache-name }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}} ${{ inputs.cache-name }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}} ${{ inputs.cache-name }}-${{ env.GODOT_BASE_BRANCH }}-refs/heads/${{ env.GODOT_BASE_BRANCH }}
${{ inputs.cache-name }}-${{ env.GODOT_BASE_BRANCH }}

View File

@ -3,15 +3,16 @@ description: Save 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).
default: "${{github.job}}" default: ${{ github.job }}
scons-cache: scons-cache:
description: The SCons cache path. description: The SCons cache path.
default: "${{github.workspace}}/.scons-cache/" default: ${{ github.workspace }}/.scons-cache/
runs: runs:
using: "composite" using: composite
steps: steps:
- name: Save SCons cache directory - name: Save SCons cache directory
uses: actions/cache/save@v4 uses: actions/cache/save@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

@ -1,5 +1,6 @@
name: Continuous integration name: Continuous integration
on: [push, pull_request] on:
workflow_call:
env: env:
# Only used for the cache key. Increment version to force clean build. # Only used for the cache key. Increment version to force clean build.
@ -11,7 +12,7 @@ env:
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8
concurrency: concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}} group: ci-${{ github.actor }}-${{ github.head_ref || github.run_number }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
@ -94,7 +95,7 @@ jobs:
env: env:
SCONS_CACHE: ${{ github.workspace }}/.scons-cache/ SCONS_CACHE: ${{ github.workspace }}/.scons-cache/
EM_VERSION: 3.1.39 EM_VERSION: 3.1.39
EM_CACHE_FOLDER: "emsdk-cache" EM_CACHE_FOLDER: emsdk-cache
steps: steps:
- name: Checkout - name: Checkout
@ -111,24 +112,24 @@ jobs:
- name: Set up Python (for SCons) - name: Set up Python (for SCons)
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.x' python-version: 3.x
- name: Android dependencies - name: Android dependencies
if: ${{ matrix.platform == 'android' }} if: matrix.platform == 'android'
uses: nttld/setup-ndk@v1 uses: nttld/setup-ndk@v1
with: with:
ndk-version: r23c ndk-version: r23c
link-to-sdk: true link-to-sdk: true
- name: Web dependencies - name: Web dependencies
if: ${{ matrix.platform == 'web' }} if: matrix.platform == 'web'
uses: mymindstorm/setup-emsdk@v14 uses: mymindstorm/setup-emsdk@v14
with: with:
version: ${{env.EM_VERSION}} version: ${{ env.EM_VERSION }}
actions-cache-folder: ${{env.EM_CACHE_FOLDER}} actions-cache-folder: ${{ env.EM_CACHE_FOLDER }}
- name: Setup MinGW for Windows/MinGW build - name: Setup MinGW for Windows/MinGW build
if: ${{ matrix.platform == 'windows' && matrix.flags == 'use_mingw=yes' }} if: matrix.platform == 'windows' && matrix.flags == 'use_mingw=yes'
uses: egor-tensin/setup-mingw@v2 uses: egor-tensin/setup-mingw@v2
with: with:
version: 12.2.0 version: 12.2.0
@ -164,7 +165,7 @@ jobs:
- name: Download latest Godot artifacts - name: Download latest Godot artifacts
uses: dsnopek/action-download-artifact@1322f74e2dac9feed2ee76a32d9ae1ca3b4cf4e9 uses: dsnopek/action-download-artifact@1322f74e2dac9feed2ee76a32d9ae1ca3b4cf4e9
if: ${{ matrix.run-tests && env.GODOT_TEST_VERSION == 'master' }} if: matrix.run-tests && env.GODOT_TEST_VERSION == 'master'
with: with:
repo: godotengine/godot repo: godotengine/godot
branch: master branch: master
@ -178,13 +179,13 @@ jobs:
path: godot-artifacts path: godot-artifacts
- name: Prepare Godot artifacts for testing - name: Prepare Godot artifacts for testing
if: ${{ matrix.run-tests && env.GODOT_TEST_VERSION == 'master' }} if: matrix.run-tests && env.GODOT_TEST_VERSION == 'master'
run: | run: |
chmod +x ./godot-artifacts/godot.linuxbsd.editor.x86_64.mono chmod +x ./godot-artifacts/godot.linuxbsd.editor.x86_64.mono
echo "GODOT=$(pwd)/godot-artifacts/godot.linuxbsd.editor.x86_64.mono" >> $GITHUB_ENV echo "GODOT=$(pwd)/godot-artifacts/godot.linuxbsd.editor.x86_64.mono" >> $GITHUB_ENV
- name: Download requested Godot version for testing - name: Download requested Godot version for testing
if: ${{ matrix.run-tests && env.GODOT_TEST_VERSION != 'master' }} if: matrix.run-tests && env.GODOT_TEST_VERSION != 'master'
run: | run: |
wget "https://github.com/godotengine/godot-builds/releases/download/${GODOT_TEST_VERSION}/Godot_v${GODOT_TEST_VERSION}_linux.x86_64.zip" -O Godot.zip wget "https://github.com/godotengine/godot-builds/releases/download/${GODOT_TEST_VERSION}/Godot_v${GODOT_TEST_VERSION}_linux.x86_64.zip" -O Godot.zip
unzip -a Godot.zip unzip -a Godot.zip
@ -192,7 +193,7 @@ jobs:
echo "GODOT=$(pwd)/Godot_v${GODOT_TEST_VERSION}_linux.x86_64" >> $GITHUB_ENV echo "GODOT=$(pwd)/Godot_v${GODOT_TEST_VERSION}_linux.x86_64" >> $GITHUB_ENV
- name: Run tests - name: Run tests
if: ${{ matrix.run-tests }} if: matrix.run-tests
run: | run: |
$GODOT --headless --version $GODOT --headless --version
cd test cd test

21
.github/workflows/runner.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: 🔗 GHA
on: [push, pull_request, merge_group]
concurrency:
group: ci-${{ github.actor }}-${{ github.head_ref || github.run_number }}-${{ github.ref }}-runner
cancel-in-progress: true
jobs:
# First stage: Only static checks, fast and prevent expensive builds from running.
static-checks:
if: '!vars.DISABLE_GODOT_CI'
name: 📊 Static Checks
uses: ./.github/workflows/static_checks.yml
# Second stage: Run all the builds and some of the tests.
ci:
name: 🛠️ Continuous Integration
needs: static-checks
uses: ./.github/workflows/ci.yml

View File

@ -1,8 +1,9 @@
name: 📊 Static Checks name: 📊 Static Checks
on: [push, pull_request] on:
workflow_call:
concurrency: concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-static group: ci-${{ github.actor }}-${{ github.head_ref || github.run_number }}-${{ github.ref }}-static
cancel-in-progress: true cancel-in-progress: true
jobs: jobs: