| name: Deploy to Play Store |
| on: |
| # Enable manual run |
| workflow_dispatch: |
| inputs: |
| lane: |
| description: "Fastlane lane" |
| required: true |
| default: "beta" |
| type: choice |
| options: |
| - beta |
| - promote_to_production |
| - production |
| |
| # Declare default permissions as read only. |
| permissions: read-all |
| |
| jobs: |
| fastlane-deploy: |
| runs-on: ubuntu-latest |
| steps: |
| # Set up Flutter. |
| - name: Clone Flutter repository with master channel |
| uses: subosito/flutter-action@1e6ee87cb840500837bcd50a667fb28815d8e310 |
| with: |
| channel: master |
| - run: flutter doctor -v |
| |
| # Checkout gallery code and get packages. |
| - name: Checkout gallery code |
| uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b |
| - run: flutter pub get |
| |
| # Setup Ruby, Bundler, and Gemfile dependencies |
| - name: Setup Fastlane |
| uses: ruby/setup-ruby@3068fa83f9cbd7ae106cac45483635a2f3a195c9 |
| with: |
| ruby-version: "2.6" |
| bundler-cache: true |
| working-directory: android |
| |
| - name: Configure Keystore |
| run: | |
| echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > app/upload-keystore.jks |
| echo "storeFile=upload-keystore.jks" >> key.properties |
| echo "keyAlias=$KEYSTORE_KEY_ALIAS" >> key.properties |
| echo "storePassword=$KEYSTORE_STORE_PASSWORD" >> key.properties |
| echo "keyPassword=$KEYSTORE_KEY_PASSWORD" >> key.properties |
| env: |
| PLAY_STORE_UPLOAD_KEY: ${{ secrets.PLAY_STORE_UPLOAD_KEY }} |
| KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }} |
| KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }} |
| KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }} |
| working-directory: android |
| |
| # Build and deploy with Fastlane (by default, to beta track) 🚀. |
| # Naturally, promote_to_production only deploys. |
| - run: bundle exec fastlane ${{ github.event.inputs.lane || 'beta' }} |
| env: |
| PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }} |
| working-directory: android |