commit 2df7d1230f5ebb229d1b11181291bd5602554b87 Author: Minimata Date: Wed Jan 28 15:59:13 2026 +0100 first commit diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..a9e5c30 --- /dev/null +++ b/action.yml @@ -0,0 +1,99 @@ +name: 'Setup Godot' +description: 'This GitHub Action automates the setup of Godot' +author: Mike Schulze + +inputs: + godot-version: + description: 'The version of Godot in which the tests should be run.' + required: true + godot-status: + description: 'The Godot status (e.g., "stable", "rc1", "dev1")' + required: false + default: 'stable' + dotnet-version: + description: 'The used .NET version to run the test (e.g. "net7.0", "net8.0")' + required: false + default: net8.0 + project_dir: + description: 'The project directory in which the action is to be executed. The specified directory must end with a path separator. e.g. ./MyProject/' + required: false + default: './' + +outputs: + godot_bin: + description: 'The location of the godot executable' + value: /home/runner/godot-linux/godot + +runs: + using: 'composite' + steps: + # Verify version compatibility + - name: 'Check Version Compatibility' + uses: ./.gdunit4_action/versioning/check + id: version_check + with: + godot-version: ${{ inputs.godot-version }} + gdunit-version: ${{ env.GDUNIT_VERSION }} + + - name: 'Set Cache Name' + shell: bash + run: | + echo "CACHE_NAME=${{ runner.OS }}-Godot_v${{ inputs.godot-version }}-${{ inputs.godot-status }}-${{ inputs.dotnet-version }}" >> "$GITHUB_ENV" + + - name: 'Build Cache' + uses: actions/cache@v5 + id: godot-cache-binary + with: + path: '/home/runner/godot-linux' + key: ${{ env.CACHE_NAME }} + restore-keys: ${{ env.CACHE_NAME }} + enableCrossOsArchive: true + + - name: 'Install Godot ${{ inputs.godot-version }}' + if: steps.godot-cache-binary.outputs.cache-hit != 'true' + uses: ./.gdunit4_action/godot-install + with: + godot-version: ${{ inputs.godot-version }} + godot-net: true + godot-status-version: ${{ inputs.godot-status }} + install-path: '/home/runner/godot-linux' + + - name: 'print restored version - ${{ inputs.godot-version }}' + shell: bash + run: | + /home/runner/godot-linux/godot --version + + - name: 'Set .NET SDK version' + if: ${{ steps.version_check.outcome == 'success' && !cancelled() }} + shell: bash + run: | + sdk_version=$(echo "${{ inputs.dotnet-version }}" | sed 's/^net\([0-9]\.[0-9]\)$/\1.x/') + echo "SDK_VERSION=$sdk_version" >> "$GITHUB_ENV" + echo "Using .NET version: '$sdk_version'" + + - name: 'Setup .NET SDK' + if: ${{ steps.version_check.outcome == 'success' && !cancelled() }} + uses: actions/setup-dotnet@v5 + with: + dotnet-version: '${{ env.SDK_VERSION }}' + + - name: 'Restore .Net Project' + if: ${{ steps.version_check.outcome == 'success' && !cancelled() }} + shell: bash + run: | + cd "${{ inputs.project_dir }}" + + dotnet --version + dotnet build + dotnet list package + + - name: 'Restore Godot project cache' + if: ${{ steps.version_check.outcome == 'success' && !cancelled() }} + env: + GODOT_BIN: '/home/runner/godot-linux/godot' + shell: bash + run: | + cd "${{ inputs.project_dir }}" + echo -e "\e[94mStart of the recovery of the project cache ...\e[0m" + $GODOT_BIN --path ./ -e --headless --quit-after 2000 + echo -e "\e[94mProject cache successfully restored.\e[0m"