Skip to content

Commit

Permalink
Merge pull request #265 from nimblehq/chore/169-mirrored-workflow-ios
Browse files Browse the repository at this point in the history
  • Loading branch information
luongvo authored Sep 6, 2023
2 parents fd225ca + 5acbeaa commit 6c98f12
Show file tree
Hide file tree
Showing 22 changed files with 596 additions and 128 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/android_deploy_production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
env:
ENV: ${{ secrets.ENV }}
run: |
echo "$ENV" > .env
echo -e "$ENV" > .env
# App Bundle requires Firebase connected to Play Store to upload https://appdistribution.page.link/KPoa
- name: Build Android apk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
env:
ENV: ${{ secrets.ENV }}
run: |
echo "$ENV" > .env
echo -e "$ENV" > .env
- name: Set up release signing configs
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/android_deploy_staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
env:
ENV: ${{ secrets.ENV }}
run: |
echo "$ENV" > .env.staging
echo -e "$ENV" > .env.staging
# App Bundle requires Firebase connected to Play Store to upload https://appdistribution.page.link/KPoa
- name: Build Android apk
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ios_deploy_staging_to_firebase.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
env:
ENV: ${{ secrets.ENV }}
run: |
echo "$ENV" > .env.staging
echo -e "$ENV" > .env.staging
- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs
Expand Down
97 changes: 97 additions & 0 deletions .github/workflows/ios_deploy_to_app_store.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: ios-deploy-production-to-app-store
on:
# Trigger the workflow on push action
push:
branches:
- main

jobs:
build_and_upload_to_app_store:
name: Build And Upload iOS Application Production To AppStore
runs-on: macOS-latest
environment: production
timeout-minutes: 30
env:
TEAM_ID: ${{ secrets.TEAM_ID }}
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
APP_STORE_ISSUER_ID: ${{ secrets.APP_STORE_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_API_KEY_BASE64 }}
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER
steps:
- name: Check out
uses: actions/checkout@v3

- name: Install SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Set up Flutter environment
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: '3.10.5'

- name: Generate new project
run: |
dart pub global activate mason_cli
mason get
mason make template -c mason-config.json
# Move the generated project to the root directory for next steps & cleanup to not affect static code analysis
rsync -av --remove-source-files flutter_templates/ ./
rm -rf bricks sample
- name: Get Flutter dependencies
run: flutter pub get

- name: Set up Production env
env:
ENV: ${{ secrets.ENV }}
run: |
echo -e "$ENV" >> .env
- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs

- name: Cache Ruby gems
uses: actions/cache@v3
id: bunlderCache
with:
path: ios/vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: ${{ runner.os }}-gems-

- name: Cache Pods
uses: actions/cache@v3
id: cocoapodCache
with:
path: ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: ${{ runner.os }}-pods-

- name: Bundle install
run: cd ./ios && bundle install

- name: Pod install
run: cd ./ios && pod install

- name: Update fastlane
run: cd ./ios && bundle update fastlane

- name: Update plugins
run: cd ./ios && bundle exec fastlane update_plugins

- name: Match AppStore
run: cd ./ios && bundle exec fastlane sync_appstore_production_signing
env:
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER

- name: Deploy to AppStore
run: |
cd ./ios && bundle exec fastlane build_and_upload_production_app_store_connect_app
97 changes: 97 additions & 0 deletions .github/workflows/ios_deploy_to_testflight.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: ios-deploy-production-to-testflight
on:
# Trigger the workflow on push action
push:
branches:
- main

jobs:
build_and_upload_to_testflight:
name: Build And Upload iOS Application Production To TestFlight
runs-on: macOS-latest
environment: production
timeout-minutes: 30
env:
TEAM_ID: ${{ secrets.TEAM_ID }}
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
APP_STORE_ISSUER_ID: ${{ secrets.APP_STORE_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_API_KEY_BASE64 }}
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER
steps:
- name: Check out
uses: actions/checkout@v3

- name: Install SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Set up Flutter environment
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: '3.10.5'

- name: Generate new project
run: |
dart pub global activate mason_cli
mason get
mason make template -c mason-config.json
# Move the generated project to the root directory for next steps & cleanup to not affect static code analysis
rsync -av --remove-source-files flutter_templates/ ./
rm -rf bricks sample
- name: Get Flutter dependencies
run: flutter pub get

- name: Set up Production env
env:
ENV: ${{ secrets.ENV }}
run: |
echo -e "$ENV" >> .env
- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs

- name: Cache Ruby gems
uses: actions/cache@v3
id: bunlderCache
with:
path: ios/vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: ${{ runner.os }}-gems-

- name: Cache Pods
uses: actions/cache@v3
id: cocoapodCache
with:
path: ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: ${{ runner.os }}-pods-

- name: Bundle install
run: cd ./ios && bundle install

- name: Pod install
run: cd ./ios && pod install

- name: Update fastlane
run: cd ./ios && bundle update fastlane

- name: Update plugins
run: cd ./ios && bundle exec fastlane update_plugins

- name: Match AppStore
run: cd ./ios && bundle exec fastlane sync_appstore_production_signing
env:
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER

