From aff9475ce2a7893d65a361568c4bab1dd065219d Mon Sep 17 00:00:00 2001 From: Lee Nayeon Date: Sun, 9 Aug 2026 22:58:18 +0900 Subject: [PATCH 1/4] =?UTF-8?q?setting:=20#485=20fastfile=EC=97=90=20relea?= =?UTF-8?q?se=20=EB=AA=85=EB=A0=B9=EC=96=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ByeBoo-iOS/fastlane/Fastfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ByeBoo-iOS/fastlane/Fastfile b/ByeBoo-iOS/fastlane/Fastfile index e9d58bc2..230852b0 100644 --- a/ByeBoo-iOS/fastlane/Fastfile +++ b/ByeBoo-iOS/fastlane/Fastfile @@ -29,4 +29,21 @@ platform :ios do ) upload_to_testflight end + + desc "Release a new version to the App Store" + lane :release_app_store do + increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") + match(type: "appstore") + build_app( + scheme: "ByeBoo-iOS", + export_method: "app-store" + ) + upload_to_app_store( + skip_screenshots: true, + skip_metadata: true, + submit_for_review: true, + force: true + ) + end +end end From 7609f93fcd87b8eefaca69a7dc880ec2d1ed2099 Mon Sep 17 00:00:00 2001 From: Lee Nayeon Date: Sun, 9 Aug 2026 23:16:16 +0900 Subject: [PATCH 2/4] =?UTF-8?q?docs:=20#485=20fastlane=20yml=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/fastlane_ci.yml | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/fastlane_ci.yml diff --git a/.github/workflows/fastlane_ci.yml b/.github/workflows/fastlane_ci.yml new file mode 100644 index 00000000..f401f7e5 --- /dev/null +++ b/.github/workflows/fastlane_ci.yml @@ -0,0 +1,66 @@ +name: Fastlane CI + +on: + pull_request: + branches: + - main + - develop + types: [closed] + +jobs: + fastlane: + name: Run Fastlane + runs-on: macos-latest + if: github.event.pull_request.merged == true + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1 + + - name: Install Bundler + run: gem install bundler + + - name: Install dependencies + run: bundle install + + - name: Output Fastlane environment + run: bundle exec fastlane env + + - name: Run upload_testflight + if: github.event.pull_request.base.ref == 'develop' + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }} + FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }} + APP_IDENTIFIER: ${{ secrets.APP_IDENTIFIER }} + FASTLANE_ITC_TEAM_ID: ${{ secrets.FASTLANE_ITC_TEAM_ID }} + TEAM_ID: ${{ secrets.TEAM_ID }} + PRIVATE_REPOSITORY: ${{ secrets.PRIVATE_REPOSITORY }} + MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + DISCORD_URL: ${{ secrets.DISCORD_URL }} + run: bundle exec fastlane upload_testflight + + - name: Run release_app_store on main + if: github.event.pull_request.base.ref == 'main' + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }} + FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }} + APP_IDENTIFIER: ${{ secrets.APP_IDENTIFIER }} + FASTLANE_ITC_TEAM_ID: ${{ secrets.FASTLANE_ITC_TEAM_ID }} + TEAM_ID: ${{ secrets.TEAM_ID }} + PRIVATE_REPOSITORY: ${{ secrets.PRIVATE_REPOSITORY }} + MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + DISCORD_URL: ${{ secrets.DISCORD_URL }} + run: bundle exec fastlane release_app_store From 8d705f08a4e847b6e03045946d0bce739685bdc4 Mon Sep 17 00:00:00 2001 From: Lee Nayeon Date: Sun, 9 Aug 2026 23:31:01 +0900 Subject: [PATCH 3/4] =?UTF-8?q?setting:=20#485=20=EB=94=94=EC=8A=A4?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9B=B9=ED=9B=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ByeBoo-iOS/fastlane/Fastfile | 69 +++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/ByeBoo-iOS/fastlane/Fastfile b/ByeBoo-iOS/fastlane/Fastfile index 230852b0..a8a88c47 100644 --- a/ByeBoo-iOS/fastlane/Fastfile +++ b/ByeBoo-iOS/fastlane/Fastfile @@ -19,31 +19,60 @@ ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "120" ENV["FASTLANE_XCODEBUILD_SETTINGS_RETRIES"] = "10" platform :ios do + + def notify_discord_success(lane_name) + sh( + "curl -H 'Content-Type: application/json' " + + "-d '{\"content\": \"πŸ’ŸπŸŽ **#{lane_name}** 성곡! πŸŽ‰\"}' " + + "#{ENV['DISCORD_URL']}" + ) + end + + def notify_discord_failure(lane_name, error_message) + sh( + "curl -H 'Content-Type: application/json' " + + "-d '{\"content\": \"πŸ€”πŸŒ€ **#{lane_name}** μ‹€νŒ¨\\n```#{error_message.to_s.gsub('"', "'").gsub("\n", " ")}```\"}' " + + "#{ENV['DISCORD_URL']}" + ) + end + desc "Push a new beta build to TestFlight" lane :upload_testflight do - increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") - match(type: "appstore") - build_app( - scheme: "ByeBoo-iOS", - export_method: "app-store" - ) - upload_to_testflight + begin + increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") + match(type: "appstore") + build_app( + scheme: "ByeBoo-iOS", + export_method: "app-store" + ) + upload_to_testflight + notify_discord_success("TestFlight μ—…λ‘œλ“œ") + rescue => e + notify_discord_failure("TestFlight μ—…λ‘œλ“œ", e.message) + raise e + end end desc "Release a new version to the App Store" lane :release_app_store do - increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") - match(type: "appstore") - build_app( - scheme: "ByeBoo-iOS", - export_method: "app-store" - ) - upload_to_app_store( - skip_screenshots: true, - skip_metadata: true, - submit_for_review: true, - force: true - ) + begin + increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") + match(type: "appstore") + build_app( + scheme: "ByeBoo-iOS", + export_method: "app-store" + ) + upload_to_app_store( + skip_screenshots: true, + skip_metadata: true, + submit_for_review: true, + force: true + ) + notify_discord_success("App Store 배포") + rescue => e + notify_discord_failure("App Store 배포", e.message) + raise e + end end -end + end From 8e1c26c0e6112fdc22c9c4f09fabae4121456183 Mon Sep 17 00:00:00 2001 From: Lee Nayeon Date: Sun, 9 Aug 2026 23:56:38 +0900 Subject: [PATCH 4/4] =?UTF-8?q?setting:=20#485=20fastfile=20=ED=97=AC?= =?UTF-8?q?=ED=8D=BC=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ByeBoo-iOS/fastlane/Fastfile | 66 +++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/ByeBoo-iOS/fastlane/Fastfile b/ByeBoo-iOS/fastlane/Fastfile index a8a88c47..66dfbbdc 100644 --- a/ByeBoo-iOS/fastlane/Fastfile +++ b/ByeBoo-iOS/fastlane/Fastfile @@ -18,6 +18,9 @@ default_platform(:ios) ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "120" ENV["FASTLANE_XCODEBUILD_SETTINGS_RETRIES"] = "10" +XCODEPROJ = "ByeBoo-iOS.xcodeproj" +SCHEME = "ByeBoo-iOS" + platform :ios do def notify_discord_success(lane_name) @@ -36,17 +39,45 @@ platform :ios do ) end + def prepare_ci_and_signing + setup_ci + match(type: "appstore") + update_project_team( + path: XCODEPROJ, + teamid: ENV['TEAM_ID'] + ) + end + + def next_build_number + latest_build = latest_testflight_build_number( + app_identifier: ENV['APP_IDENTIFIER'], + initial_build_number: 0 + ) + latest_build + 1 + end + + desc "Push a new beta build to TestFlight" lane :upload_testflight do begin - increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") - match(type: "appstore") + iprepare_ci_and_signing + + build_number = next_build_number + increment_build_number( + xcodeproj: XCODEPROJ, + build_number: build_number + ) + build_app( - scheme: "ByeBoo-iOS", + scheme: SCHEME, export_method: "app-store" ) - upload_to_testflight - notify_discord_success("TestFlight μ—…λ‘œλ“œ") + + upload_to_testflight( + skip_waiting_for_build_processing: true + ) + + notify_discord_success("TestFlight μ—…λ‘œλ“œ", build_number) rescue => e notify_discord_failure("TestFlight μ—…λ‘œλ“œ", e.message) raise e @@ -56,19 +87,30 @@ platform :ios do desc "Release a new version to the App Store" lane :release_app_store do begin - increment_build_number(xcodeproj: "ByeBoo-iOS.xcodeproj") - match(type: "appstore") + prepare_ci_and_signing + + build_number = next_build_number + increment_build_number( + xcodeproj: XCODEPROJ, + build_number: build_number + ) + build_app( - scheme: "ByeBoo-iOS", + scheme: SCHEME, export_method: "app-store" ) + upload_to_app_store( skip_screenshots: true, skip_metadata: true, - submit_for_review: true, - force: true - ) - notify_discord_success("App Store 배포") + force: true, + submit_for_review: true, # μžλ™μœΌλ‘œ 심사 제좜 + automatic_release: true, # 심사 톡과 ν›„ μžλ™ μΆœμ‹œ + precheck_include_in_app_purchases: false, + submission_information: { + add_id_info_uses_idfa: false, # admob μΆ”κ°€ μ‹œ true둜 λ³€κ²½ + export_compliance_uses_encryption: false + } rescue => e notify_discord_failure("App Store 배포", e.message) raise e