Commit Graph

171 Commits

Author SHA1 Message Date
Eric Bailey 6e29591c34 Drop --paginate from nightly marker lookup
With --paginate, gh runs the jq aggregation per page and concatenates, so
sort_by | last ran per-page and extra workflow_dispatch runs could push past
per_page=100 and emit two URLs — which would break the curl download.

The artifacts API returns results newest-first, so the most recent marker is
always on page 1. Drop --paginate and take first(non-expired), which emits
exactly one URL (or none) by construction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:46:49 -05:00
Eric Bailey 22ef002e3f Read iOS build number from the IPA, not the remote counter
setGitHubOutput.sh derives the build number from `eas build:version:get`,
which reads EAS's remote counter. A --local build doesn't advance that
counter, but use-build-number-with-bump bakes counter+1 into the IPA — so
the queried number can be one less than what actually lands in App Store
Connect. That made distribute_only poll for a nonexistent build and would
have announced the wrong number in Slack.

Read CFBundleVersion straight from the built IPA instead, which is the
value uploaded to ASC. Repoint the fastlane assignment, the workflow_call
build-number output, and the production Slack message at it.

Android's version code has the same drift source but is display-only there
(no version-code lookup gates submission), so it's left as-is.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:41:30 -05:00
Eric Bailey 1857df1a1f Cap nightly changelog by total length, not per line
cut -c1-3900 caps each line independently, so a busy nightly window could
still exceed Apple's 4000-char "What to Test" limit (and flood Slack). Use
head -c 3900 to cap the combined changelog stream.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:36:40 -05:00
Eric Bailey 09b2fa05b6 Move nightly note-gen, marker, and alerts to the orchestrator
The release notes, commit marker, and Slack alerts are nightly-specific, so
move them out of the build workflows and into nightly-build.yml:

- prepare job reads the previous nightly-build-commit artifact and generates
  the shared changelog once
- iOS/Android builds run in parallel, consuming the notes (iOS via a new
  releaseNotes input); both expose version/build outputs via workflow_call
- per-platform Slack jobs post the notes with that platform's version
- record job advances the marker only after both builds succeed, so a failed
  night's commits roll into the next successful nightly's notes

Also harden the TestFlight key cleanup with a trap ... EXIT so the App Store
Connect private key is removed even if fastlane exits non-zero under bash -e.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:35:19 -05:00
Eric Bailey 04860bad9c Post nightly changelog to Slack
After a nightly iOS build is assigned to the QA Team TestFlight group, post
the generated changelog to the nightly builds Slack channel via the
NIGHTLY_BUILDS_SLACK_WEBHOOK secret. The payload is built with jq so the
multi-line notes are safely JSON-encoded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:22:41 -05:00
Eric Bailey 4c83dd80f3 Add TestFlight "What to Test" notes for nightly iOS builds
Generate the changelog from commits since the last nightly and pass it to
fastlane's upload_to_testflight changelog. The previous nightly's commit
SHA is stored as a dedicated nightly-build-commit artifact (independent of
the most-recent-testflight-commit cache), so the range is nightly-to-nightly.
Falls back to the last 30 commits when no prior marker is found.

Requires actions: read on the job to query past artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 17:08:17 -05:00
Eric Bailey 78ee0c8450 Add nightly iOS/Android build workflow
Add a scheduled workflow (2:10 AM UTC, after the nightly i18n job) that
builds both platforms via reusable workflow_call triggers:
- Android: testflight-android profile, producing an Internal release
- iOS: testflight profile, then assigns the build to the "QA Team"
  TestFlight group via fastlane (distribute_only)

