name: Build and deploy production on: push: branches: - 'ci_setup' workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v2 with: java-version: 21 distribution: temurin - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.3.0 bundler-cache: true - name: Set up Android SDK uses: android-actions/setup-android@v3 - name: Decode keystore uses: timheuer/base64-to-file@v1 id: android_keystore with: fileName: "release.jks" encodedString: ${{ secrets.KEYSTORE_FILE }} - name: Prepare Gradle environment run: | echo "apply from: 'ci_signing.gradle'" >> mastodon/build.gradle echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties - name: Build and deploy to Google Play run: bundle exec fastlane deploy env: KEYSTORE_FILE: ${{ steps.android_keystore.outputs.filePath }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} SUPPLY_JSON_KEY_DATA: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }} SUPPLY_SKIP_UPLOAD_METADATA: true SUPPLY_SKIP_UPLOAD_CHANGELOGS: true - name: Build release apk run: ./gradlew assembleRelease env: KEYSTORE_FILE: ${{ steps.android_keystore.outputs.filePath }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} - name: Upload release apk uses: actions/upload-artifact@v4 with: name: mastodon-release.apk path: mastodon/build/outputs/apk/release/mastodon-release.apk - name: Build githubRelease apk run: ./gradlew assembleGithubRelease env: KEYSTORE_FILE: ${{ steps.android_keystore.outputs.filePath }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} - name: Upload githubRelease apk uses: actions/upload-artifact@v4 with: name: mastodon-githubRelease.apk path: mastodon/build/outputs/apk/githubRelease/mastodon-githubRelease.apk - name: Upload mappings uses: actions/upload-artifact@v4 with: name: mappings path: mastodon/build/outputs/mapping/*/mapping.txt