Przeglądaj źródła

[godot] FIx GH workflows...

Mario Zechner 9 miesięcy temu
rodzic
commit
929ec3e477

+ 16 - 9
.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}

+ 369 - 108
.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,25 +74,22 @@ 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:
-    runs-on: ubuntu-20.04
+  godot-editor-macos:
+    runs-on: macos-latest
     steps:
       - uses: actions/checkout@v3
         with:
@@ -85,25 +98,26 @@ jobs:
       - name: Setup python and scons
         uses: ./.github/actions/setup-godot-deps-4
 
-      - name: Install dependencies
-        run: |
-          sudo apt-get update
-          sudo apt-get install build-essential scons pkg-config gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
-
-      - name: Build GDExtension
+      - name: Build Godot artifact
+        shell: bash
         run: |
-          cd spine-godot/build
-          ./setup-extension.sh $GODOT_TAG $DEV
-          ./build-extension.sh linux arm64
+          ./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: gdextension-linux-arm64-${{ env.GODOT_TAG }}
-          path: spine-godot/example-v4-extension/bin/linux/*.so
+          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
 
-  build-macos:
+  godot-template-ios:
     runs-on: macos-latest
+    if: ${{ inputs.godot_mono == false }}
+
     steps:
       - uses: actions/checkout@v3
         with:
@@ -112,19 +126,19 @@ jobs:
       - 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 macos
+          ./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: gdextension-macos-${{ env.GODOT_TAG }}
-          path: spine-godot/example-v4-extension/bin/macos/macos.framework/*
+          name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
+          path: spine-godot/godot/bin/ios.zip
 
-  build-ios:
+  godot-template-macos:
     runs-on: macos-latest
     steps:
       - uses: actions/checkout@v3
@@ -134,32 +148,91 @@ jobs:
       - 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 ios
+          ./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: gdextension-ios-${{ env.GODOT_TAG }}
-          path: spine-godot/example-v4-extension/bin/ios/*.xcframework/**/*
+          name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
+          path: spine-godot/godot/bin/macos.zip
 
-  build-android:
+  godot-template-linux:
     runs-on: ubuntu-20.04
     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: |
+          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
+          ./spine-godot/build/setup.sh $GODOT_TAG false $GODOT_MONO
+          ./spine-godot/build/build-templates-v4.sh linux $GODOT_MONO
+
+      - name: Upload artifacts debug
+        uses: actions/upload-artifact@v4
+        with:
+          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
+
+      - 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:
+          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/setup.sh $GODOT_TAG false $GODOT_MONO
+          ./spine-godot/build/build-templates-v4.sh windows $GODOT_MONO
+
+      - name: Upload artifacts debug
+        uses: actions/upload-artifact@v4
+        with:
+          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
+
+      - name: Upload artifacts release
+        uses: actions/upload-artifact@v4
+        with:
+          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
+
+  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
+      - name: Download godot-editor-windows artifact
+        uses: actions/download-artifact@v4
         with:
-          fetch-depth: 0
+          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-ios artifact
+        uses: actions/download-artifact@v4
+        with:
+          name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios', 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: 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 windows artifact
+      - name: Download godot-template-web-debug 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-template-web-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download linux-x86_64 artifact
+      - name: Download godot-template-web-nothreads-release 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-template-web-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download linux-arm64 artifact
+      - name: Download godot-template-web-nothreads-debug 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-template-web-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download macos artifact
+      - name: Download godot-template-web-dlink-release 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-web-dlink-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download ios artifact
+      - name: Download godot-template-web-dlink-debug 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-web-dlink-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download android artifact
+      - name: Download godot-template-web-dlink-nothreads-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-web-dlink-nothreads-release', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Download web artifact
+      - name: Download godot-template-web-dlink-nothreads-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-web-dlink-nothreads-debug', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }}
 
-      - name: Package and upload artifacts
+      - 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/
+
+          echo "$GODOT_VERSION" > version.txt
+          GODOT_MAJOR_MINOR=$(echo "$GODOT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/')
+
+          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) }}
 
-          cd artifacts
-          # Ensure gdextension file is in root
-          cp ../spine-godot/spine_godot_extension.gdextension ./
+      - 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) }}
 
-          # Create directories matching the expected structure
-          mkdir -p bin/{windows,linux,macos/macos.framework,ios,android,web}
+      - 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/