Adds workflow_call triggers + an assignTestFlightGroup input to the iOS
workflow. Assigning to a TestFlight group requires App Store Connect API
key secrets (ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_P8_BASE64), which still
need to be added to the repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 16:46:02 -05:00
Samuel Newman d10137fd78 Simplify Android build: bundletool + eas submit (#9855)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2026-06-17 16:42:55 -05:00
Samuel Newman 6af477bcc2 Replace setup-cocoapods action with inline version assert (#10932)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:51:59 -07:00
Samuel Newman b8a6a8c8ce Pin every action to latest SHA (#10779)
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-16 14:35:19 -05:00
Austin McKinley 6c04170734 Replace broken @claude workflow with Bedrock-based claude-review/mention (#10880)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 21:36:10 -07:00
Samuel Newman f321122656 use opus 4.8 in github claude (#10837) 2026-06-10 01:55:03 -07:00
Samuel Newman 6d468c8ca4 [CI] Remove Wandalen/wretry.action, call pnpm install directly (#10745) 2026-06-05 22:49:02 +03:00
DS Boyce f99837040e Compile i18n before running lint (#10711) 2026-06-03 13:21:13 -07:00
DS Boyce 84d1785e12 Enable ESLint errors and suppress existing violations (#10490) 2026-06-03 11:27:44 -07:00
dependabot[bot] d08ab487d8 Bump actions/create-github-app-token from 1 to 3 (#10691)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 11:57:43 -07:00
dependabot[bot] a2c8b47b87 Bump marocchino/sticky-pull-request-comment from 2 to 3 (#10692)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 11:56:46 -07:00
dependabot[bot] 8e5ac6790f Bump slackapi/slack-github-action from 2.1.1 to 3.0.3 (#10693)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 11:55:39 -07:00
Austin McKinley 53fa6b2493 ci: add dependabot config with 7-day cooldown (#10475)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 11:04:28 -07:00
DS Boyce dfa82904ec Run GitHub actions in parallel (#10509)
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 12:24:55 -05:00
DS Boyce bdbf31a254 Use expo/expo-github-action v9 (#10689) 2026-06-02 09:47:22 -07:00
Samuel Newman 806f31dc93 Use pnpm to handle node/pnpm versions in Dockerfile (#10642) 2026-05-29 05:40:24 -07:00
Samuel Newman c21c031e74 [pnpm] Attempt to remove eas-cli from devDeps (#10589) 2026-05-22 09:17:12 -07:00
Samuel Newman 7fe2f892f6 Revert "Skip installing expo cli in CI (#10566)" (#10568) 2026-05-20 21:30:53 +03:00
Samuel Newman b73f9110e5 Skip installing expo cli in CI (#10566) 2026-05-20 09:50:44 -07:00
Samuel Newman 3d4ba946b3 [pnpm] Fix CI attempt 5 (#10567) 2026-05-20 09:33:02 -07:00
Samuel Newman 4908816253 [pnpm] Fix CI attempt 4 (#10565) 2026-05-20 08:58:55 -07:00
DS Boyce 70a1a665ed Fix eas invocation for GitHub Actions (#10555) 2026-05-20 03:52:35 -07:00
DS Boyce 12ab1dd2fd Fix CI by restoring changes from #10538 (#10550) 2026-05-19 11:46:07 -07:00
DS Boyce b4054bf2a7 Update GitHub Actions to Node.js v24-compatible versions (#10539) 2026-05-19 11:06:46 -07:00
DS Boyce af6041d7bc Fix CI attempt 3 (#10538) 2026-05-19 08:23:18 +03:00
DS Boyce 52342f1cda Fix pnpm lockfile integrity check (#10529) 2026-05-18 13:52:43 -07:00
Samuel Newman 79872b8be5 [pnpm] Fix CI attempt 2 (#10533) 2026-05-18 23:33:54 +03:00
Samuel Newman 5b622079b6 [pnpm] Fix CI (#10531) 2026-05-18 13:22:26 -07:00
Samuel Newman ff731849b0 Migrate from Yarn 1 to pnpm (#10465)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2026-05-18 09:51:04 -07:00
Austin McKinley ddcf7d74e9 ci: build link image on push to main (#10471)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 13:07:22 -07:00
Austin McKinley f0fec7a9da ci: build ogcard image on push to main (#10469)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:45:34 -07:00
DS Boyce 6f4ae14f36 Update to Node.js v24 (#10419) 2026-05-05 11:51:42 -07:00
Samuel Newman 46b8a5819b Harden iOS build extraction in bundle-deploy workflow (#10372)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-25 10:45:15 +03:00
Eric Bailey 9762a6eef4 See if we can harden the build extraction steps (#10348) 2026-04-23 17:02:17 -05:00
Samuel Newman 18052f08e0 Update claude workflow to 4.7 (#10315) 2026-04-21 06:19:52 -07:00
Eric Bailey f6b8854a9b Bump xcode in workflows (#10201) 2026-04-07 21:37:05 -05:00
heikadog 0c7b2d5353 Update issue templates to take uploads, and fix typo (#10036) 2026-03-11 14:50:35 -05:00
Spence Pope b4cb4c4d13 Revert "Add --what-to-test to iOS submissions (#9856)" (#9873) 2026-02-13 13:24:06 -08:00
Samuel Newman 57997d6d16 Add --what-to-test to iOS submissions (#9856)
Sets the "What to test" field in TestFlight to distinguish between
TestFlight and Production builds.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 06:01:27 -08:00
bnewbold a18f1b68e8 CI: auto-detect go runtime version from go.mod (#9766) 2026-01-28 13:16:55 -08:00
Samuel Newman 966ae68dd2 Set Claude model to Opus (#9672) 2026-01-09 08:45:38 -08:00
Samuel Newman d2aea9161b Delete claude-code-review.yml (#9671) 2026-01-09 08:35:38 -08:00
Samuel Newman 85a616eee0 Add Claude Code GitHub Workflow (#9667)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"
2026-01-09 07:46:02 -08:00
Samuel Newman c2e5a18e42 Unify build concurrency to one build per platform (#9655)
Configure concurrency groups so only one iOS build and one Android build
can run at a time across all workflows. This prevents manual builds from
conflicting with automatic builds triggered by fingerprint changes.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 07:35:13 -08:00