From 07ad32d236bb7275e8f97f8589650637fb0adf27 Mon Sep 17 00:00:00 2001 From: Sang-oh Kim Date: Mon, 19 Aug 2024 00:17:59 +0900 Subject: [PATCH 1/5] Add(deploy.yml): Initialize deploy workflow --- .github/workflows/deploy.yml | 22 ++++++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 6 +++--- ios/Runner/Info.plist | 2 +- pubspec.yaml | 2 +- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..bc72b852 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,22 @@ +name: Deploy to Play Store, App Store + +on: + push: + branches: + - main + workflow_dispatch: + inputs: + env: + description: 'Environment' + required: true + type: choice + options: + - production + - development + +jobs: + deploy-android: + name: Deploy to Play Store + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index d93467bd..bf5e245e 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -357,7 +357,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 240516.0103; + CURRENT_PROJECT_VERSION = 240818.2305; DEVELOPMENT_TEAM = N5V8W52U3U; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -486,7 +486,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 240516.0103; + CURRENT_PROJECT_VERSION = 240818.2305; DEVELOPMENT_TEAM = N5V8W52U3U; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -512,7 +512,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 240516.0103; + CURRENT_PROJECT_VERSION = 240818.2305; DEVELOPMENT_TEAM = N5V8W52U3U; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 814defaf..047274d6 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -25,7 +25,7 @@ CFBundleSignature ???? CFBundleVersion - 240516.0103 + 240818.2305 LSApplicationQueriesSchemes https diff --git a/pubspec.yaml b/pubspec.yaml index 0cd8ca69..f0b2b6ae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: new_ara_app description: A new Flutter project. publish_to: none -version: 1.1.0+103040304 +version: 1.2.0+108011948 environment: sdk: ">=2.18.0 <3.0.0" dependencies: From dd5ce31f757bd1d7a9ba4b61b8977a4bca8218c3 Mon Sep 17 00:00:00 2001 From: Sang-oh Kim Date: Mon, 19 Aug 2024 02:21:06 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Feat(deploy.yml):=20=EC=95=88=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=EC=9D=B4=EB=93=9C=20=EB=B0=B0=ED=8F=AC=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20=EC=8B=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bc72b852..eeac8d4a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -6,7 +6,7 @@ on: - main workflow_dispatch: inputs: - env: + deploy_environment: description: 'Environment' required: true type: choice @@ -14,9 +14,33 @@ on: - production - development +env: + FLUTTER_VERSION: "3.13" + JAVA_VERSION: "11" + jobs: deploy-android: name: Deploy to Play Store runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + # Setup Flutter environments for Android (Java, Flutter) + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: "adopt" + java-version: ${{ env.JAVA_VERSION }} + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: ${{ env.FLUTTER_VERSION }} + # Setup private credentials + + # Setup Fastlane environments for Android (Ruby) + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + - name: Install Fastlane + run: cd android && bundle install && cd .. From 34f4d04133923c296d8076c3bbb889f50161630a Mon Sep 17 00:00:00 2001 From: Sang-oh Kim Date: Thu, 29 Aug 2024 12:59:42 +0900 Subject: [PATCH 3/5] =?UTF-8?q?Feat(deploy.yml):=20Android=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20workflow=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 41 +++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index eeac8d4a..25f4fd31 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -35,12 +35,47 @@ jobs: with: channel: stable flutter-version: ${{ env.FLUTTER_VERSION }} - # Setup private credentials - - # Setup Fastlane environments for Android (Ruby) + + # Setup Fastlane environments for Android - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.3' + - name: Install Bundler + run: gem install bundler - name: Install Fastlane run: cd android && bundle install && cd .. + + # Setup .env + - name: Setup .env files + run: | + echo "GITHUB_API_TOKEN=${{ secrets.CD_GITHUB_API_TOKEN_FOR_RELEASE_NOTES }}" > android/fastlane/.env + echo "${{ secrets.ENV_PRODUCTION_FILE_CONTENT }}" > .env.production + echo "${{ secrets.ENV_DEVELOPMENT_FILE_CONTENT }}" > .env.development + + # Setup keystore credentials + - name: Create upload-keystore.jks + run: | + echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" > upload-keystore.jks.base64 + base64 -d -i upload-keystore.jks.base64 > android/fastlane/upload-keystore.jks + rm upload-keystore.jks.base64 + + # Setup supply + - name: Create newara-fastlane.json (supply) + run: echo ${{ secrets.ANDROID_GOOGLE_API_ACCOUNT }} > android/fastlane/newara-fastlane.json + + # Setup key.properties + - name: Create key.properties + run: | + echo storeFile=../fastlane/upload-keystore.jks > android/key.properties + echo storePassword=${{ secrets.ANDROID_STORE_PASSWORD }} >> android/key.properties + echo keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }} >> android/key.properties + echo keyAlias=${{ secrets.ANDROID_KEY_ALIAS }} >> android/key.properties + + # Setup flutter packages + - name: Install dependencies + run: flutter pub get + + # Upload to Play Store + - name: Upload to Play Store via Fastlane + run: cd android && bundle exec fastlane alpha env:${{ github.event.inputs.deploy_environment }} From 889f0b9b346c133c37845482f7389d96cc74d791 Mon Sep 17 00:00:00 2001 From: Sang-oh Kim Date: Thu, 29 Aug 2024 18:40:28 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Feat(deploy.yml):=20iOS=20TestFlight=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 55 ++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 25f4fd31..cea58e50 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,7 @@ on: push: branches: - main + # 수동으로 배포를 진행해야하는 경우에 실행 workflow_dispatch: inputs: deploy_environment: @@ -17,7 +18,9 @@ on: env: FLUTTER_VERSION: "3.13" JAVA_VERSION: "11" + XCODE_VERSION: "9.3" +# 각각의 job이 서로 다른 머신에서 병렬적으로 실행됨 jobs: deploy-android: name: Deploy to Play Store @@ -79,3 +82,55 @@ jobs: # Upload to Play Store - name: Upload to Play Store via Fastlane run: cd android && bundle exec fastlane alpha env:${{ github.event.inputs.deploy_environment }} + + deploy-ios: + name: Deploy to TestFlight + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + # Setup Xcode + - name: Setup Xcode environment + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: ${{ env.XCODE_VERSION }} + + # Setup Flutter environments for iOS (Flutter, Java는 필요X) + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: ${{ env.FLUTTER_VERSION }} + + # Setup Fastlane environments for iOS + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + - name: Install Bundler + run: gem install bundler + - name: Install Fastlane + run: cd ios && bundle install && cd .. + + # Setup .env.default for iOS fastlane + - name: Setup .env.default + run: | + echo "FASTLANE_USER=${{ secrets.IOS_FASTLANE_USER }}" > ios/fastlane/.env.default + echo "FASTLANE_PASSWORD=${{ secrets.IOS_FASTLANE_PASSWORD }}" >> ios/fastlane/.env.default + echo "FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=${{ secrets.IOS_FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}" >> ios/fastlane/.env.default + echo "GITHUB_API_TOKEN=${{ secrets.CD_GITHUB_API_TOKEN_FOR_RELEASE_NOTES }}" >> ios/.env.default + + # Setup .env files for flutter project + - name: Setup .env files + run: | + echo "${{ secrets.ENV_PRODUCTION_FILE_CONTENT }}" > .env.production + echo "${{ secrets.ENV_DEVELOPMENT_FILE_CONTENT }}" > .env.development + + # Install dependencies for Flutter, iOS + - name: Install flutter dependencies + run: flutter pub get + - name: Install iOS dependencies + run: cd ios && pod install && cd .. + + # Upload to TestFlight + - name: Upload to TestFlight + run: cd ios && bundle exec fastlane alpha env:env:${{ github.event.inputs.deploy_environment }} From 41fa97d52b08fc4c03c7f211c4f6f2f5507debc9 Mon Sep 17 00:00:00 2001 From: Sang-oh Kim Date: Thu, 29 Aug 2024 18:49:17 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Feat(deploy.yml):=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC,=20=EC=88=98=EB=8F=99=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EA=B0=84=EC=9D=98=20=EC=B0=A8=EC=9D=B4=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cea58e50..3fccb594 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,6 +1,7 @@ name: Deploy to Play Store, App Store on: + # main 브랜치에 push 연산이 일어나는 경우 push: branches: - main @@ -14,17 +15,28 @@ on: options: - production - development + # 자동실행되는 경우에는 Both로 처리됨 + deploy_platform: + description: 'Select platform to deploy' + required: true + type: choice + options: + - iOS + - Android + - Both env: FLUTTER_VERSION: "3.13" JAVA_VERSION: "11" XCODE_VERSION: "9.3" + DEPLOY_ENVIRONMENT: ${{ github.event.inputs.deploy_environment || 'production' }} # 각각의 job이 서로 다른 머신에서 병렬적으로 실행됨 jobs: deploy-android: name: Deploy to Play Store runs-on: ubuntu-latest + if: (github.event_name == 'workflow_dispatch' && (github.event.inputs.deploy_platform == 'Android' || github.event.inputs.deploy_platform == 'Both')) || github.event_name == 'push' steps: - uses: actions/checkout@v3 # Setup Flutter environments for Android (Java, Flutter) @@ -81,11 +93,12 @@ jobs: # Upload to Play Store - name: Upload to Play Store via Fastlane - run: cd android && bundle exec fastlane alpha env:${{ github.event.inputs.deploy_environment }} + run: cd android && bundle exec fastlane alpha env:${{ env.DEPLOY_ENVIRONMENT }} deploy-ios: name: Deploy to TestFlight runs-on: macos-latest + if: (github.event_name == 'workflow_dispatch' && (github.event.inputs.deploy_platform == 'iOS' || github.event.inputs.deploy_platform == 'Both')) || github.event_name == 'push' steps: - uses: actions/checkout@v3 # Setup Xcode @@ -133,4 +146,4 @@ jobs: # Upload to TestFlight - name: Upload to TestFlight - run: cd ios && bundle exec fastlane alpha env:env:${{ github.event.inputs.deploy_environment }} + run: cd ios && bundle exec fastlane alpha env:${{ env.DEPLOY_ENVIRONMENT }}