From 6d31b56b7857f248bcf4ddb49db58a0045d3935d Mon Sep 17 00:00:00 2001 From: JaeWoong Eum Date: Tue, 24 Feb 2026 09:28:21 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[REFACTOR]=20CICD=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EB=B2=88=ED=98=B8=20=EC=9E=90=EB=8F=99=ED=99=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Atcha-iOS.xcodeproj/project.pbxproj | 7 ++----- fastlane/Fastfile | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Atcha-iOS.xcodeproj/project.pbxproj b/Atcha-iOS.xcodeproj/project.pbxproj index 790eaf7..5f8095a 100644 --- a/Atcha-iOS.xcodeproj/project.pbxproj +++ b/Atcha-iOS.xcodeproj/project.pbxproj @@ -2450,11 +2450,9 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = "Atcha-iOS/Atcha-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 15; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 23SCTLK482; + DEVELOPMENT_TEAM = 23SCTLK482; EXCLUDED_ARCHS = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -2481,7 +2479,6 @@ PRODUCT_BUNDLE_IDENTIFIER = com.atcha.iOS; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.atcha.iOS"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 25bf21e..b0c387c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -30,7 +30,12 @@ platform :ios do ) match(type: "appstore") - increment_build_number(xcodeproj: "Atcha-iOS.xcodeproj") + latest_build = latest_testflight_build_number(api_key: api_key) + + increment_build_number( + build_number: latest_build + 1, + xcodeproj: "Atcha-iOS.xcodeproj" + ) build_app( project: "Atcha-iOS.xcodeproj", @@ -47,7 +52,13 @@ platform :ios do desc "App Store 업로드 (Submit은 안 함)" lane :release do match(type: "appstore") - increment_build_number(xcodeproj: "Atcha-iOS.xcodeproj") + + latest_build = latest_testflight_build_number(api_key: api_key) + + increment_build_number( + build_number: latest_build + 1, + xcodeproj: "Atcha-iOS.xcodeproj" + ) build_app( project: "Atcha-iOS.xcodeproj", From 692bf7fbb661bc4452f65f9a22ad0fc7f1a75c7b Mon Sep 17 00:00:00 2001 From: JaeWoong Eum <98391474+woolnd@users.noreply.github.com> Date: Tue, 24 Feb 2026 09:29:32 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[CI]=20xcode=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=B5=9C=EC=8B=A0=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ios_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_ci.yml b/.github/workflows/ios_ci.yml index d6d7042..d010712 100644 --- a/.github/workflows/ios_ci.yml +++ b/.github/workflows/ios_ci.yml @@ -16,7 +16,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "16.2" + xcode-version: "latest-stable" - name: Debug toolchain run: | From f36a30dc8c0065a607bf026fd98c5de4f553232a Mon Sep 17 00:00:00 2001 From: JaeWoong Eum <98391474+woolnd@users.noreply.github.com> Date: Tue, 24 Feb 2026 09:40:17 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[CD]=20Xcode=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=B5=9C=EC=8B=A0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ios-cd-stage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios-cd-stage.yml b/.github/workflows/ios-cd-stage.yml index ec39ce3..95119c0 100644 --- a/.github/workflows/ios-cd-stage.yml +++ b/.github/workflows/ios-cd-stage.yml @@ -20,7 +20,7 @@ jobs: - name: Select Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "16.2" + xcode-version: "latest-stable" - name: Install iOS SDK (Retry up to 3 times) run: | From 2cd2895e59bbc37f0f8984137c411014c9f30040 Mon Sep 17 00:00:00 2001 From: JaeWoong Eum <98391474+woolnd@users.noreply.github.com> Date: Tue, 24 Feb 2026 09:50:30 +0900 Subject: [PATCH 4/7] =?UTF-8?q?[CD]=20CD=20=EB=B0=B0=ED=8F=AC=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ios-cd-live.yml | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/ios-cd-live.yml diff --git a/.github/workflows/ios-cd-live.yml b/.github/workflows/ios-cd-live.yml new file mode 100644 index 0000000..a8453a2 --- /dev/null +++ b/.github/workflows/ios-cd-live.yml @@ -0,0 +1,63 @@ +# This workflow will build a Swift project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift + +name: iOS CD (Live -> App Store) + +on: + pull_request: + branches: ["env/dev"] + +jobs: + deploy-appstore: + runs-on: macos-15 + + environment: AppStore-Deploy + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Select Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: "latest-stable" + + - name: Install iOS SDK (Retry up to 3 times) + run: | + for i in {1..3}; do + echo "Attempt $i to download iOS platform..." + sudo xcodebuild -downloadPlatform iOS && break || { + if [ $i -lt 3 ]; then + echo "Attempt $i failed. Retrying in 10 seconds..." + sleep 10 + else + echo "All 3 attempts failed. Moving on (continue-on-error is set)." + exit 1 + fi + } + done + + - name: Create Real Configs + run: | + echo "${{ secrets.LIVE_CONFIG_CONTENT }}" | base64 --decode > "LiveConfig.xcconfig" + echo "${{ secrets.DEV_CONFIG_CONTENT }}" | base64 --decode > "DevConfig.xcconfig" + echo "${{ secrets.STAGE_CONFIG_CONTENT }}" | base64 --decode > "StageConfig.xcconfig" + echo "${{ secrets.BASE_CONFIG_CONTENT }}" | base64 --decode > "BaseConfig.xcconfig" + + - name: Install Fastlane + run: bundle install + + - name: Build and Upload to App Store + env: + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_TOKEN }} + APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} + APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.ASC_KEY_ID }} + APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.ASC_KEY_CONTENT }} + GYM_SCHEME: "Atcha-Live" + GYM_CONFIGURATION: "Release" + GYM_EXPORT_METHOD: "app-store" + GYM_XC_ARGS: "PROVISIONING_PROFILE_SPECIFIER='match AppStore com.atcha.iOS' CODE_SIGN_STYLE=Manual" + FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 + + run: bundle exec fastlane release From b7b123e09937d07e8f03c0efbda76c0d29c7b27a Mon Sep 17 00:00:00 2001 From: JaeWoong Eum Date: Tue, 24 Feb 2026 09:58:36 +0900 Subject: [PATCH 5/7] =?UTF-8?q?[REFACTOR]=20Fastlane=20api=20key=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastlane/Fastfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index b0c387c..1a76dcc 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -51,6 +51,14 @@ platform :ios do desc "App Store 업로드 (Submit은 안 함)" lane :release do + + api_key = app_store_connect_api_key( + key_id: ENV["ASC_KEY_ID"], + issuer_id: ENV["ASC_ISSUER_ID"], + key_content: ENV["ASC_KEY_CONTENT"], + is_key_content_base64: true + ) + match(type: "appstore") latest_build = latest_testflight_build_number(api_key: api_key) From 54ab46eac4cac4b410f54f970728eee15858280d Mon Sep 17 00:00:00 2001 From: JaeWoong Eum Date: Tue, 24 Feb 2026 10:18:01 +0900 Subject: [PATCH 6/7] =?UTF-8?q?[REFACTOR]=20=EC=88=98=EC=B6=9C=20=EA=B7=9C?= =?UTF-8?q?=EC=A0=95=20=EA=B4=80=EB=A0=A8=20=EB=AC=B8=EC=84=9C=20=EB=88=84?= =?UTF-8?q?=EB=9D=BD=20=EC=84=A4=EC=A0=95=20=EC=9E=90=EB=8F=99=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Atcha-iOS/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Atcha-iOS/Info.plist b/Atcha-iOS/Info.plist index cd33ff1..29cd94c 100644 --- a/Atcha-iOS/Info.plist +++ b/Atcha-iOS/Info.plist @@ -67,5 +67,7 @@ $(AMPLITUDE_API_KEY) API_BASE_URL $(API_BASE_URL) + ITSAppUsesNonExemptEncryption + From 45f86a9911b4c27382eca0bc5f84351d2e4416ea Mon Sep 17 00:00:00 2001 From: JaeWoong Eum <98391474+woolnd@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:19:44 +0900 Subject: [PATCH 7/7] =?UTF-8?q?[CD]=20CD=20=ED=83=80=EC=9D=B4=EB=B0=8D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ios-cd-live.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ios-cd-live.yml b/.github/workflows/ios-cd-live.yml index a8453a2..2bd7aad 100644 --- a/.github/workflows/ios-cd-live.yml +++ b/.github/workflows/ios-cd-live.yml @@ -4,8 +4,8 @@ name: iOS CD (Live -> App Store) on: - pull_request: - branches: ["env/dev"] + push: + branches: ["env/live"] jobs: deploy-appstore: