튜토리얼: GitLab Mobile DevOps로 iOS 앱 만들기
튜토리얼: GitLab Mobile DevOps로 iOS 앱 만들기
GitLab CI/CD를 사용해 iOS 모바일 앱을 빌드하고, 자격 증명으로 서명하고, 앱 스토어에 배포하는 파이프라인을 만드는 튜토리얼이에요. fastlane을 활용해 코드 서명을 구성하고, Apple Store 통합으로 배포를 자동화하는 전체 흐름을 하나씩 따라 해 보는 방식으로 진행할게요.
iOS 빌드는 macOS 기반의 GitLab 호스팅 러너를 사용할 수 있고, fastlane이 인증서와 프로비저닝 프로파일을 GitLab에 업로드해 관리하는 구조예요.
출처: 문서
본문
이 튜토리얼에서는 GitLab CI/CD를 사용해 iOS 모바일 앱을 빌드하고, 자격 증명으로 서명하고, 앱 스토어에 배포하는 파이프라인을 만들게 돼요.
모바일 DevOps를 구성하려면:
시작하기 전에
이 튜토리얼을 시작하기 전에 다음이 준비되어 있어야 해요.
- CI/CD 파이프라인에 접근할 수 있는 GitLab 계정
- GitLab 저장소에 있는 모바일 앱 코드
- Apple 개발자 계정
- 로컬에 설치된
fastlane
빌드 환경 설정
GitLab 호스팅 러너를 사용하거나, 빌드 환경을 완전히 제어하려면 자체 관리 러너를 설정하세요.
- 저장소 루트에
.gitlab-ci.yml파일을 만드세요. - macOS GitLab 호스팅 러너 (베타)에서 작업을 실행하려면 지원되는 macOS 이미지를 추가하세요.
test: image: macos-14-xcode-15 stage: test script: - fastlane test tags: - saas-macos-medium-m1
fastlane으로 코드 서명 구성
iOS 코드 서명을 설정하려면 fastlane을 사용해 서명된 인증서를 GitLab에 업로드하세요.
- fastlane을 초기화하세요.
fastlane init - 구성으로
Matchfile을 생성하세요.fastlane match init - Apple Developer 포털에서 인증서와 프로파일을 생성하고 그 파일들을 GitLab에 업로드하세요.
PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match development - 선택 사항. 프로젝트에 이미 서명 인증서와 프로비저닝 프로파일이 있다면
fastlane match import를 사용해 기존 파일을 GitLab에 불러오세요.
파일 경로를 입력하라는 메시지가 표시돼요. 세부 정보를 입력하면 파일이 업로드되어 프로젝트의 CI/CD 설정에 표시됩니다. 가져오는 동안PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match importgit_url을 묻는다면 비워 두고 enter를 눌러도 안전해요.
이 구성을 포함하는 샘플 fastlane/Fastfile과 .gitlab-ci.yml 파일은 다음과 같아요.
fastlane/Fastfile:default_platform(:ios) platform :ios do desc "Build and sign the application for development" lane :build do setup_ci match(type: 'development', readonly: is_ci) build_app( project: "ios demo.xcodeproj", scheme: "ios demo", configuration: "Debug", export_method: "development" ) end end.gitlab-ci.yml:build_ios: image: macos-12-xcode-14 stage: build script: - fastlane build tags: - saas-macos-medium-m1
Apple Store 통합과 fastlane으로 앱 배포 설정
서명된 빌드는 Mobile DevOps Distribution 통합을 사용해 Apple App Store에 업로드할 수 있어요.
전제 조건:
- Apple Developer Program에 등록된 Apple ID가 있어야 해요.
- Apple App Store Connect 포털에서 프로젝트용 새 개인 키를 생성해야 해요.
Apple Store 통합과 fastlane으로 iOS 배포를 만들려면:
- App Store Connect API용 API 키를 생성하세요. Apple App Store Connect 포털에서 프로젝트용 새 개인 키를 생성하세요.
- Apple App Store Connect 통합을 활성화하세요.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾으세요.
- Settings > Integrations를 선택하세요.
- Apple App Store Connect를 선택하세요.
- Enable integration 아래에서 Active 체크박스를 선택하세요.
- Apple App Store Connect 구성 정보를 제공하세요.
- Issuer ID: Apple App Store Connect 발급자 ID.
- Key ID: 생성된 개인 키의 키 ID.
- Private key: 생성된 개인 키. 이 키는 한 번만 다운로드할 수 있어요.
- Protected branches and tags only: 보호 브랜치와 태그에서만 변수를 설정하려면 활성화하세요.
- Save changes를 선택하세요.
- 파이프라인과 fastlane 구성에 릴리스 단계를 추가하세요.
샘플 fastlane/Fastfile:
default_platform(:ios)
platform :ios do
desc "Build and sign the application for distribution, upload to TestFlight"
lane :beta do
setup_ci
match(type: 'appstore', readonly: is_ci)
app_store_connect_api_key
increment_build_number(
build_number: latest_testflight_build_number(initial_build_number: 1) + 1,
xcodeproj: "ios demo.xcodeproj"
)
build_app(
project: "ios demo.xcodeproj",
scheme: "ios demo",
configuration: "Release",
export_method: "app-store"
)
upload_to_testflight
end
end
샘플 .gitlab-ci.yml:
beta_ios:
image: macos-12-xcode-14
stage: beta
script:
- fastlane beta
축하해요! 이제 앱이 자동 빌드, 서명, 배포를 할 수 있게 설정되었어요. 첫 파이프라인을 트리거하려면 머지 리퀘스트를 만들어 보세요.
샘플 프로젝트
빌드, 서명, 릴리스 파이프라인이 구성된 샘플 Mobile DevOps 프로젝트는 다음 플랫폼에서 사용할 수 있어요.
- Android
- Flutter
- iOS
모든 프로젝트는 Mobile DevOps Demo Projects 그룹에서 볼 수 있어요.
더 알아보기
fastlane match를 활용한 인증서·프로비저닝 프로파일 관리 방식이 iOS 서명의 핵심이에요. 관련해서는 fastlane 공식 문서와 함께 GitLab Mobile DevOps 전반을 함께 살펴보시면 좋아요.