assets submod #193
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 and Upload nightly game builds | |
on: | |
workflow_dispatch: | |
inputs: | |
build-defines: | |
type: string | |
description: Build defines to use | |
default: '-DGITHUB_BUILD' | |
save-artifact: | |
type: boolean | |
description: Save the build artifact to Github Actions (sends to itch otherwise) | |
default: false | |
push: | |
paths-ignore: | |
- '**/Dockerfile' | |
- '.github/workflows/build-docker-image.yml' | |
jobs: | |
build-game-on-host: | |
strategy: | |
matrix: | |
include: | |
- target: windows | |
- target: macos | |
runs-on: | |
- ${{ matrix.target }} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Make git happy | |
run: | | |
git config --global --replace-all safe.directory $GITHUB_WORKSPACE | |
- name: Get checkout token | |
uses: actions/create-github-app-token@v1 | |
id: app_token | |
with: | |
app-id: ${{ vars.APP_ID }} | |
private-key: ${{ secrets.APP_PEM }} | |
owner: ${{ github.repository_owner }} | |
- name: Checkout repo | |
uses: funkincrew/ci-checkout@v6 | |
with: | |
submodules: 'recursive' | |
token: ${{ steps.app_token.outputs.token }} | |
persist-credentials: false | |
- name: Setup build environment | |
uses: ./.github/actions/setup-haxe | |
with: | |
gh-token: ${{ steps.app_token.outputs.token }} | |
- name: Setup HXCPP dev commit | |
run: | | |
cd .haxelib/hxcpp/git/tools/hxcpp | |
haxe compile.hxml | |
cd ../../../../.. | |
- name: Build game | |
if: ${{ matrix.target == 'windows' }} | |
run: | | |
haxelib run lime build windows -v -release ${{ github.event.inputs.build-defines }} | |
timeout-minutes: 120 | |
- name: Build game | |
if: ${{ matrix.target != 'windows' }} | |
run: | | |
haxelib run lime build ${{ matrix.target }} -v -release --times ${{ github.event.inputs.build-defines }} | |
timeout-minutes: 120 | |
- name: Save build artifact to Github Actions | |
if: ${{ github.event.inputs.save-artifact }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-${{ matrix.target }} | |
path: export/release/${{matrix.target}}/bin/ | |
- name: Upload build artifacts | |
uses: ./.github/actions/upload-itch | |
with: | |
butler-key: ${{ secrets.BUTLER_API_KEY}} | |
target: ${{ matrix.target }} | |
build-game-in-container: | |
runs-on: build-set | |
container: ghcr.io/funkincrew/build-dependencies:latest | |
strategy: | |
matrix: | |
include: | |
- target: linux | |
- target: html5 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Get checkout token | |
uses: actions/create-github-app-token@v1 | |
id: app_token | |
with: | |
app-id: ${{ vars.APP_ID }} | |
private-key: ${{ secrets.APP_PEM }} | |
owner: ${{ github.repository_owner }} | |
- name: Checkout repo | |
uses: funkincrew/ci-checkout@v6 | |
with: | |
submodules: 'recursive' | |
token: ${{ steps.app_token.outputs.token }} | |
persist-credentials: false | |
- name: Config haxelib | |
run: | | |
haxelib --never newrepo | |
echo "HAXEPATH=$(haxelib config)" >> "$GITHUB_ENV" | |
- name: Restore cached dependencies | |
id: cache-hmm | |
uses: actions/cache@v4 | |
with: | |
path: .haxelib | |
key: haxe-hmm-${{ runner.os }}-${{ hashFiles('**/hmm.json') }} | |
- if: ${{ steps.cache-hmm.outputs.cache-hit != 'true' }} | |
name: Install dependencies | |
run: | | |
git config --global 'url.https://x-access-token:${{ steps.app_token.outputs.token }}@github.com/.insteadOf' https://github.com/ | |
git config --global advice.detachedHead false | |
haxelib --global run hmm install -q | |
cd .haxelib/hxcpp/git/tools/hxcpp && haxe compile.hxml | |
- if: ${{ matrix.target != 'html5' }} | |
name: Restore hxcpp cache | |
uses: actions/cache@v4 | |
with: | |
path: /usr/share/hxcpp | |
key: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }} | |
restore-keys: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }} | |
- name: Build game | |
run: | | |
haxelib run lime build ${{ matrix.target }} -v -release --times ${{ github.event.inputs.build-defines }} | |
timeout-minutes: 120 | |
- name: Save build artifact to Github Actions | |
if: ${{ github.event.inputs.save-artifact }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-${{ matrix.target }} | |
path: export/release/${{matrix.target}}/bin/ | |
- name: Upload build artifacts | |
uses: ./.github/actions/upload-itch | |
with: | |
butler-key: ${{ secrets.BUTLER_API_KEY}} | |
target: ${{ matrix.target }} |