안녕하세요. iOSangBong입니다.
프로젝트 진행중 시간이 나서 출근하자마자 블로그 겸 구현을 진행하고 있네요
어쨌든 어제에 이어서 진행해보겠습니다.
1️⃣ 기본 환경 설정
1. 일단 Homebrew 설치(기본적으로 iOS개발자라면 있을테니 패스)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. rbenv 및 Ruby 설치
brew install rbenv
rbenv install 3.3.0
rbenv global 3.3.0
3. Fastlane 설치
brew install fastlane
4. GitLab Runner 설치
brew install gitlab-runner
2️⃣ Fastlane 설정
자 이제 왠만한 설정은 다했고
프로젝트로 이동해서 fastlane을 설정해봅시다.
1. .xcodeproj 파일이 있는 곳에서 Fastlane을 초기화 해줍니다.
fastlane init
그럼 이제 폴더가 생성되고 아래와 같이 뜨는데요.

첫번째는 앱 스크린샷 캡쳐
두번째는 TestFlight 배포 자동화
세번째는 App Store 출시 자동화
네번째는 커스텀 세팅하는것 같습니다..
나는 일단 2번째 TestFlight 배포 자동화까지만 하니까 2번 선택!

잘 진행되는듯 하다가 프로젝트 파일 용량이 커서 타임아웃이 나서
일단 Y로 진행
그 다음 다음을 누르니까 초기설정은 완료됐습니다!
2. Appfile, Fastfile 수정
일단 Appfile 먼저 설정해보겠습니다.
open fastlane/Appfile
이거하면 Appfile 열리게 되는데
주석 있는거 다 지우고
app_identifier("\(Bundle ID)")
apple_id("\(Apple ID)")
이렇게 만 해놓고 저장했습니다.
그다음 Fastfile 설정해보겠습니다.
open fastlane/Fastfile
Fastfile 열어서 아래와 같이 세팅해줬습니다.
default_platform(:ios)
platform :ios do
desc "빌드버전 올리고 TestFlight 업로드"
lane :custom_lane do
# 자동 서명으로 처리
automatic_code_signing(
use_automatic_signing: true
)
# 빌드 번호 자동 증가
increment_build_number
# 빌드 & 아카이브
build_app(
scheme: "scheme 이름",
export_method: "app-store"
)
# TestFlight 업로드
upload_to_testflight(
skip_waiting_for_build_processing: true
)
end
end
여기서 SPM 라이브러리 태그 번호도 적어줘야되는 줄 알았는데
아직 그건 아니고 일단 저장하고 넘어가겠습니다.
Fastlane Match 설정도 하면 좋을거 같은데
일단 제 개발맥에 있는 인증서 사용하겠습니다.
그러고 테스트를 진행해보죠!
fastlane custom_lane
잘 하다가 이런 에러가 발생해서

export FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT=120
export FASTLANE_XCODEBUILD_SETTINGS_RETRIES=5
fastlane custom_lane
이렇게 하고 다시 돌려보니
시작 [10:33:37] 종료 [10:54:50]

아카이브 성공한 줄 알았는데 아니였네요..
이것저것 찾아보고 몇번 수정을 해봤는데요
원인은 아카이브할 때 Development 인증서로 서명됐는데, export할 때 Apple 서버에서 App Store용 프로비저닝 프로파일을 가져오려고 하니까 인증이 안 됐다고 하네요!
그래서 App Store Connect API를 발급받아서
키 ID, Issuer ID, P8 다운로드 및 경로를 입력해줬습니다!
default_platform(:ios)
platform :ios do
desc "빌드버전 올리고 TestFlight 업로드"
lane :custom_lane do
# API 키 설정
api_key = app_store_connect_api_key(
key_id: "key_id 입력",
issuer_id: "issuer_id 입력",
key_filepath: "~/AuthKey_**********.p8"
)
# 자동 서명으로 처리
automatic_code_signing(
use_automatic_signing: true
)
# add actions here: https://docs.fastlane.tools/actions
# 빌드 번호 자동 증가
increment_build_number(
xcodeproj: "***.xcodeproj"
)
# 빌드 & 아카이브
build_app(
workspace: "***.xcworkspace",
scheme: "scheme 이름",
export_method: "app-store",
xcargs: "-allowProvisioningUpdates"
clean: true,
export_options: {
signingStyle: "automatic"
}
)
# TestFlight 업로드
upload_to_testflight(
api_key: api_key,
skip_waiting_for_build_processing: true
)
end
end
요렇게 수정하고 다시 돌려봤습니다...
제발~~
시작 [14:13:19] 종료 [14:34:39]
Fastlane 기준 21분 정도 걸렸네요

여기서 TestFlight 올라오는것까지 확인 했습니다.
꽤 오랜시간이 걸렸네요 ㅎ.ㅎ
일단 글이 길어져서 3편으로 바로 돌아오겠습니다~!
그럼 다들 즐코딩하세요. 그럼 이만~
'Swift' 카테고리의 다른 글
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 4 (0) | 2026.03.25 |
|---|---|
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 3 (0) | 2026.03.13 |
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 1 (0) | 2026.03.12 |
| [iOS][Swift] LocalAuthentication Face ID & Touch ID 생체인식 간단하게 알아보기 (0) | 2024.08.03 |
| [iOS][Swift] shake motion 알아보기 (0) | 2023.08.22 |