project builder #8
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: project builder | |
on: | |
workflow_dispatch: | |
inputs: | |
repository: | |
type: string | |
description: path to github project, in format <owner>/<repo> | |
required: true | |
deploy-to-pages: | |
type: boolean | |
description: deploy to gh-pages branch for <owner>/<repo> after build | |
default: true | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
concurrency: | |
group: build | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: ${{ matrix.targetPlatform }} build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
targetPlatform: | |
- StandaloneWindows64 | |
- StandaloneLinux64 | |
- WebGL | |
# outputs: | |
# release: ${{ steps.release.outputs.test }} | |
steps: | |
- name: clone project | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event.inputs.repository }} | |
lfs: true | |
submodules: recursive | |
token: ${{ secrets.PAT_TOKEN }} | |
- name: free disk space | |
run: | | |
sudo swapoff -a | |
sudo rm -f /swapfile | |
sudo apt clean | |
docker rmi $(docker image ls -aq) | |
df -h | |
- name: upload webgl template | |
uses: actions/upload-artifact@v4 | |
if: matrix.targetPlatform == 'WebGL' | |
with: | |
name: WebGL-Template | |
path: WebGL | |
# - name: cache Library | |
# uses: actions/cache@v3 | |
# with: | |
# path: Library | |
# key: Library-${{ matrix.targetPlatform }} | |
# restore-keys: Library-${{ matrix.targetPlatform }} | |
# | |
# - name: build project for ${{ matrix.targetPlatform }} | |
# uses: game-ci/unity-builder@v4 | |
# env: | |
# UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
# UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
# UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
# with: | |
# targetPlatform: ${{ matrix.targetPlatform }} | |
- name: fake build | |
run: | | |
mkdir -p build/${{ matrix.targetPlatform }} | |
echo "fake build for ${{ matrix.targetPlatform }}" > build/${{ matrix.targetPlatform }}/README.md | |
- name: upload ${{ matrix.targetPlatform }} build | |
uses: actions/upload-artifact@v4 | |
id: upload | |
with: | |
name: Build-${{ matrix.targetPlatform }} | |
path: build/${{ matrix.targetPlatform }} | |
# - name: archive ${{ matrix.targetPlatform }} release | |
# run: cd build/${{ matrix.targetPlatform }} && zip -r ../../neebo-${{ github.ref_name }}-${{ matrix.targetPlatform }}.zip . | |
# | |
# - name: publish ${{ matrix.targetPlatform }} release | |
# uses: softprops/action-gh-release@v1 | |
# id: release | |
# with: | |
# files: neebo-${{ github.ref_name }}-${{ matrix.targetPlatform }}.zip | |
- name: write matrix outputs | |
uses: cloudposse/github-action-matrix-outputs-write@main | |
id: out | |
with: | |
matrix-step-name: upload | |
matrix-key: ${{ matrix.targetPlatform }} | |
outputs: |- | |
uploads: ${{ steps.upload.outputs.artifact-url }} | |
read: | |
runs-on: ubuntu-latest | |
needs: build | |
if: ${{ github.event.inputs.deploy-to-pages == 'true' }} | |
steps: | |
- name: read matrix outputs | |
uses: cloudposse/github-action-matrix-outputs-read@main | |
id: read | |
with: | |
matrix-step-name: upload | |
outputs: | |
result: ${{ steps.read.outputs.result }} | |
deploy: | |
needs: read | |
runs-on: ubuntu-latest | |
if: ${{ github.event.inputs.deploy-to-pages == 'true' }} | |
steps: | |
- name: download webgl build | |
uses: actions/download-artifact@v3 | |
with: | |
name: Build-WebGL | |
path: . | |
- name: unpack webgl build | |
run: | | |
ls -lar . | |
ls -lar WebGL | |
cp -r WebGL/Build . | |
rm -rf WebGL | |
- name: download webgl template | |
uses: actions/download-artifact@v3 | |
with: | |
name: WebGL-Template | |
path: . | |
- name: get commit hash | |
id: get-commit | |
uses: pr-mpt/actions-commit-hash@v2 | |
- name: substitute env on index.html | |
uses: danielr1996/envsubst-action@1.1.0 | |
env: | |
LINUX_BUILD_LINK: ${{ fromJson(needs.read.outputs.result).uploads.StandaloneLinux64[0] }} | |
WINDOWS_BUILD_LINK: ${{ fromJson(needs.read.outputs.result).uploads.StandaloneWindows64[0] }} | |
BUILD_COMMIT: ${{ steps.get-commit.outputs.short }} | |
BUILD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
with: | |
input: ./index.html | |
output: ./index.html | |
- name: commit static site | |
run: | | |
git add . | |
git commit -m "publishing static site to gh-pages" | |
- name: push static site to ${{ github.event.inputs.repository }} on gh-pages | |
uses: ad-m/github-push-action@master | |
with: | |
repository: ${{ github.event.inputs.repository }} | |
branch: gh-pages | |
github_token: ${{ secrets.PAT_TOKEN }} |