mirror of
https://github.com/game-ci/unity-builder.git
synced 2026-06-02 14:56:16 -07:00
Use the Checks API to flip failed macOS build conclusions to neutral (gray dash) so unstable builds don't show red X marks on PRs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
124 lines
4.1 KiB
YAML
124 lines
4.1 KiB
YAML
name: Builds - MacOS
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
checks: write
|
|
|
|
jobs:
|
|
buildForAllPlatformsMacOS:
|
|
name: ${{ matrix.targetPlatform }} on ${{ matrix.unityVersion }}
|
|
runs-on: macos-latest
|
|
continue-on-error: true
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
projectPath:
|
|
- test-project
|
|
unityVersion:
|
|
- 2021.3.45f1
|
|
- 2022.3.13f1
|
|
- 2023.2.2f1
|
|
targetPlatform:
|
|
- StandaloneOSX # Build a MacOS executable
|
|
- iOS # Build an iOS executable
|
|
include:
|
|
# Additionally test enableGpu build for a standalone windows target
|
|
- unityVersion: 6000.0.36f1
|
|
targetPlatform: StandaloneOSX
|
|
- unityVersion: 6000.0.36f1
|
|
targetPlatform: StandaloneOSX
|
|
buildProfile: 'Assets/Settings/Build Profiles/Sample macOS Build Profile.asset'
|
|
|
|
steps:
|
|
###########################
|
|
# Checkout #
|
|
###########################
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
|
|
###########################
|
|
# Cache #
|
|
###########################
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: ${{ matrix.projectPath }}/Library
|
|
key: Library-${{ matrix.projectPath }}-macos-${{ matrix.targetPlatform }}
|
|
restore-keys: |
|
|
Library-${{ matrix.projectPath }}-macos-
|
|
Library-
|
|
|
|
###########################
|
|
# Set Scripting Backend #
|
|
###########################
|
|
- name: Set Scripting Backend To il2cpp
|
|
run: |
|
|
mv -f "./test-project/ProjectSettings/ProjectSettingsIl2cpp.asset" "./test-project/ProjectSettings/ProjectSettings.asset"
|
|
|
|
###########################
|
|
# Build #
|
|
###########################
|
|
- uses: ./
|
|
env:
|
|
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
|
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
|
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
|
|
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
|
|
with:
|
|
buildName: 'GameCI Test Build'
|
|
projectPath: ${{ matrix.projectPath }}
|
|
unityVersion: ${{ matrix.unityVersion }}
|
|
targetPlatform: ${{ matrix.targetPlatform }}
|
|
buildProfile: ${{ matrix.buildProfile }}
|
|
customParameters: -profile SomeProfile -someBoolean -someValue exampleValue
|
|
# We use dirty build because we are replacing the default project settings file above
|
|
allowDirtyBuild: true
|
|
|
|
###########################
|
|
# Upload #
|
|
###########################
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Build ${{ matrix.targetPlatform }} on MacOS (${{ matrix.unityVersion }})${{ matrix.buildProfile && ' With Build Profile' || '' }}
|
|
path: build
|
|
retention-days: 14
|
|
|
|
markUnstableBuilds:
|
|
name: Mark unstable macOS builds
|
|
needs: buildForAllPlatformsMacOS
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { data: checkRuns } = await github.rest.checks.listForRef({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
ref: context.sha,
|
|
per_page: 100,
|
|
});
|
|
|
|
for (const run of checkRuns.check_runs) {
|
|
if (run.conclusion !== 'failure' || run.app?.slug !== 'github-actions') continue;
|
|
if (!run.name.includes('StandaloneOSX') && !run.name.includes('iOS')) continue;
|
|
|
|
await github.rest.checks.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
check_run_id: run.id,
|
|
conclusion: 'neutral',
|
|
output: {
|
|
title: `${run.name} (unstable)`,
|
|
summary: 'This macOS build is unstable and its failure does not block merging.',
|
|
},
|
|
});
|
|
}
|