diff --git a/.github/workflows/build-tests-mac.yml b/.github/workflows/build-tests-mac.yml index 8f1d5b92..c698d0dc 100644 --- a/.github/workflows/build-tests-mac.yml +++ b/.github/workflows/build-tests-mac.yml @@ -8,6 +8,9 @@ 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 }} @@ -86,3 +89,35 @@ jobs: 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.', + }, + }); + }