Release 2.1.2 #4
This file contains hidden or 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
| # Release preflight — required status check for develop -> master PRs. | |
| # | |
| # Installed into each package repo by: | |
| # release.py install-preflight <package> | |
| # | |
| # WHY THIS EXISTS | |
| # These are solo repos: GitHub refuses to let a PR author review their own PR | |
| # (HTTP 422 "Review cannot be requested from pull request author"), so a human | |
| # review gate is unavailable. This gives a real blocking gate instead — the same | |
| # package-local gates the release driver enforces, run before the merge rather | |
| # than after it. | |
| # | |
| # WHY IT IS SAFE TO SHIP IN A PACKAGE REPO | |
| # Verified against upm 9.31.1 with a positive control: `.github/` is excluded | |
| # from the packed tarball automatically, even when it is not gitignored, while a | |
| # non-ignored control file at the package root IS packed. (Older packers did not | |
| # exclude it — the published googlesheetimporter 0.7.2 asset still contains | |
| # `package/.github/workflows/openai.yml`.) So no `.npmignore` is required. If | |
| # that ever regresses, `G24` will surface it as an unexpected added file. | |
| # | |
| # WHAT IT DOES NOT CHECK | |
| # Only gates decidable from the package directory plus the base ref, so the check | |
| # needs no token, no submodules and no network: G7 (bare SemVer), G8/G9 (CHANGELOG | |
| # heading matches package.json and is newest+highest), G10 (date sane), G11 | |
| # (version advances past master), G15 (the PR touches both files). Remote-state | |
| # gates (G0-G6, G12-G14) and the whole tarball chain (G20-G27) run locally in | |
| # `release.py preflight` / `pack` before the PR is opened. | |
| name: release-preflight | |
| on: | |
| pull_request: | |
| branches: [master] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: release-preflight-${{ github.event.pull_request.number }} | |
| cancel-in-progress: true | |
| jobs: | |
| preflight: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out the package | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| # The gate logic is shared rather than vendored into six repos, so there is | |
| # one source of truth. `ref` is explicit: actions/checkout defaults to the | |
| # target repo's DEFAULT branch (master), where the tooling does not exist | |
| # yet — omitting it fails with "No such file or directory". Retarget this to | |
| # master once the skill is merged there. | |
| - name: Check out the release tooling | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: CoderGamester/Frameworks | |
| ref: develop | |
| path: .release-tooling | |
| sparse-checkout: .claude/skills/unity-package-release/scripts | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Preflight | |
| run: | | |
| python3 .release-tooling/.claude/skills/unity-package-release/scripts/release.py \ | |
| preflight-pr --path . --base "origin/${{ github.base_ref }}" |