Summary: 7Mind mobile builds are split: Codemagic owns all production iOS and Android builds, while GitHub Actions handles CI (test, lint, codegen, docs). This is the opposite of the rest of the 7Mind system, which uses GitHub Actions heavily. Sources: direct code inspection of codemagic.yaml and .github/workflows/ in 7mind-mobile-apps-monorepo Last updated: 2026-05-15
Why it is split this way
iOS and Android builds need platform-specific runners (macOS for iOS, signed-key access for Android), TestFlight + Play Store credentials, and integration with mobile-specific services like Firebase Test Lab. Codemagic specializes in this stack. GitHub Actions on the 7mind-mobile-apps-monorepo runs the things that do not need shipping signed binaries: tests, analysis, code generation verification, translations, codecov, and the MkDocs publish.
If an agent looks at this repo and asks “where do production builds happen?”, the answer is Codemagic, not GitHub Actions. The README badges and Actions workflows can mislead.
Codemagic workflows
Defined in codemagic.yaml. Seven workflows ship binaries:
| Workflow | Flavor | Target | Publishes to |
|---|---|---|---|
flutter-ios-simulator | staging | lib/main_staging.dart | (preview only, no publish) |
flutter-ios-simulator-prod | production | lib/main_production.dart | (preview only, no publish) |
ios-workflow-staging | staging | lib/main_staging.dart | TestFlight (Internal Testers) |
ios-workflow-production | production | lib/main_production.dart | TestFlight; provisioning profile 7mind-dach-flutter-distr |
ios-workflow-zpp-submission | zpp | lib/main_staging.dart | TestFlight |
android-workflow-staging | staging | lib/main_staging.dart | Google Play internal track (draft) |
android-workflow-production | production | lib/main_production.dart | Google Play internal track (draft) |
android-workflow-zpp-submission | zpp | lib/main_staging.dart | Google Play internal track (draft) |
Two e2e workflows (e2e-tests-android-workflow, e2e-tests-ios-workflow) run Patrol tests on Firebase Test Lab.
Versioning is auto-incremented by Codemagic using the app-store-connect and google-play CLIs. Notification email for build failures: [email protected].
No Fastlane is in use. iOS code signing and submission is driven directly by Codemagic’s xcode-project integrations; Android signing uses keystore env vars (CM_KEYSTORE_PATH, CM_KEYSTORE_PASSWORD, etc.).
GitHub Actions workflows
All in .github/workflows/ on 7mind-mobile-apps-monorepo:
test.yml— runsmake ci_teston PRs and main pushesanalyze.yml—make ci_linton every pushinternal_builds.yml— builds a debug staging AAB on main as a smoke test; Slack-notifies on failure. Does not publish.codecov.yml— coverage uploadverify_code_gen.yml— runsbuild_runnerand fails if the working tree is dirtylocalize-gen.ymlandtranslations.yml— translation file generationtitle-validation.yml— PR title lintrelease_drafter.ymlandrelease_drafter_release.yml— draft and publish GitHub Releases; the release step bumpspubspec.yamlversionpublish_documentation.yml— builds MkDocs and uploads to GCS bucketmobile.6mind.deon main pushes. Service account[email protected]. Doc site athttps://mobile.6mind.de/site.publish_catalog.yml,publish_catalog_pr.yml— publishes the Bliss UI catalog web buildsupernova.yml— design system sync
Triggers
- GitHub Actions: PR opened/synced, push to
main, and manualworkflow_dispatchwhere relevant. - Codemagic: TBD exactly. Triggers are configured in Codemagic’s UI, not in
codemagic.yaml. Branch-based triggers are typical for the staging workflows and tag-based for production; confirm in the Codemagic dashboard before relying on this.
What agents should know
- Don’t migrate mobile builds into GitHub Actions without a strong reason. The split is intentional and the credentials live in Codemagic.
- When changing
pubspec.yamlor platform code that affects build output, both the GitHub Actions verify pipelines and the Codemagic build pipelines must pass for a release to ship. - The
release-drafterworkflow bumpspubspec.yamlversion on release publish. Do not also bump it manually in the same PR. - Patrol e2e is staging-flavor-only (see
pubspec.yamlpatrol config). The Firebase Test Lab runs are part of the Codemagic e2e workflows, not GitHub Actions. - Docs land on
mobile.6mind.deautomatically whendocumentation/docs/**changes onmain.
Related
- 7mind-mobile-apps-monorepo — the repo whose builds this describes
- github-actions — general pipeline topology and secrets conventions across 7Mind
- google-cloud — the GCS bucket and service account that host the doc site