From 8264e1fc3518d61d789e0cdff0b39b4a8b9fd3fd Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Sun, 18 Oct 2026 03:00:00 +0700 Subject: [PATCH] ci(release): fix the CI notes left stale by Release Build --- .claude/rules/ci.md | 5 +++-- .github/workflows/macos-tests.yml | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.claude/rules/ci.md b/.claude/rules/ci.md index 0e588c7bdc..ef74be4c75 100644 --- a/.claude/rules/ci.md +++ b/.claude/rules/ci.md @@ -53,7 +53,7 @@ The required check names are in `AGENTS.md` (CI). Reading a red check: `.claude/ - Push to main or `release/**`, and dispatch; never a PR. Each commit has its own concurrency group and is never cancelled. Not a required check. - `Changes (Release)` outputs `run` (detector `release`). `Release Build` runs on `xcode-27` with a 150-minute limit. - Setup as macOS Tests up to the SPM restore, which it never saves; then Go, `build-dameng.sh both`, `build-hana.sh both` and create-dmg. -- `scripts/release/build.sh app --unsigned` archives the `TablePro` scheme; `build.sh plugins --unsigned` builds `RegistryPlugins` and copies the publish set (the `.github/plugin-registry.json` entries not bundled) to `build/release/plugins`. Both build universal and run `lipo -verify_arch arm64 x86_64` and `verify-plugin-loads.sh`. +- `scripts/release/build.sh app --unsigned` archives the `TablePro` scheme; `build.sh plugins --unsigned` builds `RegistryPlugins` and copies the publish set (the `.github/plugin-registry.json` entries not bundled) to `build/release/plugins`. Both build universal. They run `lipo -verify_arch` once per arch (arm64, x86_64), since Xcode 27's `lipo` takes one arch per call, then `verify-plugin-loads.sh`. - `scripts/release/package.sh app 0.0.0-dev --unsigned` writes the release assets: the DMG, the `.tar.xz` (extracted and compared with the app) and the dSYMs zip; `package.sh plugins` writes one zip per plugin and the plugin dSYMs zip. - The plugins build runs after an app failure too. The xcodebuild logs in `build/release/logs` upload only on failure. @@ -119,7 +119,8 @@ The required check names are in `AGENTS.md` (CI). Reading a red check: `.claude/ ## Caches and runner budget - Swift package checkouts live in `~/.spm-cache`, keyed `spm--` with prefix restore. macOS Tests saves it only on a push and only on a miss: a cache saved on a PR ref is visible to that PR alone. -- `build.yml` and `release-build.yml` restore that cache and never save it; a save in tag scope is unreadable from other tags. +- `build.yml` restores that cache and never saves it, since a save in tag scope is unreadable from other tags. +- `release-build.yml` restores it and leaves the save to macOS Tests. - There is no other cache: no libs or DerivedData cache, and none in the iOS, plugin or Ubuntu workflows. - CI fits the GitHub Free and Pro plans: no paid larger runner, no self-hosted Mac. At most 5 macOS jobs run at once, and main runs queue behind PR runs for those slots. diff --git a/.github/workflows/macos-tests.yml b/.github/workflows/macos-tests.yml index d57c0b8c4a..71750d9bc0 100644 --- a/.github/workflows/macos-tests.yml +++ b/.github/workflows/macos-tests.yml @@ -6,7 +6,7 @@ on: branches: [main, 'release/**'] workflow_dispatch: -# A pull request keeps only its newest run. Each main commit gets a group of its own, so no main +# A pull request keeps only its newest run. Each pushed commit gets a group of its own, so no push # run is cancelled or replaced by the next merge; runs wait for a free runner instead. concurrency: group: macos-tests-${{ github.event_name == 'pull_request' && github.ref || github.sha }} @@ -64,7 +64,7 @@ jobs: - name: Generate the Xcode project run: scripts/generate-project.sh macos - # Saved from main only: a cache saved on a pull request ref is visible to that PR alone. + # Saved on a push only: a cache saved on a pull request ref is visible to that PR alone. - name: Restore Swift package checkouts id: spm uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 @@ -99,8 +99,8 @@ jobs: CODE_SIGNING_ALLOWED=NO COMPILER_INDEX_STORE_ENABLE=NO COMPILATION_CACHE_ENABLE_CACHING=NO \ | xcbeautify --renderer github-actions - # The TablePro scheme builds only the bundled plugins. AllPlugins is the one compile of the - # registry-only drivers before a plugin tag, so main always runs it. + # The TablePro scheme builds only the bundled plugins. AllPlugins also compiles the + # registry-only drivers, so every push runs it. - name: Set up Go for the SAP HANA helper if: ${{ !cancelled() && env.COMPILE_PLUGINS == 'true' }} uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0