Skip to content

project builder

project builder #43

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
default: plyr4/unity-ufo
ref:
type: string
description: ref to use when cloning the project. default is the head ref of the target repository
required: false
deploy-to-pages:
type: boolean
description: deploy to gh-pages branch for <owner>/<repo> after build
default: true
pages-deploy-branch:
type: string
description: branch to use when deploying to pages. default is gh-pages
required: false
default: gh-pages
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
steps:
- name: clone project
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.ref || '' }}
repository: ${{ github.event.inputs.repository }}
lfs: true
submodules: recursive
token: ${{ secrets.PAT_TOKEN }}
- name: write git info
id: git
run: |
echo "commit_message=$(git log -1 --pretty=%B)" >> "$GITHUB_OUTPUT"
echo "commit_hash=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
echo "foo=bar" >> $GITHUB_OUTPUT
# - 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: 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-${{ matrix.targetPlatform }}.zip .
# - name: publish ${{ matrix.targetPlatform }} pre-release
# uses: softprops/action-gh-release@v1
# id: release
# with:
# prerelease: true
# name: ${{ github.event.inputs.repository }}-${{ matrix.targetPlatform }}
# tag_name: ${{ github.event.inputs.repository }}-${{ matrix.targetPlatform }}
# files: neebo-${{ matrix.targetPlatform }}.zip
# fail_on_unmatched_files: true
- name: write matrix outputs
uses: cloudposse/github-action-matrix-outputs-write@main
id: out
with:
matrix-step-name: release
matrix-key: ${{ matrix.targetPlatform }}
outputs: |-
releases: ${{ steps.release.outputs.assets }}
git: ${{ steps.git.outputs }}
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: release
outputs:
result: ${{ steps.read.outputs.result }}
git: ${{ steps.read.outputs.git }}
deploy:
needs: read
runs-on: ubuntu-latest
if: ${{ github.event.inputs.deploy-to-pages == 'true' }}
steps:
- name: clone target repository
uses: actions/checkout@v4
with:
repository: ${{ github.event.inputs.repository }}
ref: gh-pages
token: ${{ secrets.PAT_TOKEN }}
# - name: clear existing content
# run: |
# mv .git ../.git
# rm -rf *
# mv ../.git .git
# - name: download webgl build
# uses: actions/download-artifact@v4
# 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@v4
# with:
# name: WebGL-Template
# path: .
- name: check env
run: |
echo "${{ fromJson(needs.read.outputs.result).git.StandaloneLinux64 }}"
echo "${{ fromJson(needs.read.outputs.result).git.StandaloneLinux64.foo }}"
echo "${{ fromJson(needs.read.outputs.result).git.StandaloneLinux64.commit_hash }}"
echo "${{ fromJson(needs.read.outputs.result).git.StandaloneLinux64.commit_message }}"
# - name: substitute env on index.html
# uses: danielr1996/envsubst-action@1.1.0
# env:
# LINUX_BUILD_LINK: ${{ fromJson(needs.read.outputs.result).releases.StandaloneLinux64[0].browser_download_url }}
# WINDOWS_BUILD_LINK: ${{ fromJson(needs.read.outputs.result).releases.StandaloneWindows64[0].browser_download_url }}
# BUILD_COMMIT: ${{ steps.git.outputs.commit_hash }}
# BUILD_COMMIT_MESSAGE: ${{ steps.git.outputs.commit_message }}
# with:
# input: ./index.html
# output: ./index.html
# - name: commit static site
# run: |
# git config user.name github-actions
# git config user.email github-actions@github.com
# git add .
# git commit -m "publishing static site"
# - 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: ${{ github.event.inputs.pages-deploy-branch || 'gh-pages' }}
# github_token: ${{ secrets.PAT_TOKEN }}