mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 10:11:57 +03:00
CI: Extract godot-cpp testing into its own job
This ensures that the godot-cpp job has plenty of resources
to run its build and avoid being affected by the main build.
Additionally:
- Extract test tasks into dedicated actions.
- Upload artifacts as early as possible.
- Ensure that we check master cache before random cache.
(cherry picked from commit deb6025781)
This commit is contained in:
18
.github/actions/download-artifact/action.yml
vendored
Normal file
18
.github/actions/download-artifact/action.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Download Godot artifact
|
||||
description: Download the Godot artifact.
|
||||
inputs:
|
||||
name:
|
||||
description: The artifact name.
|
||||
default: "${{ github.job }}"
|
||||
path:
|
||||
description: The path to download and extract to.
|
||||
required: true
|
||||
default: "./"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Download Godot Artifact
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ${{ inputs.name }}
|
||||
path: ${{ inputs.path }}
|
||||
24
.github/actions/godot-api-dump/action.yml
vendored
Normal file
24
.github/actions/godot-api-dump/action.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Dump Godot API
|
||||
description: Dump Godot API for GDExtension
|
||||
inputs:
|
||||
bin:
|
||||
description: The path to the Godot executable
|
||||
required: true
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# Dump GDExtension interface and API
|
||||
- name: Dump GDExtension interface and API for godot-cpp build
|
||||
shell: sh
|
||||
run: |
|
||||
${{ inputs.bin }} --headless --dump-gdextension-interface --dump-extension-api
|
||||
mkdir godot-api
|
||||
cp -f gdextension_interface.h godot-api/
|
||||
cp -f extension_api.json godot-api/
|
||||
|
||||
- name: Upload API dump
|
||||
uses: ./.github/actions/upload-artifact
|
||||
with:
|
||||
name: 'godot-api-dump'
|
||||
path: './godot-api/*'
|
||||
|
||||
13
.github/actions/godot-cache/action.yml
vendored
13
.github/actions/godot-cache/action.yml
vendored
@@ -16,7 +16,20 @@ runs:
|
||||
with:
|
||||
path: ${{inputs.scons-cache}}
|
||||
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
|
||||
|
||||
# We try to match an existing cache to restore from it. Each potential key is checked against
|
||||
# all existing caches as a prefix. E.g. 'linux-template-minimal' would match any cache that
|
||||
# starts with "linux-template-minimal", such as "linux-template-minimal-master-refs/heads/master-6588a4a29af1621086feac0117d5d4d37af957fd".
|
||||
#
|
||||
# We check these prefixes in this order:
|
||||
#
|
||||
# 1. The exact match, including the base branch, the commit reference, and the SHA hash of the commit.
|
||||
# 2. A partial match for the same base branch and the same commit reference.
|
||||
# 3. A partial match for the same base branch and the base branch commit reference.
|
||||
# 4. A partial match for the same base branch only (not ideal, matches any PR with the same base branch).
|
||||
|
||||
restore-keys: |
|
||||
${{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}}-refs/heads/${{env.GODOT_BASE_BRANCH}}
|
||||
${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}
|
||||
|
||||
18
.github/actions/godot-converter-test/action.yml
vendored
Normal file
18
.github/actions/godot-converter-test/action.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Test Godot project converter
|
||||
description: Test the Godot project converter.
|
||||
inputs:
|
||||
bin:
|
||||
description: The path to the Godot executable
|
||||
required: true
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Test 3-to-4 conversion
|
||||
shell: sh
|
||||
run: |
|
||||
mkdir converter_test
|
||||
cd converter_test
|
||||
touch project.godot
|
||||
../${{ inputs.bin }} --headless --validate-conversion-3to4
|
||||
cd ..
|
||||
rm converter_test -rf
|
||||
37
.github/actions/godot-project-test/action.yml
vendored
Normal file
37
.github/actions/godot-project-test/action.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Test Godot project
|
||||
description: Run the test Godot project.
|
||||
inputs:
|
||||
bin:
|
||||
description: The path to the Godot executable
|
||||
required: true
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# Download and extract zip archive with project, folder is renamed to be able to easy change used project
|
||||
- name: Download test project
|
||||
shell: sh
|
||||
run: |
|
||||
wget https://github.com/godotengine/regression-test-project/archive/4.0.zip
|
||||
unzip 4.0.zip
|
||||
mv "regression-test-project-4.0" "test_project"
|
||||
|
||||
# Editor is quite complicated piece of software, so it is easy to introduce bug here.
|
||||
|
||||
- name: Open and close editor (Vulkan)
|
||||
shell: sh
|
||||
run: |
|
||||
xvfb-run ${{ inputs.bin }} --audio-driver Dummy --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
|
||||
misc/scripts/check_ci_log.py sanitizers_log.txt
|
||||
|
||||
- name: Open and close editor (GLES3)
|
||||
shell: sh
|
||||
run: |
|
||||
DRI_PRIME=0 xvfb-run ${{ inputs.bin }} --audio-driver Dummy --rendering-driver opengl3 --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
|
||||
misc/scripts/check_ci_log.py sanitizers_log.txt
|
||||
|
||||
# Run test project
|
||||
- name: Run project
|
||||
shell: sh
|
||||
run: |
|
||||
xvfb-run ${{ inputs.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
|
||||
misc/scripts/check_ci_log.py sanitizers_log.txt
|
||||
Reference in New Issue
Block a user