Skip to content

feat: Fastlane-based TestFlight publishing via GitHub Actions#53

Open
devin-ai-integration[bot] wants to merge 3 commits into
developfrom
devin/1780248338-fastlane-testflight
Open

feat: Fastlane-based TestFlight publishing via GitHub Actions#53
devin-ai-integration[bot] wants to merge 3 commits into
developfrom
devin/1780248338-fastlane-testflight

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented May 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a complete Fastlane + GitHub Actions pipeline that builds the iOS app and uploads it to TestFlight on every push to main (or manual workflow_dispatch).

What's added

File Purpose
Gemfile Pins fastlane ~> 2.225
fastlane/Appfile app_identifier + team_id (env-overridable)
fastlane/Fastfile ios beta lane — see below
.github/workflows/testflight.yml macOS-15 runner, Ruby setup, invokes fastlane ios beta, tags on success
docs/TESTFLIGHT.md Full setup guide: secrets, ASC API key creation, cert export, provisioning profiles, changelog behavior, local run, troubleshooting
.gitignore Fastlane artifacts (report.xml, profiles/, vendor/bundle/, etc.)
.gitleaks.toml Allowlist docs/TESTFLIGHT.md (placeholder secret names trigger generic-api-key)

fastlane ios beta lane flow

  1. setup_ci (temp keychain on CI)
  2. app_store_connect_api_key — modern API key auth via ASC_KEY_ID / ASC_ISSUER_ID / ASC_KEY_CONTENT
  3. Import distribution cert from IOS_DISTRIBUTION_CERTIFICATE_P12 (base64 P12)
  4. sigh downloads App Store provisioning profiles for com.bhat.intel + com.bhat.intel.LoopShare via the API key
  5. increment_build_numberGITHUB_RUN_NUMBER
  6. Changelog: last_git_tag..HEAD (falls back to last 50 commits if no tags)
  7. build_app — archives Loop_iOS scheme, exports with app-store + manual signing
  8. upload_to_testflight — distributes to external groups if TESTFLIGHT_GROUPS is set

Required GitHub secrets

ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_CONTENT (base64 .p8), APPLE_TEAM_ID, IOS_DISTRIBUTION_CERTIFICATE_P12 (base64 P12), IOS_CERTIFICATE_PASSWORD

Optional: TESTFLIGHT_GROUPS (comma-separated beta group names for external distribution)

Manual setup Ash must do

  1. Create an App Store Connect API key with App Manager role → store ASC_KEY_ID, ASC_ISSUER_ID, base64-encoded .p8 as ASC_KEY_CONTENT
  2. Export the iOS Distribution certificate as .p12 from Keychain Access → base64-encode → IOS_DISTRIBUTION_CERTIFICATE_P12 + IOS_CERTIFICATE_PASSWORD
  3. Set APPLE_TEAM_ID (currently 6HT9LCU3B7)
  4. Ensure App Store distribution provisioning profiles exist in the Apple Developer portal for both bundle IDs
  5. (Optional) Set TESTFLIGHT_GROUPS to distribute to external testers

Full details in docs/TESTFLIGHT.md.

Assumptions

  • The iOS scheme is Loop_iOS (from xcshareddata/xcschemes/Loop_iOS.xcscheme)
  • Provisioning profiles are fetched via sigh + ASC API key (no match repo needed)
  • Workflow tags successful deploys as testflight/<run_number> for changelog anchoring
  • Secrets.xcconfig is written at build time from APPLE_TEAM_ID (gitignored, same pattern as README setup)

Link to Devin session: https://app.devin.ai/sessions/c2b999b9520646c89b4d2321e8ba4816

- Gemfile with fastlane ~> 2.225
- fastlane/Appfile with app identifier and team ID
- fastlane/Fastfile with beta lane: ASC API key auth, cert import,
  sigh profile download, changelog from git tags, build_app, upload_to_testflight
- .github/workflows/testflight.yml triggered on push to main + workflow_dispatch
- docs/TESTFLIGHT.md with full setup guide (secrets, API key creation,
  cert export, provisioning profiles, changelog, local run, troubleshooting)
- .gitignore updated for Fastlane artifacts

Co-Authored-By: bot_apk <apk@cognition.ai>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration devin-ai-integration Bot requested a review from ashbhat May 31, 2026 17:28
@vercel

vercel Bot commented May 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
loop-harness Ready Ready Preview, Comment Jun 1, 2026 5:06pm

The generic-api-key rule matches placeholder secret names like
IOS_DISTRIBUTION_CERTIFICATE_P12 in the setup documentation.
Same pattern as the existing Secrets.xcconfig.example allowlist.

Co-Authored-By: bot_apk <apk@cognition.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants