feat: Automate deployment using github actions and fastlane#61
Conversation
- Configure Fastlane for iOS (TestFlight & App Store) - Configure Fastlane for Android (Google Play) - Add GitHub Actions workflows for CI/CD - Set up Fastlane Match for iOS code signing - Add deployment documentation and guides - Add deployment npm scripts - Secure Android keystore configuration Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Version numbers automatically set from git tags - Supports platform-specific tags (ios/v1.2.3, android/v1.2.3) - Supports generic tags (v1.2.3) for both platforms - Falls back to current version if no tag present - Updated documentation with tag workflow examples
- Add docs/ARCHITECTURE.md with complete system overview - Add docs/README.md as documentation index - Add docs/CHANGELOG.md for version tracking - Document all tools, workflows, and processes - Include troubleshooting and maintenance guides
- Rename ARCHITECTURE.md → DEPLOYMENT.md - Remove README.md and CHANGELOG.md for simplicity - Single comprehensive doc easier to maintain
b89b9b9 to
14b9551
Compare
The previous heredoc approach had indented lines causing leading whitespace in variable names, and was missing required env variables. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Direct ${{ secrets }} interpolation in shell commands can mangle
multiline values. Pass through env var instead and add a verification
step to catch .env issues before the build starts.
Also fix gradle.properties heredoc leading whitespace.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Disable parallel Gradle execution and configure Kotlin daemon with dedicated heap to prevent out-of-memory during native compilation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…perties react-native-gesture-handler 2.27.1 requires new architecture codegen (ViewManagerWithGeneratedInterface). The project uses newArchEnabled=true locally but it was missing from the CI-generated gradle.properties. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Version 2.26+ requires ViewManagerWithGeneratedInterface which is not available with React Native 0.76.6, causing Kotlin compilation failures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add git config and push step to both Android and iOS workflows so Fastlane's version code/build number commits persist after CI runs - Checkout main branch instead of detached HEAD from tag - Bump Android versionCode to 17 (CI will increment to 18) since 17 was already uploaded to Google Play Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
islandbitcoin
left a comment
There was a problem hiding this comment.
Thanks for setting this up — secret handling, keystore decode/cleanup, and gitignoring the credential files all look good. A handful of fastlane fixes are needed before this can cut a real release; inline suggestions below (1–4 are pre-release blockers).
Note: main is currently unprotected, so the push-to-main version-bump steps are fine today — revisit if you add branch protection.
| "react-native": "0.77.1", | ||
| "react-native-animatable": "^1.4.0", | ||
| "react-native-gesture-handler": "^2.26.0", | ||
| "react-native-gesture-handler": "~2.25.0", |
There was a problem hiding this comment.
Unrelated to deployment — react-native-gesture-handler is downgraded ^2.26.0 → ~2.25.0. Intentional, or an accidental revert? If it isn't needed for the build, consider dropping it from this PR.
There was a problem hiding this comment.
It’s required for the build. The Android build fails with version 2.26.0.
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-authored-by: Island Bitcoin <34528298+islandbitcoin@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
^2.26.0 resolves to 2.32.0 which fails to compile with Kotlin 2.0.21. ~2.25.0 keeps it at 2.25.x which builds successfully. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…perties - iOS: Use macos-15 runner and iPhone 16 simulator (iPhone 15 not available at iOS 18.2) - Android: Copy gradle.properties from example before build (hermesEnabled property needed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The debug signing config references a local debug.keystore that doesn't exist on CI runners. Generate one before building. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
No description provided.