- name: Deploy to TestFlight
run: |
cd ./ios && bundle exec fastlane build_and_upload_testflight_production_app
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
env:
ENV: ${{#mustacheCase}}secrets.ENV{{/mustacheCase}}
run: |
echo "$ENV" > .env
echo -e "$ENV" > .env
# App Bundle requires Firebase connected to Play Store to upload https://appdistribution.page.link/KPoa
- name: Build Android apk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
env:
ENV: ${{#mustacheCase}}secrets.ENV{{/mustacheCase}}
run: |
echo "$ENV" > .env
echo -e "$ENV" > .env
- name: Set up release signing configs
env:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
env:
ENV: ${{#mustacheCase}}secrets.ENV{{/mustacheCase}}
run: |
echo "$ENV" > .env.staging
echo -e "$ENV" > .env.staging
# App Bundle requires Firebase connected to Play Store to upload https://appdistribution.page.link/KPoa
- name: Build Android apk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
env:
ENV: ${{#mustacheCase}}secrets.ENV{{/mustacheCase}}
run: |
echo "$ENV" > .env.staging
echo -e "$ENV" > .env.staging
- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
name: ios-deploy-to-app-store
name: ios-deploy-production-to-app-store
on:
# Trigger the workflow on push action
push:
branches:
- develop
- main

jobs:
build_and_upload_to_app_store:
name: Build And Upload iOS Application To AppStore
name: Build And Upload iOS Application Production To AppStore
runs-on: macOS-latest
environment: staging
environment: production
timeout-minutes: 30
env:
TEAM_ID: ${{#mustacheCase}}secrets.TEAM_ID{{/mustacheCase}}
Expand All @@ -19,37 +19,70 @@ jobs:
FASTLANE_SESSION: ${{#mustacheCase}}secrets.FASTLANE_SESSION{{/mustacheCase}}
MATCH_PASSWORD: ${{#mustacheCase}}secrets.MATCH_PASSWORD{{/mustacheCase}}
KEYCHAIN_PASSWORD: ${{#mustacheCase}}secrets.KEYCHAIN_PASSWORD{{/mustacheCase}}
GITHUB_RUN_NUMBER: $secrets.GITHUB_RUN_NUMBER
APP_STORE_KEY_ID: ${{#mustacheCase}}secrets.APP_STORE_KEY_ID{{/mustacheCase}}
APP_STORE_ISSUER_ID: ${{#mustacheCase}}secrets.APP_STORE_ISSUER_ID{{/mustacheCase}}
APP_STORE_CONNECT_API_KEY_BASE64: ${{#mustacheCase}}secrets.APP_STORE_CONNECT_API_KEY_BASE64{{/mustacheCase}}
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER
steps:
- name: Check out
uses: actions/checkout@v3
- name: Check out
uses: actions/checkout@v3

- name: Install SSH key
uses: webfactory/ssh-agent@v0.4.1
with:
ssh-private-key: ${{#mustacheCase}}secrets.SSH_PRIVATE_KEY{{/mustacheCase}}
- name: Install SSH key
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: ${{#mustacheCase}}secrets.SSH_PRIVATE_KEY{{/mustacheCase}}

- name: Set up Flutter environment
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: '3.10.5'
- name: Set up Flutter environment
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: '3.10.5'

- name: Get Flutter dependencies
run: flutter pub get
- name: Get Flutter dependencies
run: flutter pub get

- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs
- name: Set up Production env
env:
ENV: ${{#mustacheCase}}secrets.ENV{{/mustacheCase}}
run: |
echo -e "$ENV" >> .env
- name: Bundle install
run: cd ./ios && bundle install
- name: Run code generator
run: flutter packages pub run build_runner build --delete-conflicting-outputs

- name: Pod install
run: cd ./ios && pod install
- name: Cache Ruby gems
uses: actions/cache@v3
id: bunlderCache
with:
path: ios/vendor/bundle
key: ${{#mustacheCase}}runner.os{{/mustacheCase}}-gems-${{#mustacheCase}}hashFiles('**/Gemfile.lock'){{/mustacheCase}}
restore-keys: ${{#mustacheCase}}runner.os{{/mustacheCase}}-gems-

- name: Match AppStore
run: cd ./ios && bundle exec fastlane sync_appstore_staging_signing
- name: Cache Pods
uses: actions/cache@v3
id: cocoapodCache
with:
path: ios/Pods
key: ${{#mustacheCase}}runner.os{{/mustacheCase}}-pods-${{#mustacheCase}}hashFiles('**/Podfile.lock'){{/mustacheCase}}
restore-keys: ${{#mustacheCase}}runner.os{{/mustacheCase}}-pods-

- name: Deploy to AppStore
run: |
cd ./ios && bundle exec fastlane build_and_upload_app_store_connect_app
- name: Bundle install
run: cd ./ios && bundle install

- name: Pod install
run: cd ./ios && pod install

- name: Update fastlane
run: cd ./ios && bundle update fastlane

- name: Update plugins
run: cd ./ios && bundle exec fastlane update_plugins

- name: Match AppStore
run: cd ./ios && bundle exec fastlane sync_appstore_production_signing
env:
GITHUB_RUN_NUMBER: $GITHUB_RUN_NUMBER

- name: Deploy to AppStore
run: |
cd ./ios && bundle exec fastlane build_and_upload_production_app_store_connect_app
Loading

0 comments on commit 6c98f12

Please sign in to comment.