Skip to content

Split zip template releases in parts #78

Split zip template releases in parts

Split zip template releases in parts #78

Workflow file for this run

name: Build Platform Target
on:
push:
branches: [main]
pull_request:
branches: [main]
types: [opened, reopened, edited, synchronize]
jobs:
build-native:
runs-on: macos-latest
permissions:
pull-requests: write
actions: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
GODOT_BASE_BRANCH: main
CACHE_NAME: v-sekai-godot
strategy:
fail-fast: false
matrix:
precision: [double]
platform: [macos, ios]
target: [editor, template_release, template_debug]
exclude:
- platform: ios
target: editor
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
cancel-in-progress: true
steps:
- name: Set up dependencies
run: brew install just hyperfine scons
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: "1.22.3"
- name: Set up placeholders
run: |
mkdir -p godot/bin/
mkdir -p tpz/
mkdir -p editor
echo "This is the README for the Godot bin directory." > godot/bin/readme.md
echo "This is the README for the TPZ directory." > tpz/readme.md
echo "This is the README for the Editor directory." > editor/readme.md
- name: Checkout code
uses: actions/checkout@v4
- name: Cache SCons cache
uses: actions/cache@v4
if: always()
with:
path: |
.scons_cache
key: ${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
restore-keys: |
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-refs/heads/${{ env.GODOT_BASE_BRANCH }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}
- name: Fetch dependencies and Build Platform Target
run: |
export PLATFORM_ARGS="fetch-vulkan-sdk"
hyperfine --show-output --runs 1 'just $PLATFORM_ARGS && just build-platform-target ${{ matrix.platform }} ${{ matrix.target }} ${{ matrix.precision }}'
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
path: godot/bin/*
- name: Upload TPZ File
uses: actions/upload-artifact@v4
with:
name: Godot-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}.tpz
path: tpz
- name: Upload Godot Editor Files
uses: actions/upload-artifact@v4
with:
name: Godot-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
path: editor
build:
runs-on: ubuntu-latest
permissions:
pull-requests: write
actions: write
container:
image: fedora:39
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
GODOT_BASE_BRANCH: main
CACHE_NAME: v-sekai-godot
strategy:
fail-fast: false
matrix:
precision: [double]
platform: [linuxbsd, windows, android, web]
target: [editor, template_release, template_debug]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
cancel-in-progress: true
steps:
- name: Set up dependencies
run: dnf install -y just git
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: "1.22.3"
- name: Set up placeholders
run: |
mkdir -p godot/bin/
mkdir -p tpz/
mkdir -p editor
echo "This is the README for the Godot bin directory." > godot/bin/readme.md
echo "This is the README for the TPZ directory." > tpz/readme.md
echo "This is the README for the Editor directory." > editor/readme.md
- name: Checkout code
uses: actions/checkout@v4
- name: Cache SCons cache
uses: actions/cache@v4
# Skip cache on Linux, PR #12
if: ${{ matrix.platform != 'linuxbsd' }}
with:
path: |
.scons_cache
emsdk
osxcross
jdk
android_sdk
vulkan_sdk
mingw
key: ${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
restore-keys: |
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}-${{ matrix.platform }}-${{ matrix.target }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}-${{ github.sha }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-${{ github.ref }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}-refs/heads/${{ env.GODOT_BASE_BRANCH }}
${{ env.CACHE_NAME }}-${{ env.GODOT_BASE_BRANCH }}
- name: Fetch dependencies and Build Platform Target
run: |
just install_packages
export PLATFORM_ARGS=""
case "${{ matrix.platform }}" in
android)
PLATFORM_ARGS="fetch-openjdk setup-android-sdk"
;;
web)
PLATFORM_ARGS="setup-emscripten"
;;
windows)
PLATFORM_ARGS="fetch-llvm-mingw"
;;
macos)
PLATFORM_ARGS="build-osxcross fetch-vulkan-sdk"
;;
*)
PLATFORM_ARGS="nil"
;;
esac
hyperfine --show-output --runs 1 'just $PLATFORM_ARGS && just build-platform-target ${{ matrix.platform }} ${{ matrix.target }} ${{ matrix.precision }}'
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
path: godot/bin/*
- name: Upload TPZ File
uses: actions/upload-artifact@v4
with:
name: Godot-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}.tpz
path: tpz
- name: Upload Godot Editor Files
uses: actions/upload-artifact@v4
with:
name: Godot-${{ matrix.platform }}-${{ matrix.target }}-${{ matrix.precision }}
path: editor
merge-templates:
runs-on: ubuntu-latest
needs: ["build", "build-native"]
steps:
- name: Merge Export Templates
uses: actions/upload-artifact/merge@v4
with:
name: v-sekai-godot-templates-all
pattern: "*.tpz"
delete-merged: true
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: v-sekai-godot-templates
name: v-sekai-godot-templates-all
- name: Split Export Templates Symbols
run: |
mkdir -p v-sekai-godot-templates-symbols
# Suppress if null glob error
mv v-sekai-godot-templates/*.pdb v-sekai-godot-templates-symbols/ || true
mv v-sekai-godot-templates/*.debugsymbols v-sekai-godot-templates-symbols/ || true
mv v-sekai-godot-templates/*.dSYM v-sekai-godot-templates-symbols/ || true
tree
- name: Upload Export Templates
uses: actions/upload-artifact@v4
with:
name: v-sekai-godot-templates
path: v-sekai-godot-templates
- name: Upload Export Templates Symbols
uses: actions/upload-artifact@v4
with:
name: v-sekai-godot-templates-symbols
path: v-sekai-godot-templates-symbols
merge:
runs-on: ubuntu-latest
needs: merge-templates
strategy:
fail-fast: false
matrix:
platform: [linuxbsd, windows, macos, android, web]
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: v-sekai-godot-${{ matrix.platform }}
pattern: "*${{ matrix.platform }}*"
delete-merged: true
release:
runs-on: ubuntu-latest
needs: merge
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
outputs:
id: ${{ steps.create_release.outputs.id }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: latest.v-sekai-editor-${{ github.run_number }}
release_name: Latest Release of V-Sekai Godot Engine Editor
draft: false
prerelease: true
upload-templates:
runs-on: ubuntu-latest
needs: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
fail-fast: false
matrix:
type: [templates, templates-symbols]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
sparse-checkout: |
.github/zip-upload-split/action.yml
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: v-sekai-godot-${{ matrix.type }}
name: v-sekai-godot-${{ matrix.type }}
- name: Zip Artifacts
run: |
tree
zip -rm v-sekai-godot-${{ matrix.type }}.zip v-sekai-godot-${{ matrix.type }}
- name: Upload Zip Release Asset
uses: ./.github/zip-upload-split
with:
zip-path: ./v-sekai-godot-${{ matrix.type }}.zip
release-id: ${{ needs.release.outputs.id }}
token: ${GITHUB_TOKEN}
upload-releases:
runs-on: ubuntu-latest
needs: release
strategy:
fail-fast: false
matrix:
platform: [linuxbsd, windows, macos, android, web]
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: v-sekai-godot-${{ matrix.platform }}
name: v-sekai-godot-${{ matrix.platform }}
- name: Zip Artifacts
run: |
tree
chmod +x v-sekai-godot-${{ matrix.platform }}/*editor*
zip -r v-sekai-godot-${{ matrix.platform }}.zip v-sekai-godot-${{ matrix.platform }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: ./v-sekai-godot-${{ matrix.platform }}.zip
asset_name: v-sekai-godot-${{ matrix.platform }}.zip
asset_content_type: application/zip