Skip to content

v2.22.0-beta.6

v2.22.0-beta.6 #320

Workflow file for this run

name: Release deploy
on:
release:
types:
- created
env:
FLUTTER_VERSION: stable
NAVIS_SERVICE_ACCOUNT: ${{ secrets.NAVIS_SERVICE_ACCOUNT }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATOMO_URL: ${{ secrets.MATOMO_URL }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
jobs:
android-google-play:
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: microsoft
java-version: 17
- name: Setup Flutter
uses: subosito/[email protected]
with:
channel: ${{ env.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
architecture: x64 # optional, x64 or arm64
- name: Retrieve signing key
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
run: echo $KEYSTORE | base64 -di > android/keystore.jks
- name: Setup Firebase
env:
FIREBASE_ANDROID: ${{ secrets.FIREBASE_ANDROID }}
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
run: |
echo $FIREBASE_OPTIONS | base64 --decode > lib/firebase_options.dart
echo $FIREBASE_ANDROID | base64 --decode > android/app/google-services.json
- name: Build App bundle
env:
ANDROID_KEYSTORE_PATH: ${{ secrets.ANDROID_KEYSTORE_PATH }}
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
run: |
flutter build appbundle \
--dart-define=SENTRY_DSN=$SENTRY_DSN --dart-define=MATOMO_URL=$MATOMO_URL \
--flavor prod --split-debug-info=debug_info
- name: Upload Sentry debug symbols
run: flutter packages pub run sentry_dart_plugin
- name: Retrieve service account
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
run: echo $NAVIS_SERVICE_ACCOUNT | base64 -di > android/fastlane/service_account.json
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.0"
bundler-cache: true
working-directory: android
- name: Fastlane Google Play deploy Beta
uses: maierj/[email protected]
if: contains(github.ref_name, 'beta')
with:
lane: beta
subdirectory: android
- name: Fastlane Google Play deploy
uses: maierj/[email protected]
if: contains(github.ref_name, 'beta') == false
with:
lane: production
subdirectory: android
ios-appstore:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.0
bundler-cache: true
working-directory: ios
- name: Setup certs using fastlane
working-directory: ios
env:
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
SPACESHIP_ONLY_ALLOW_INTERACTIVE_2FA: ${{ secrets.SPACESHIP_ONLY_ALLOW_INTERACTIVE_2FA }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
run: |
bundle exec fastlane run setup_ci
bundle exec fastlane match appstore --readonly true -s "fastlane_tmp_keychain"
- name: Install Flutter SDK
uses: subosito/[email protected]
with:
channel: ${{ env.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
architecture: x64 # optional, x64 or arm64
- name: Setup Firebase
env:
FIREBASE_IOS: ${{ secrets.FIREBASE_IOS }}
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
FIREBASE_IOS_SERVICES: ${{ secrets.FIREBASE_IOS_SERVICES }}
run: |
echo $FIREBASE_IOS | base64 --decode > ios/firebase_app_id_file.json
echo $FIREBASE_OPTIONS | base64 --decode > lib/firebase_options.dart
echo $FIREBASE_IOS_SERVICES | base64 --decode > ios/runner/GoogleService-Info.plist
- name: Build app
run: |
flutter build ipa \
--dart-define=SENTRY_DSN=$SENTRY_DSN --dart-define=MATOMO_URL=$MATOMO_URL \
--export-options-plist=ios/ExportOptions.plist
- name: App Store Deploy Beta
if: contains(github.ref_name, 'beta')
working-directory: ios
run: bundle exec fastlane beta
- name: App Store Deploy
if: contains(github.ref_name, 'beta') == false
working-directory: ios
run: bundle exec fastlane production
android-github:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-java@v4
with:
distribution: microsoft
java-version: 17
- uses: subosito/[email protected]
with:
channel: ${{ env.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
architecture: x64 # optional, x64 or arm64
- name: Retrieve signing keys
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
run: echo $KEYSTORE | base64 --decode > android/keystore.jks
- name: Setup Firebase
env:
FIREBASE_ANDROID: ${{ secrets.FIREBASE_ANDROID }}
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
run: |
echo $FIREBASE_OPTIONS | base64 --decode > lib/firebase_options.dart
echo $FIREBASE_ANDROID | base64 --decode > android/app/google-services.json
- name: Build split apks per abi
env:
ANDROID_KEYSTORE_PATH: ${{ secrets.ANDROID_KEYSTORE_PATH }}
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
run: |
flutter build apk \
--dart-define=SENTRY_DSN=$SENTRY_DSN --dart-define=MATOMO_URL=$MATOMO_URL \
--flavor prod --split-per-abi --split-debug-info=debug_info
- name: Github Releases Deploy Beta
uses: xresloader/[email protected]
if: contains(github.ref_name, 'beta')
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
file: "build/app/outputs/flutter-apk/app-*-prod-release.apk"
tags: true
draft: false
prerelease: true
- name: Github Releases Deploy
uses: xresloader/[email protected]
if: contains(github.ref_name, 'beta') == false
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
file: "build/app/outputs/flutter-apk/app-*-prod-release.apk"
tags: true
draft: false
ios-github:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3.0
bundler-cache: true
working-directory: ios
- name: Setup certs using fastlane
working-directory: ios
env:
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
SPACESHIP_ONLY_ALLOW_INTERACTIVE_2FA: ${{ secrets.SPACESHIP_ONLY_ALLOW_INTERACTIVE_2FA }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
run: |
bundle exec fastlane run setup_ci
bundle exec fastlane match appstore --readonly true -s "fastlane_tmp_keychain"
- name: Install Flutter SDK
uses: subosito/[email protected]
with:
channel: ${{ env.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
architecture: x64 # optional, x64 or arm64
- name: Setup Firebase
env:
FIREBASE_IOS: ${{ secrets.FIREBASE_IOS }}
FIREBASE_OPTIONS: ${{ secrets.FIREBASE_OPTIONS }}
FIREBASE_IOS_SERVICES: ${{ secrets.FIREBASE_IOS_SERVICES }}
run: |
echo $FIREBASE_IOS | base64 --decode > ios/firebase_app_id_file.json
echo $FIREBASE_OPTIONS | base64 --decode > lib/firebase_options.dart
echo $FIREBASE_IOS_SERVICES | base64 --decode > ios/runner/GoogleService-Info.plist
- name: Build app
run: |
flutter build ipa \
--dart-define=SENTRY_DSN=$SENTRY_DSN --dart-define=MATOMO_URL=$MATOMO_URL \
--export-options-plist=ios/ExportOptions.plist
- name: Github Releases Deploy Beta
uses: xresloader/[email protected]
if: contains(github.ref_name, 'beta')
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
file: "build/ios/ipa/*.ipa"
tags: true
draft: false
prerelease: true
- name: Github Releases Deploy
uses: xresloader/[email protected]
if: contains(github.ref_name, 'beta') == false
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
file: "build/ios/ipa/*.ipa"
tags: true
draft: false