diff options
Diffstat (limited to '.github/actions')
-rw-r--r-- | .github/actions/download-artifact/action.yml | 18 | ||||
-rw-r--r-- | .github/actions/godot-api-dump/action.yml | 24 | ||||
-rw-r--r-- | .github/actions/godot-cache/action.yml | 13 | ||||
-rw-r--r-- | .github/actions/godot-converter-test/action.yml | 18 | ||||
-rw-r--r-- | .github/actions/godot-project-test/action.yml | 37 |
5 files changed, 110 insertions, 0 deletions
diff --git a/.github/actions/download-artifact/action.yml b/.github/actions/download-artifact/action.yml new file mode 100644 index 0000000000..58c2aa9060 --- /dev/null +++ b/.github/actions/download-artifact/action.yml @@ -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 }} diff --git a/.github/actions/godot-api-dump/action.yml b/.github/actions/godot-api-dump/action.yml new file mode 100644 index 0000000000..47b675ae99 --- /dev/null +++ b/.github/actions/godot-api-dump/action.yml @@ -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/*' + diff --git a/.github/actions/godot-cache/action.yml b/.github/actions/godot-cache/action.yml index 2d7afc8514..09ad2099cc 100644 --- a/.github/actions/godot-cache/action.yml +++ b/.github/actions/godot-cache/action.yml @@ -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}} diff --git a/.github/actions/godot-converter-test/action.yml b/.github/actions/godot-converter-test/action.yml new file mode 100644 index 0000000000..919a76e693 --- /dev/null +++ b/.github/actions/godot-converter-test/action.yml @@ -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 diff --git a/.github/actions/godot-project-test/action.yml b/.github/actions/godot-project-test/action.yml new file mode 100644 index 0000000000..fd8c024a37 --- /dev/null +++ b/.github/actions/godot-project-test/action.yml @@ -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 |