Skip to main content

max / goingson

1.3 KB · 30 lines History Blame Raw
1 // GoingsOn: iOS / TestFlight release recipe for Bento.
2 //
3 // Ports _private/docs/goingson/deploy.md (iOS section). Runs on mbp.
4 // `release-ios.sh` re-flattens the app icons (ITMS-90717 guard), builds the
5 // release archive, exports the IPA, and uploads to TestFlight Internal. The
6 // iOS "publish" IS that upload; there is no local artifact to collect and no
7 // Bento publish() call. A non-zero exit (or a missing "UPLOAD SUCCEEDED"
8 // banner, which the script checks for) fails the build step.
9
10 let h = build_host();
11 let v = version();
12 let r = repo();
13
14 step("checkout");
15 // Pin to the release tag v<version> (not whatever main is at pull time); the
16 // daemon also runs this as a cross-host preflight barrier before any build.
17 let sha = checkout_sha(h);
18 log("pinned " + h + " to v" + v + " @ " + sha);
19
20 // Gate: no artifact is built from code that fails clippy or its tests. It runs
21 // on this target's own build host, so a break confined to one platform is
22 // caught where it would have shipped.
23 step("prebuild");
24 sh_ok(h, "cd " + r + " && cargo clippy --workspace --all-targets " + feature_flags() + " -- -D warnings");
25 sh_ok(h, "cd " + r + " && cargo test --workspace " + feature_flags());
26
27 step("build");
28 sh_ok(h, "cd " + r + " && ./dist/release-ios.sh");
29 log("GoingsOn iOS v" + v + " uploaded to TestFlight; appears in App Store Connect within ~30 min.");
30