capability check: a checkout without .entitlements is a warning about this checkout only (built from another branch?), naming the current branch and the local branches / worktrees that have an .entitlements file, never a claim about the build; the newest built IPA (highest build number) is read (codesign -d --entitlements on macOS, else the Mach-O signature's entitlements blob) and compared as 'uploaded build N'; without one the output says the App Store Connect API does not expose a build's entitlements; exportedIpas moved to cli/lib/xcode.ts; pitfall 67; tests

This commit is contained in:
CRTkafa 2026-10-14 19:17:45 +08:00
parent daae3715bf
commit 2b07f56673
7 changed files with 230 additions and 27 deletions

View file

@ -767,3 +767,15 @@ that fails without the fix (see CONTRIBUTING.md).
dedicated command the message names (bundle id capabilities: `apple signing ensure`; IAPs: `apple iap`; listing:
`apple listing`, ...), which runs anywhere with its own dry run and read-back.
- **Guard:** `dedicatedCommand` (cli/api/gate.ts), `tests/signing-capabilities.test.ts`.
## 67. "builds ship without push / Game Center" while the uploaded build had both
- **Do:** a checkout without `.entitlements` says nothing about the build: native changes may live on a release
branch on purpose (OTA fingerprint on main). The comparison warns only about this checkout ("built from another
branch?"), names the current branch and the local branches / worktrees that have an `.entitlements` file, and is
never a blocker. The real answer is the built IPA: with one in build/ios/export (highest build number, newest file)
storebound reads its entitlements (`codesign -d --entitlements :-` on macOS, else the Mach-O signature blob) and
compares those, labelled "uploaded build N". The App Store Connect API does not expose a build's entitlements, so
without a local IPA it says that instead of guessing.
- **Guard:** `checkoutInfo`, `builtIpaEntitlements` (cli/apple/signing.ts), `machoEntitlements`,
`compareCapabilities` (cli/lib/signing.ts), `tests/signing-capabilities.test.ts` (entitlements only on another
branch; IPAs with entitlements).