diff --git a/.github/workflows/release_deploy_play_store.yml b/.github/workflows/release_deploy_play_store.yml new file mode 100644 index 0000000..109a4fd --- /dev/null +++ b/.github/workflows/release_deploy_play_store.yml @@ -0,0 +1,68 @@ +## See https://github.com/flutter/gallery/blob/main/.github/workflows/release_deploy_play_store.yml + +name: Deploy to Play Store +on: + # Enable manual run + workflow_dispatch: + inputs: + lane: + description: "Fastlane lane" + required: true + default: "alpha" + type: choice + options: + - alpha + - 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 stable channel + uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d + with: + channel: stable + - run: flutter doctor -v + + # Setup app + - name: Checkout Paperless mobile, get packages and run code generators + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - run: | + pushd scripts + bash install_dependencies.sh + popd + + # Setup Ruby, Bundler, and Gemfile dependencies + - name: Setup Fastlane + uses: ruby/setup-ruby@8df78e55761745aad83acaf3ff12976382356e6d + 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 alpha track) 🚀. + # Naturally, promote_to_production only deploys. + - run: bundle exec fastlane ${{ github.event.inputs.lane || 'alpha' }} + env: + PLAY_STORE_CREDENTIALS: ${{ secrets.PLAY_STORE_CREDENTIALS }} + working-directory: android \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 1140ed8..02cd41a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.4.1' + classpath 'com.android.tools.build:gradle:7.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // implementation 'androidx.window:window:1.0.0' // implementation 'androidx.window:window-java:1.0.0' diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile index bdafcb0..1dd481c 100644 --- a/android/fastlane/Appfile +++ b/android/fastlane/Appfile @@ -1,2 +1 @@ -json_key_file("../../../../paperless-mobile-play-store-credentials.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one package_name("de.astubenbord.paperless_mobile") # e.g. com.krausefx.app diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile index a618d3a..537acf4 100644 --- a/android/fastlane/Fastfile +++ b/android/fastlane/Fastfile @@ -17,23 +17,37 @@ default_platform(:android) platform :android do desc "Runs all the tests" - lane :test do gradle(task: "test") end - desc "Submit a new Beta Build to Crashlytics Beta" + desc "Submit a new beta build to Google Play" lane :beta do - gradle(task: "clean assembleRelease") - crashlytics - - # sh "your_script.sh" - # You can also use other beta testing services here + sh "flutter build appbundle -v" + upload_to_play_store( + track: 'beta', + aab: '../build/app/outputs/bundle/release/app-release.aab', + json_key_data: ENV['PLAY_STORE_CREDENTIALS'], + ) end - desc "Deploy a new version to the Google Play" - lane :deploy do - gradle(task: "clean assembleRelease") - upload_to_play_store + desc "Promote beta track to prod" + lane :promote_to_production do + upload_to_play_store( + track: 'beta', + track_promote_to: 'production', + skip_upload_changelogs: true, + json_key_data: ENV['PLAY_STORE_CREDENTIALS'], + ) end -end + + desc "Submit a new production build to Google Play" + lane :production do + sh "flutter build appbundle -v" + upload_to_play_store( + track: 'production', + aab: '../build/app/outputs/bundle/release/app-release.aab', + json_key_data: ENV['PLAY_STORE_CREDENTIALS'], + ) + end +end \ No newline at end of file diff --git a/android/fastlane/report.xml b/android/fastlane/report.xml index 96e55af..b246d30 100644 --- a/android/fastlane/report.xml +++ b/android/fastlane/report.xml @@ -5,14 +5,12 @@ - + - - - + diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index c65f92e..6b66533 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip