name: Build spine-godot (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!" 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 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.18 GODOT_TAG: ${{ inputs.godot_tag }} GODOT_VERSION: ${{ inputs.godot_version }} GODOT_MONO: ${{ inputs.godot_mono }} GODOT_MONO_UPLOAD_SUFFIX: ${{ inputs.godot_mono == true && '-mono' || '' }} jobs: godot-editor-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 - name: Build Godot artifact shell: bash run: | ./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@v3 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-windows', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} path: spine-godot/godot/bin/**/* godot-editor-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 - 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 ./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@v3 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-linux', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} path: spine-godot/godot/bin/**/* 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 - 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@v3 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 - 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@v3 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 - 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@v3 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 with: fetch-depth: 0 - name: Setup python and scons uses: ./.github/actions/setup-godot-deps - 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@v3 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@v3 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 - 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@v3 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@v3 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 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Setup python and scons uses: ./.github/actions/setup-godot-deps - name: Build Godot artifact shell: bash run: | ./spine-godot/build/setup.sh $GODOT_TAG false ./spine-godot/build/build-templates-v4.sh android - name: Upload artifacts debug uses: actions/upload-artifact@v3 with: 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 - name: Upload artifacts release uses: actions/upload-artifact@v3 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@v3 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: fetch-depth: 0 - name: Set up Emscripten latest uses: mymindstorm/setup-emsdk@v11 with: version: ${{env.EM_VERSION}} - name: Verify Emscripten setup run: | emcc -v - name: Setup python and scons uses: ./.github/actions/setup-godot-deps - name: Build Godot artifact run: | ./spine-godot/build/setup.sh $GODOT_TAG false ./spine-godot/build/build-templates-v4.sh web - name: Upload artifacts debug uses: actions/upload-artifact@v3 with: 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@v3 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 upload-to-s3: 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: - name: Download godot-editor-windows artifact uses: actions/download-artifact@v2 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@v2 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@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-editor-macos.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-ios artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-ios.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-macos artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-macos.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-windows-release artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-release.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-windows-debug artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-windows-debug.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-linux-release artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-release.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-linux-debug artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-linux-debug.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-android-release artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-release.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-android-debug artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-debug.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-android-source artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-android-source.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-web-release artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-release.zip', env.GODOT_TAG, env.GODOT_MONO_UPLOAD_SUFFIX) }} - name: Download godot-template-web-debug artifact uses: actions/download-artifact@v2 with: name: ${{ format('{0}-{1}{2}.zip', 'godot-template-web-debug.zip', 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/ echo "$GODOT_VERSION" > version.txt ls -lah 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_debug.zip web_release.zip 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@v2 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@v2 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@v2 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@v2 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@v2 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@v2 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@v2 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@v2 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 godot-editor-windows-mono.zip godot-$BRANCH-$GODOT_TAG-mono.exe GodotSharp zip 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.tpz