Skip to content

project builder

project builder #8

Workflow file for this run

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 }}