-
Notifications
You must be signed in to change notification settings - Fork 47
feat: add Google Play Store automated deployment pipeline #88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Enhanced release workflow with Play Store upload support - Added Fastlane configuration for flexible deployment options - Support for multiple release tracks (internal, alpha, beta, production) - Configurable release status (draft, completed) - Debug symbols upload support - Comprehensive deployment documentation - Security best practices with service account authentication 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Update Fastfile rollout comment to clarify decimal representation - Remove unused GHUI_ environment variables from release workflow - Fix Play Console URL by removing placeholder developer ID 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements automated Google Play Store deployment using Fastlane and GitHub Actions for the V2er Android app. The changes add comprehensive CI/CD infrastructure for releasing apps to Google Play Store with proper credential management and deployment workflows.
Key changes:
- Added Fastlane configuration with lanes for different release tracks (internal, alpha, beta, production)
- Enhanced GitHub Actions workflows with Play Store upload capabilities and manual deployment options
- Created comprehensive deployment documentation with security best practices
Reviewed Changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
fastlane/Fastfile |
Defines Fastlane lanes for building, testing, and deploying to various Play Store tracks |
fastlane/Appfile |
Configures package name and Google Play Console API credentials |
docs/PLAY_STORE_DEPLOYMENT.md |
Comprehensive deployment guide with setup instructions and troubleshooting |
Gemfile |
Ruby dependencies for Fastlane and Firebase distribution plugin |
.gitignore.fastlane |
Git ignore rules for Fastlane-generated files and sensitive data |
.github/workflows/release.yml |
Enhanced release workflow with Play Store deployment capabilities |
.github/workflows/fastlane-deploy.yml |
Dedicated workflow for manual Fastlane deployments |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| upload_to_play_store( | ||
| track: "beta", | ||
| track_promote_to: "production", | ||
| rollout: "0.1", # Start with 10% rollout (0.1 = 10%) |
Copilot
AI
Sep 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The rollout value should be a string representing a percentage between 0.05 (5%) and 1.0 (100%). The comment states 10% but 0.1 represents 10%, not the minimum 5% that Google Play typically requires for staged rollouts.
| desc "Submit a new build to Crashlytics for testing" | ||
| lane :crashlytics_beta do | ||
| build_apk | ||
| # Assuming Firebase Crashlytics is configured | ||
| # firebase_app_distribution( | ||
| # app: ENV["FIREBASE_APP_ID"], | ||
| # groups: "testers", | ||
| # release_notes: "New beta build" | ||
| # ) | ||
| end |
Copilot
AI
Sep 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The crashlytics_beta lane builds an APK but doesn't use it since the Firebase distribution code is commented out. Either implement the Firebase distribution functionality or remove this incomplete lane to avoid confusion.
| # Get recent commits | ||
| git log --pretty=format:"• %s" -5 >> whatsnew/whatsnew-en-US | ||
| # Chinese version | ||
| echo "版本 ${{ needs.prepare.outputs.version }}" > whatsnew/whatsnew-zh-CN | ||
| echo "" >> whatsnew/whatsnew-zh-CN | ||
| git log --pretty=format:"• %s" -5 >> whatsnew/whatsnew-zh-CN |
Copilot
AI
Sep 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using git commit messages directly in Play Store release notes is problematic because they may contain technical details inappropriate for end users and could exceed Play Store's 500-character limit. Consider using predefined release notes or filtering commit messages for user-facing content.
| - name: Upload to Play Store (without debug symbols) | ||
| if: steps.find-files.outputs.symbols_path == '' || steps.upload-with-symbols.outcome == 'failure' | ||
| uses: r0adkll/upload-google-play@v1 | ||
| with: | ||
| serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }} | ||
| serviceAccountJsonPlainText: ${{ secrets.PLAY_STORE_SERVICE_ACCOUNT_JSON }} |
Copilot
AI
Sep 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using serviceAccountJsonPlainText exposes the service account JSON in workflow logs. Consider using serviceAccountJson with a file path or ensure the workflow logs are properly secured and access is restricted.
Summary
Changes
Test Plan
🤖 Generated with Claude Code