From 929ec3e47752a1ecbca762f1fabcd7ecdb924f7f Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 11 Dec 2024 19:07:39 +0100 Subject: [PATCH] [godot] FIx GH workflows... --- .../workflows/spine-godot-extension-v4.yml | 25 +- .github/workflows/spine-godot-v4.yml | 507 +++++++++++++----- 2 files changed, 400 insertions(+), 132 deletions(-) diff --git a/.github/workflows/spine-godot-extension-v4.yml b/.github/workflows/spine-godot-extension-v4.yml index 1b73e1309..0fc462f25 100644 --- a/.github/workflows/spine-godot-extension-v4.yml +++ b/.github/workflows/spine-godot-extension-v4.yml @@ -38,6 +38,7 @@ jobs: - name: Build GDExtension shell: bash run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh windows @@ -45,7 +46,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-windows-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/windows/*.dll + path: spine-godot/example-v4-extension/bin/windows/*.dll build-linux-x86_64: runs-on: ubuntu-20.04 @@ -64,6 +65,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh linux @@ -71,7 +73,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-linux-x86_64-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/linux/*.so + path: spine-godot/example-v4-extension/bin/linux/*.so build-linux-arm64: runs-on: ubuntu-20.04 @@ -90,6 +92,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh linux arm64 @@ -97,7 +100,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-linux-arm64-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/linux/*.so + path: spine-godot/example-v4-extension/bin/linux/*.so build-macos: runs-on: macos-latest @@ -111,6 +114,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh macos @@ -118,7 +122,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-macos-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/macos/macos.framework/* + path: spine-godot/example-v4-extension/bin/macos/macos.framework/* build-ios: runs-on: macos-latest @@ -132,6 +136,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh ios @@ -139,7 +144,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-ios-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/ios/*.xcframework/**/* + path: spine-godot/example-v4-extension/bin/ios/*.xcframework/**/* build-android: runs-on: ubuntu-20.04 @@ -151,7 +156,7 @@ jobs: - name: Make apt sources.list use the default Ubuntu repositories run: | sudo rm -f /etc/apt/sources.list.d/* - sudo cp -f build/sources.lst /etc/apt/sources.list + sudo cp -f spine-godot/build/sources.lst /etc/apt/sources.list sudo apt-get update - name: Set up Java 17 @@ -164,6 +169,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh android ./build-extension.sh android x86_64 @@ -172,7 +178,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-android-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/android/*.so + path: spine-godot/example-v4-extension/bin/android/*.so build-web: runs-on: ubuntu-20.04 @@ -191,6 +197,7 @@ jobs: - name: Build GDExtension run: | + cd spine-godot/build ./setup-extension.sh $GODOT_TAG $DEV ./build-extension.sh web @@ -198,7 +205,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: gdextension-web-${{ env.GODOT_TAG }} - path: example-v4-extension/bin/web/*.wasm + path: spine-godot/example-v4-extension/bin/web/*.wasm upload-to-s3: needs: [build-windows, build-linux-x86_64, build-linux-arm64, build-macos, build-ios, build-android, build-web] @@ -260,7 +267,7 @@ jobs: cd artifacts # Ensure gdextension file is in root - cp ../spine_godot_extension.gdextension ./ + cp ../spine-godot/spine_godot_extension.gdextension ./ # Create directories matching the expected structure mkdir -p bin/{windows,linux,macos/macos.framework,ios,android,web} diff --git a/.github/workflows/spine-godot-v4.yml b/.github/workflows/spine-godot-v4.yml index 0fc462f25..ee7d212d1 100644 --- a/.github/workflows/spine-godot-v4.yml +++ b/.github/workflows/spine-godot-v4.yml @@ -1,4 +1,4 @@ -name: Build spine-godot GDExtension (Godot 4.x) +name: Build spine-godot (Godot 4.x) on: workflow_call: @@ -11,7 +11,21 @@ on: required: true type: string default: "Godot version not specified!" - dev: + godot_mono: + required: true + type: boolean + default: false + workflow_dispatch: + inputs: + godot_tag: + required: true + type: string + default: "Godot tag not specified!" + godot_version: + required: true + type: string + default: "Godot version not specified!" + godot_mono: required: true type: boolean default: false @@ -20,12 +34,15 @@ env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true + EM_VERSION: 3.1.26 GODOT_TAG: ${{ inputs.godot_tag }} GODOT_VERSION: ${{ inputs.godot_version }} - DEV_BUILD: ${{ inputs.dev }} + GODOT_MONO: ${{ inputs.godot_mono }} + GODOT_MONO_UPLOAD_SUFFIX: ${{ inputs.godot_mono == true && '-mono' || '' }} jobs: - build-windows: + + godot-editor-windows: runs-on: windows-2022 steps: - uses: actions/checkout@v3 @@ -35,20 +52,19 @@ jobs: - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Build GDExtension + - name: Build Godot artifact shell: bash run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh windows + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-v4.sh $GODOT_MONO - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: gdextension-windows-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/windows/*.dll + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-windows', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/**/* - build-linux-x86_64: + godot-editor-linux: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 @@ -58,24 +74,93 @@ jobs: - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Install dependencies + - name: Build Godot artifact + shell: bash run: | sudo apt-get update sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev - - - name: Build GDExtension - run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh linux + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-v4.sh $GODOT_MONO - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: gdextension-linux-x86_64-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/linux/*.so + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-linux', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/**/* - build-linux-arm64: + godot-editor-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup python and scons + uses: ./.github/actions/setup-godot-deps-4 + + - name: Build Godot artifact + shell: bash + run: | + ./spine-godot/build/install-macos-vulkan-sdk.sh + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-v4.sh $GODOT_MONO + pushd spine-godot/godot/bin + zip -r godot-editor-macos.zip Godot.app + popd + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/godot-editor-macos.zip + + godot-template-ios: + runs-on: macos-latest + if: ${{ inputs.godot_mono == false }} + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup python and scons + uses: ./.github/actions/setup-godot-deps-4 + + - name: Build Godot artifact + run: | + ./spine-godot/build/install-macos-vulkan-sdk.sh + ./spine-godot/build/setup.sh $GODOT_TAG false + ./spine-godot/build/build-templates-v4.sh ios + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/ios.zip + + godot-template-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup python and scons + uses: ./.github/actions/setup-godot-deps-4 + + - name: Build Godot artifact + run: | + ./spine-godot/build/install-macos-vulkan-sdk.sh + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-templates-v4.sh macos $GODOT_MONO + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/macos.zip + + godot-template-linux: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 @@ -85,25 +170,27 @@ jobs: - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Install dependencies + - name: Build Godot artifact run: | sudo apt-get update - sudo apt-get install build-essential scons pkg-config gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-templates-v4.sh linux $GODOT_MONO - - name: Build GDExtension - run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh linux arm64 - - - name: Upload artifacts + - name: Upload artifacts debug uses: actions/upload-artifact@v4 with: - name: gdextension-linux-arm64-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/linux/*.so + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/linux_debug.x86_64 - build-macos: - runs-on: macos-latest + - name: Upload artifacts release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/linux_release.x86_64 + + godot-template-windows: + runs-on: windows-latest steps: - uses: actions/checkout@v3 with: @@ -112,54 +199,40 @@ jobs: - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Build GDExtension + - name: Build Godot artifact + shell: bash run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh macos + ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO + ./spine-godot/build/build-templates-v4.sh windows $GODOT_MONO - - name: Upload artifacts + - name: Upload artifacts debug uses: actions/upload-artifact@v4 with: - name: gdextension-macos-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/macos/macos.framework/* + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/windows_debug_x86_64.exe - build-ios: - runs-on: macos-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup python and scons - uses: ./.github/actions/setup-godot-deps-4 - - - name: Build GDExtension - run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh ios - - - name: Upload artifacts + - name: Upload artifacts release uses: actions/upload-artifact@v4 with: - name: gdextension-ios-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/ios/*.xcframework/**/* + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/windows_release_x86_64.exe - build-android: + godot-template-android: runs-on: ubuntu-20.04 + if: ${{ inputs.godot_mono == false }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 + # Azure repositories are not reliable, we need to prevent azure giving us packages. - name: Make apt sources.list use the default Ubuntu repositories run: | sudo rm -f /etc/apt/sources.list.d/* sudo cp -f spine-godot/build/sources.lst /etc/apt/sources.list sudo apt-get update - - name: Set up Java 17 + - name: Set up Java 11 uses: actions/setup-java@v1 with: java-version: 17 @@ -167,21 +240,34 @@ jobs: - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Build GDExtension + - name: Build Godot artifact + shell: bash run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh android - ./build-extension.sh android x86_64 + ./spine-godot/build/setup.sh $GODOT_TAG false + ./spine-godot/build/build-templates-v4.sh android - - name: Upload artifacts + - name: Upload artifacts debug uses: actions/upload-artifact@v4 with: - name: gdextension-android-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/android/*.so + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/android_debug.apk - build-web: + - name: Upload artifacts release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/android_release.apk + + - name: Upload artifacts source + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-source', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/android_source.zip + + godot-template-web: runs-on: ubuntu-20.04 + if: ${{ inputs.godot_mono == false }} + steps: - uses: actions/checkout@v3 with: @@ -190,99 +276,274 @@ jobs: - name: Set up Emscripten latest uses: mymindstorm/setup-emsdk@v11 with: - version: 3.1.26 + version: ${{env.EM_VERSION}} + + - name: Verify Emscripten setup + run: | + emcc -v - name: Setup python and scons uses: ./.github/actions/setup-godot-deps-4 - - name: Build GDExtension + - name: Build Godot artifact run: | - cd spine-godot/build - ./setup-extension.sh $GODOT_TAG $DEV - ./build-extension.sh web + ./spine-godot/build/setup.sh $GODOT_TAG false + ./spine-godot/build/build-templates-v4.sh web - - name: Upload artifacts + - name: Upload artifacts debug uses: actions/upload-artifact@v4 with: - name: gdextension-web-${{ env.GODOT_TAG }} - path: spine-godot/example-v4-extension/bin/web/*.wasm + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_debug.zip + + - name: Upload artifacts release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_release.zip + + - name: Upload artifacts no threads debug + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_nothreads_debug.zip + + - name: Upload artifacts no threads release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_nothreads_release.zip + + - name: Upload artifacts dlink debug + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_dlink_debug.zip + + - name: Upload artifacts dlink release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_dlink_release.zip + + - name: Upload artifacts dlink nothreads debug + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_dlink_nothreads_debug.zip + + - name: Upload artifacts dlink nothreads release + uses: actions/upload-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + path: spine-godot/godot/bin/web_dlink_nothreads_release.zip upload-to-s3: - needs: [build-windows, build-linux-x86_64, build-linux-arm64, build-macos, build-ios, build-android, build-web] + needs: [godot-editor-windows, godot-editor-linux, godot-editor-macos, godot-template-ios, godot-template-macos, godot-template-windows, godot-template-linux, godot-template-android, godot-template-web] runs-on: ubuntu-latest + if: ${{ inputs.godot_mono == false }} steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Download windows artifact + - name: Download godot-editor-windows artifact uses: actions/download-artifact@v4 with: - name: gdextension-windows-${{ env.GODOT_TAG }} - path: artifacts/gdextension-windows-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-windows', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download linux-x86_64 artifact + - name: Download godot-editor-linux artifact uses: actions/download-artifact@v4 with: - name: gdextension-linux-x86_64-${{ env.GODOT_TAG }} - path: artifacts/gdextension-linux-x86_64-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-linux', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download linux-arm64 artifact + - name: Download godot-editor-macos artifact uses: actions/download-artifact@v4 with: - name: gdextension-linux-arm64-${{ env.GODOT_TAG }} - path: artifacts/gdextension-linux-arm64-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download macos artifact + - name: Download godot-template-ios artifact uses: actions/download-artifact@v4 with: - name: gdextension-macos-${{ env.GODOT_TAG }} - path: artifacts/gdextension-macos-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download ios artifact + - name: Download godot-template-macos artifact uses: actions/download-artifact@v4 with: - name: gdextension-ios-${{ env.GODOT_TAG }} - path: artifacts/gdextension-ios-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download android artifact + - name: Download godot-template-windows-release artifact uses: actions/download-artifact@v4 with: - name: gdextension-android-${{ env.GODOT_TAG }} - path: artifacts/gdextension-android-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Download web artifact + - name: Download godot-template-windows-debug artifact uses: actions/download-artifact@v4 with: - name: gdextension-web-${{ env.GODOT_TAG }} - path: artifacts/gdextension-web-${{ env.GODOT_TAG }} + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - - name: Package and upload artifacts + - name: Download godot-template-linux-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-linux-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-android-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-android-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-android-source artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-source', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-nothreads-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-nothreads-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-dlink-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-dlink-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-dlink-nothreads-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-web-dlink-nothreads-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-dlink-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Upload artifacts to S3 shell: bash if: env.AWS_ACCESS_KEY_ID != null run: | BRANCH=${GITHUB_REF#refs/heads/} echo "branch: $BRANCH" + mv godot.windows.editor.x86_64.exe godot-$BRANCH-$GODOT_TAG.exe + mv godot.linuxbsd.editor.x86_64 godot-$BRANCH-$GODOT_TAG + zip godot-editor-windows.zip godot-$BRANCH-$GODOT_TAG.exe + zip godot-editor-linux.zip godot-$BRANCH-$GODOT_TAG + aws s3 cp godot-editor-windows.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + aws s3 cp godot-editor-linux.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + aws s3 cp godot-editor-macos.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ - cd artifacts - # Ensure gdextension file is in root - cp ../spine-godot/spine_godot_extension.gdextension ./ + echo "$GODOT_VERSION" > version.txt + GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/') - # Create directories matching the expected structure - mkdir -p bin/{windows,linux,macos/macos.framework,ios,android,web} + echo "Major.Minor version: $GODOT_MAJOR_MINOR" + + if [[ $(echo "$GODOT_MAJOR_MINOR >= 4.3" | bc) -eq 1 ]]; then + echo "Version >= 4.3. Adding all web_xxx.zip files to template zip." + WEB_FILES=(web_debug.zip web_release.zip web_nothreads_debug.zip web_nothreads_release.zip web_dlink_debug.zip web_dlink_nothreads_debug.zip web_dlink_release.zip web_dlink_nothreads_release.zip) + else + echo "Version < 4.3. Adding only web_debug.zip and web_release.zip." + WEB_FILES=(web_debug.zip web_release.zip) + fi + + echo "Web files to include: ${WEB_FILES[@]}" + + zip spine-godot-templates-$BRANCH-$GODOT_TAG.zip ios.zip macos.zip \ + windows_debug_x86_64.exe windows_release_x86_64.exe \ + linux_debug.x86_64 linux_release.x86_64 "${WEB_FILES[@]}" \ + android_release.apk android_debug.apk android_source.zip version.txt + + aws s3 cp spine-godot-templates-$BRANCH-$GODOT_TAG.zip s3://spine-godot/$BRANCH/$GODOT_TAG/spine-godot-templates-$BRANCH-$GODOT_TAG.tpz + + upload-to-s3-mono: + needs: [godot-editor-windows, godot-editor-linux, godot-editor-macos, godot-template-macos, godot-template-windows, godot-template-linux] + runs-on: ubuntu-latest + if: ${{ inputs.godot_mono == true }} + + steps: + - name: Download godot-editor-windows artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-windows', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-editor-linux artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-linux', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-editor-macos artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-macos artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-windows-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-windows-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-linux-release artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Download godot-template-linux-debug artifact + uses: actions/download-artifact@v4 + with: + name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} + + - name: Upload artifacts to S3 + shell: bash + if: env.AWS_ACCESS_KEY_ID != null + run: | + BRANCH=${GITHUB_REF#refs/heads/} + echo "branch: $BRANCH" + ls -lahR + mv godot.windows.editor.x86_64.mono.exe godot-$BRANCH-$GODOT_TAG-mono.exe + mv godot.linuxbsd.editor.x86_64.mono godot-$BRANCH-$GODOT_TAG-mono + zip -r godot-editor-windows-mono.zip godot-$BRANCH-$GODOT_TAG-mono.exe GodotSharp + zip -r godot-editor-linux-mono.zip godot-$BRANCH-$GODOT_TAG-mono GodotSharp + mv godot-editor-macos.zip godot-editor-macos-mono.zip + aws s3 cp godot-editor-windows-mono.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + aws s3 cp godot-editor-linux-mono.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + aws s3 cp godot-editor-macos-mono.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ + echo "$GODOT_VERSION.mono" > version.txt + zip spine-godot-templates-$BRANCH-$GODOT_TAG-mono.zip macos.zip windows_debug_x86_64.exe windows_release_x86_64.exe linux_debug.x86_64 linux_release.x86_64 version.txt + aws s3 cp spine-godot-templates-$BRANCH-$GODOT_TAG-mono.zip s3://spine-godot/$BRANCH/$GODOT_TAG/spine-godot-templates-$BRANCH-$GODOT_TAG-mono.tpz - # Move artifacts to their correct locations - mv gdextension-windows-$GODOT_TAG/* bin/windows/ - mv gdextension-linux-x86_64-$GODOT_TAG/* bin/linux/ - mv gdextension-linux-arm64-$GODOT_TAG/* bin/linux/ - mv gdextension-macos-$GODOT_TAG/* bin/macos/macos.framework/ - mv gdextension-ios-$GODOT_TAG/* bin/ios/ - mv gdextension-android-$GODOT_TAG/* bin/android/ - mv gdextension-web-$GODOT_TAG/* bin/web/ - # Create the final zip with branch and tag - zip -r ../spine-godot-extension-$BRANCH-$GODOT_TAG.zip spine_godot_extension.gdextension bin/ - cd .. - aws s3 cp spine-godot-extension-$BRANCH-$GODOT_TAG.zip s3://spine-godot/$BRANCH/$GODOT_TAG/ \ No newline at end of file