Release v4.6.0 #33
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Builds and releases frosty on the Google Play Store and Apple App Store through fastlane. | |
name: Build and release Frosty | |
on: | |
# Enable the option to manually run the workflow in the Actions tab. | |
workflow_dispatch: | |
# Only run if a semver tag was pushed. | |
push: | |
tags: | |
- v*.*.* | |
# Setup environment variables for use in all jobs. | |
env: | |
# Gemfile path used for caching dependencies. | |
BUNDLE_GEMFILE: ${{ github.workspace }}/android/Gemfile | |
CLIENT_ID: ${{ secrets.CLIENT_ID }} | |
SECRET: ${{ secrets.SECRET }} | |
LC_ALL: en_US.UTF-8 | |
LANG: en_US.UTF-8 | |
jobs: | |
android: | |
name: Build and release Frosty on Android | |
runs-on: ubuntu-latest | |
environment: release-android | |
env: | |
UPLOAD_KEYSTORE: ${{ secrets.UPLOAD_KEYSTORE }} | |
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} | |
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
KEY_FILE_PATH: android/key.properties | |
PLAY_STORE_CREDENTIALS: ${{ secrets.PLAY_STORE_CREDENTIALS }} | |
steps: | |
- name: Checkout Frosty repo | |
uses: actions/checkout@v4 | |
# Install Ruby and install/cache dependencies with bundler in order to use fastlane. | |
- name: Set up Ruby and Bundler | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.2 | |
bundler-cache: true | |
# Setup Java so that we can build the appbundle. | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 17 | |
# Setup and cache Flutter to install packages and build. | |
- name: Set up Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
# Decode and create the upload-keystore.jks file, used for signing the app. | |
- name: Decode and create upload-keystore.jks | |
run: echo $UPLOAD_KEYSTORE | base64 --decode > $GITHUB_WORKSPACE/android/upload-keystore.jks | |
# Create the key.properties file, used for signing the app. | |
- name: Create key.properties | |
run: | | |
echo storePassword=$STORE_PASSWORD >> $KEY_FILE_PATH | |
echo keyPassword=$KEY_PASSWORD >> $KEY_FILE_PATH | |
echo keyAlias=upload >> $KEY_FILE_PATH | |
echo storeFile=$GITHUB_WORKSPACE/android/upload-keystore.jks >> $KEY_FILE_PATH | |
# Build the Android app bundle (AAB) and pass the environment variables. | |
- name: Build the Android AAB | |
run: flutter build appbundle --dart-define CLIENT_ID=$CLIENT_ID --dart-define SECRET=$SECRET | |
# Deploy to the play store with fastlane. | |
- name: Deploy with fastlane | |
run: cd android && bundle exec fastlane deploy | |
ios: | |
name: Build and release Frosty on iOS | |
runs-on: macos-latest | |
environment: release-ios | |
env: | |
APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }} | |
APP_STORE_ISSUER_ID: ${{ secrets.APP_STORE_ISSUER_ID }} | |
APP_STORE_CREDENTIALS: ${{ secrets.APP_STORE_CREDENTIALS }} | |
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }} | |
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
steps: | |
- name: Checkout Frosty repo | |
uses: actions/checkout@v4 | |
# Install Ruby and install/cache dependencies with bundler in order to use fastlane. | |
- name: Set up Ruby and Bundler | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 3.2 | |
bundler-cache: true | |
# Setup and cache Flutter to install packages and build. | |
- name: Set up Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
# Setup the iOS project with environment variables without signing (building and signing will happen in fastlane). | |
- name: Config the iOS build | |
run: flutter build ios --no-codesign --config-only --dart-define CLIENT_ID=$CLIENT_ID --dart-define SECRET=$SECRET | |
# Sign, build the app, and deploy to app store with fastlane. | |
- name: Sign, build, and release with fastlane | |
run: cd ios && bundle exec fastlane release |