From 0584a939610dafd6565cd138a9dc0eeccbe60137 Mon Sep 17 00:00:00 2001 From: kangho Date: Thu, 16 Oct 2025 21:51:31 +0900 Subject: [PATCH 1/2] build add fastlane --- AIProject/fastlane/.env | 8 +++ AIProject/fastlane/Appfile | 8 +-- AIProject/fastlane/Fastfile | 66 +++++++++++++++++++++++-- AIProject/fastlane/Matchfile | 5 +- AIProject/fastlane/README.md | 32 ++++++++++++ AIProject/fastlane/report.xml | 45 +++++++++++++++++ AIProject/iCo.xcodeproj/project.pbxproj | 4 +- 7 files changed, 155 insertions(+), 13 deletions(-) create mode 100644 AIProject/fastlane/.env create mode 100644 AIProject/fastlane/README.md create mode 100644 AIProject/fastlane/report.xml diff --git a/AIProject/fastlane/.env b/AIProject/fastlane/.env new file mode 100644 index 00000000..a9954f7e --- /dev/null +++ b/AIProject/fastlane/.env @@ -0,0 +1,8 @@ +KEYCHAIN_NAME= ICO +KEYCHAIN_PASSWORD= ICO + +VERSION=1.3.0 + +APP_STORE_CONNECT_KEY_ID=F87R5SRFVR +APP_STORE_CONNECT_ISSUER_ID=14ec5f8f-0c5e-4def-adf7-5e39962b64e3 +APP_STORE_CONNECT_KEY_CONTENT=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR1RBZ0VBTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEJIa3dkd0lCQVFRZ0dJVG9td29ETzZ4U2t2K2gKd2FBSHBhNFMzcjJ1MU1tYUsrSDNSc09ubk1hZ0NnWUlLb1pJemowREFRZWhSQU5DQUFSNjM1aStmay9HVWJEcApBdk5iZG9aSUtLalpEYWUrcjd1MnNYRDdseE85VitGa0lOSjdJaEdlblFhUXd1VlUrQWN5SnkrZTlqSnNGc0tuCkl4YXlkSEVYCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0= \ No newline at end of file diff --git a/AIProject/fastlane/Appfile b/AIProject/fastlane/Appfile index bd474f85..943f7e44 100644 --- a/AIProject/fastlane/Appfile +++ b/AIProject/fastlane/Appfile @@ -1,8 +1,8 @@ -app_identifier("com.est.ai.aico") # The bundle identifier of your app -apple_id("ibcylon@naver.com") # Your Apple Developer Portal username +app_identifier("com.est.ico") # The bundle identifier of your app +apple_id("guswlsrlacl@naver.com") # Your Apple Developer Portal username -itc_team_id("123752326") # App Store Connect Team ID -team_id("SJDR485DTV") # Developer Portal Team ID +itc_team_id("123481744") # App Store Connect Team ID +team_id("7HK4Z95VZD") # Developer Portal Team ID # For more information about the Appfile, see: # https://docs.fastlane.tools/advanced/#appfile diff --git a/AIProject/fastlane/Fastfile b/AIProject/fastlane/Fastfile index 0f39ea63..88e51714 100644 --- a/AIProject/fastlane/Fastfile +++ b/AIProject/fastlane/Fastfile @@ -16,8 +16,68 @@ default_platform(:ios) platform :ios do - desc "Description of what the lane does" - lane :custom_lane do - # add actions here: https://docs.fastlane.tools/actions + desc "빌드하고 TestFlight에 업로드" + lane :testflight do + + api_key = + app_store_connect_api_key( + key_id: ENV["APP_STORE_CONNECT_KEY_ID"], + is_key_content_base64: true, + issuer_id: ENV["APP_STORE_CONNECT_ISSUER_ID"], + key_content: ENV["APP_STORE_CONNECT_KEY_CONTENT"], + in_house: false + ) + +# create_keychain( +# name: ENV["KEYCHAIN_NAME"], +# password: ENV["KEYCHAIN_PASSWORD"], +# timeout: 1800, +# default_keychain: true, +# unlock: true, +# lock_when_sleeps: false +# ) + + increment_version_number( + version_number: ENV["VERSION"], + xcodeproj: "./iCo.xcodeproj" + ) + + latest = latest_testflight_build_number( + version: ENV["VERSION"], + platform: "ios" + ) + + increment_build_number( + build_number: latest + 1, + xcodeproj: "./iCo.xcodeproj", + ) + + match( + type: "appstore", + keychain_name: ENV["KEYCHAIN_NAME"], + keychain_password: ENV["KEYCHAIN_PASSWORD"], + readonly: true + ) + + build_app( + scheme: "iCo", + clean: true, + export_method: "app-store", + export_options: { + signingStyle: "manual", + provisioningProfiles: { + "com.est.ico" => "match AppStore com.est.ico", + "com.est.ico.widget" => "match AppStore com.est.ico.widget" + } + } + ) + + upload_to_testflight( + api_key: api_key, + skip_waiting_for_build_processing: false, + submit_beta_review: false, + distribute_external: false, + changelog: "새로운 기능 및 버그 수정" + ) end end diff --git a/AIProject/fastlane/Matchfile b/AIProject/fastlane/Matchfile index e9cb4435..ffa042dd 100644 --- a/AIProject/fastlane/Matchfile +++ b/AIProject/fastlane/Matchfile @@ -7,7 +7,4 @@ type("development") # The default type, can be: appstore, adhoc, enterprise or d app_identifier(["com.est.ico", "com.est.ico.widget"]) username("guswlsrlacl@naver.com") # Your Apple Developer Portal username -# For all available options run `fastlane match --help` -# Remove the # in the beginning of the line to enable the other options - -# The docs are available on https://docs.fastlane.tools/actions/match +team_id("7HK4Z95VZD") # Developer Portal Team ID diff --git a/AIProject/fastlane/README.md b/AIProject/fastlane/README.md new file mode 100644 index 00000000..3c5ea202 --- /dev/null +++ b/AIProject/fastlane/README.md @@ -0,0 +1,32 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios testflight + +```sh +[bundle exec] fastlane ios testflight +``` + +빌드하고 TestFlight에 업로드 + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/AIProject/fastlane/report.xml b/AIProject/fastlane/report.xml new file mode 100644 index 00000000..69fc94b8 --- /dev/null +++ b/AIProject/fastlane/report.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AIProject/iCo.xcodeproj/project.pbxproj b/AIProject/iCo.xcodeproj/project.pbxproj index 0a0d0bff..de6c720b 100644 --- a/AIProject/iCo.xcodeproj/project.pbxproj +++ b/AIProject/iCo.xcodeproj/project.pbxproj @@ -623,7 +623,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = SJDR485DTV; GENERATE_INFOPLIST_FILE = YES; @@ -650,7 +650,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = SJDR485DTV; GENERATE_INFOPLIST_FILE = YES; From 33c0b32f58329748fa3139da58ed45c0de853038 Mon Sep 17 00:00:00 2001 From: kangho Date: Sat, 18 Oct 2025 21:33:31 +0900 Subject: [PATCH 2/2] build: fastlane --- .gitignore | 3 ++ AIProject/fastlane/.env | 8 ---- AIProject/fastlane/Fastfile | 50 ++++++------------------- AIProject/fastlane/report.xml | 45 ---------------------- AIProject/iCo.xcodeproj/project.pbxproj | 36 +++++++++--------- 5 files changed, 32 insertions(+), 110 deletions(-) delete mode 100644 AIProject/fastlane/.env delete mode 100644 AIProject/fastlane/report.xml diff --git a/.gitignore b/.gitignore index 0f0de01b..a6ef976e 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,6 @@ fastlane/test_output *.xcconfig AIProject/AIProject/App/Resource/GoogleService-Info.plist AIProject/iCo/App/Resource/GoogleService-Info.plist +AIProject/fastlane/.env +AIProject/fastlane/.env +AIProject/fastlane/report.xml diff --git a/AIProject/fastlane/.env b/AIProject/fastlane/.env deleted file mode 100644 index a9954f7e..00000000 --- a/AIProject/fastlane/.env +++ /dev/null @@ -1,8 +0,0 @@ -KEYCHAIN_NAME= ICO -KEYCHAIN_PASSWORD= ICO - -VERSION=1.3.0 - -APP_STORE_CONNECT_KEY_ID=F87R5SRFVR -APP_STORE_CONNECT_ISSUER_ID=14ec5f8f-0c5e-4def-adf7-5e39962b64e3 -APP_STORE_CONNECT_KEY_CONTENT=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR1RBZ0VBTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEJIa3dkd0lCQVFRZ0dJVG9td29ETzZ4U2t2K2gKd2FBSHBhNFMzcjJ1MU1tYUsrSDNSc09ubk1hZ0NnWUlLb1pJemowREFRZWhSQU5DQUFSNjM1aStmay9HVWJEcApBdk5iZG9aSUtLalpEYWUrcjd1MnNYRDdseE85VitGa0lOSjdJaEdlblFhUXd1VlUrQWN5SnkrZTlqSnNGc0tuCkl4YXlkSEVYCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0= \ No newline at end of file diff --git a/AIProject/fastlane/Fastfile b/AIProject/fastlane/Fastfile index 88e51714..4467fd94 100644 --- a/AIProject/fastlane/Fastfile +++ b/AIProject/fastlane/Fastfile @@ -1,18 +1,3 @@ -# This file contains the fastlane.tools configuration -# You can find the documentation at https://docs.fastlane.tools -# -# For a list of all available actions, check out -# -# https://docs.fastlane.tools/actions -# -# For a list of all available plugins, check out -# -# https://docs.fastlane.tools/plugins/available-plugins -# - -# Uncomment the line if you want fastlane to automatically update itself -# update_fastlane - default_platform(:ios) platform :ios do @@ -28,34 +13,21 @@ platform :ios do in_house: false ) -# create_keychain( -# name: ENV["KEYCHAIN_NAME"], -# password: ENV["KEYCHAIN_PASSWORD"], -# timeout: 1800, -# default_keychain: true, -# unlock: true, -# lock_when_sleeps: false -# ) - - increment_version_number( - version_number: ENV["VERSION"], - xcodeproj: "./iCo.xcodeproj" + create_keychain( + name: ENV["KEYCHAIN_NAME"], + password: ENV["KEYCHAIN_PASSWORD"], + timeout: 1800, + default_keychain: true, + unlock: true, + lock_when_sleeps: false ) - latest = latest_testflight_build_number( - version: ENV["VERSION"], - platform: "ios" - ) - - increment_build_number( - build_number: latest + 1, - xcodeproj: "./iCo.xcodeproj", - ) + increment_build_number match( type: "appstore", - keychain_name: ENV["KEYCHAIN_NAME"], - keychain_password: ENV["KEYCHAIN_PASSWORD"], + keychain_name: ENV["KEYCHAIN_NAME"], + keychain_password: ENV["KEYCHAIN_PASSWORD"], readonly: true ) @@ -80,4 +52,4 @@ platform :ios do changelog: "새로운 기능 및 버그 수정" ) end -end +end \ No newline at end of file diff --git a/AIProject/fastlane/report.xml b/AIProject/fastlane/report.xml deleted file mode 100644 index 69fc94b8..00000000 --- a/AIProject/fastlane/report.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AIProject/iCo.xcodeproj/project.pbxproj b/AIProject/iCo.xcodeproj/project.pbxproj index de6c720b..b29b2655 100644 --- a/AIProject/iCo.xcodeproj/project.pbxproj +++ b/AIProject/iCo.xcodeproj/project.pbxproj @@ -542,9 +542,9 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = iCo/iCo.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 7HK4Z95VZD; @@ -563,12 +563,12 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.1.1; OTHER_LDFLAGS = "-ObjC"; PRODUCT_BUNDLE_IDENTIFIER = com.est.ico; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.est.ico"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.est.ico"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -584,9 +584,9 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = iCo/iCo.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 7HK4Z95VZD; ENABLE_PREVIEWS = YES; @@ -604,12 +604,12 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.1.1; OTHER_LDFLAGS = "-ObjC"; PRODUCT_BUNDLE_IDENTIFIER = com.est.ico; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.est.ico"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.est.ico"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -623,7 +623,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = SJDR485DTV; GENERATE_INFOPLIST_FILE = YES; @@ -650,7 +650,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = SJDR485DTV; GENERATE_INFOPLIST_FILE = YES; @@ -677,9 +677,9 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = iCOWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 7HK4Z95VZD; GENERATE_INFOPLIST_FILE = YES; @@ -692,11 +692,11 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.3.2; PRODUCT_BUNDLE_IDENTIFIER = com.est.ico.widget; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.est.ico.widget"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.est.ico.widget"; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -711,9 +711,9 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = iCOWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 7HK4Z95VZD; GENERATE_INFOPLIST_FILE = YES; @@ -726,11 +726,11 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.3.2; PRODUCT_BUNDLE_IDENTIFIER = com.est.ico.widget; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.est.ico.widget"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.est.ico.widget"; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0;