123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- name: Build spine-godot GDExtension (Godot 4.x)
- on:
- workflow_call:
- inputs:
- godot_tag:
- required: true
- type: string
- default: "Godot tag not specified!"
- godot_version:
- required: true
- type: string
- default: "Godot version not specified!"
- dev:
- required: true
- type: boolean
- default: false
- env:
- AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
- AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- AWS_EC2_METADATA_DISABLED: true
- GODOT_TAG: ${{ inputs.godot_tag }}
- GODOT_VERSION: ${{ inputs.godot_version }}
- DEV_BUILD: ${{ inputs.dev }}
- jobs:
- build-windows:
- runs-on: windows-2022
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: Setup python and scons
- uses: ./.github/actions/setup-godot-deps-4
- - name: Build GDExtension
- shell: bash
- run: |
- cd spine-godot/build
- ./setup-extension.sh $GODOT_TAG $DEV_BUILD
- ./build-extension.sh windows
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: gdextension-windows-${{ env.GODOT_TAG }}
- path: spine-godot/example-v4-extension/bin/windows/*.dll
- build-linux-x86_64:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - 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 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
- ./build-extension.sh linux
- - 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
- build-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 GDExtension
- run: |
- cd spine-godot/build
- ./setup-extension.sh $GODOT_TAG $DEV_BUILD
- ./build-extension.sh macos
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: gdextension-macos-${{ env.GODOT_TAG }}
- path: spine-godot/example-v4-extension/bin/macos/**/*
- 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
- ./build-extension.sh ios
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: gdextension-ios-${{ env.GODOT_TAG }}
- path: spine-godot/example-v4-extension/bin/ios/**/*
- build-android:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - 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
- uses: actions/setup-java@v4
- with:
- distribution: temurin
- java-version: 17
- - name: Setup Android SDK & NDK
- uses: android-actions/setup-android@v2
- - name: Install NDK
- run: |
- yes | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --licenses
- ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;23.2.8568313"
- - 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
- ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/23.2.8568313 ./build-extension.sh android
- ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/23.2.8568313 ./build-extension.sh android x86_64
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: gdextension-android-${{ env.GODOT_TAG }}
- path: spine-godot/example-v4-extension/bin/android/*.so
- build-web:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: Set up Emscripten latest
- uses: mymindstorm/setup-emsdk@v11
- with:
- version: 3.1.26
- - 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
- ./build-extension.sh web
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: gdextension-web-${{ env.GODOT_TAG }}
- path: spine-godot/example-v4-extension/bin/web/*.wasm
- upload-to-s3:
- needs: [build-windows, build-linux-x86_64, build-macos, build-ios, build-android, build-web]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- - name: Download windows artifact
- uses: actions/download-artifact@v4
- with:
- name: gdextension-windows-${{ env.GODOT_TAG }}
- path: artifacts/gdextension-windows-${{ env.GODOT_TAG }}
- - name: Download linux-x86_64 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: Download macos artifact
- uses: actions/download-artifact@v4
- with:
- name: gdextension-macos-${{ env.GODOT_TAG }}
- path: artifacts/gdextension-macos-${{ env.GODOT_TAG }}
- - name: Download ios artifact
- uses: actions/download-artifact@v4
- with:
- name: gdextension-ios-${{ env.GODOT_TAG }}
- path: artifacts/gdextension-ios-${{ env.GODOT_TAG }}
- - name: Download android artifact
- uses: actions/download-artifact@v4
- with:
- name: gdextension-android-${{ env.GODOT_TAG }}
- path: artifacts/gdextension-android-${{ env.GODOT_TAG }}
- - name: Download web artifact
- uses: actions/download-artifact@v4
- with:
- name: gdextension-web-${{ env.GODOT_TAG }}
- path: artifacts/gdextension-web-${{ env.GODOT_TAG }}
- - name: Package and upload artifacts
- shell: bash
- if: env.AWS_ACCESS_KEY_ID != null
- run: |
- BRANCH=${GITHUB_REF#refs/heads/}
- echo "branch: $BRANCH"
- cd artifacts
- # Create directories matching the expected structure
- mkdir -p bin/{windows,linux,macos/macos.framework,ios,android,web}
- # Ensure gdextension file is in root
- cp ../spine-godot/spine_godot_extension.gdextension bin/
- # Move artifacts to their correct locations
- mv gdextension-windows-$GODOT_TAG/* bin/windows/
- mv gdextension-linux-x86_64-$GODOT_TAG/* bin/linux/
- mv gdextension-macos-$GODOT_TAG/* bin/macos/
- 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/
|