mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-14 19:25:16 -05:00
157 lines
4.6 KiB
YAML
157 lines
4.6 KiB
YAML
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 }}
|