Build spine-godot (Godot 4.x) #80
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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-editor-macos-self-hosted: | |
runs-on: Marios-MacBook-Pro | |
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.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: 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.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 | |
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 | |
ls -lah | |
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.zip s3://spine-godot/$BRANCH/$GODOT_TAG/spine-godot-templates-$BRANCH-$GODOT_TAG.tpz | |