튜토리얼: 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를 구성하려면:

  1. 빌드 환경 설정
  2. fastlane으로 코드 서명 구성
  3. Apple Store 통합과 fastlane으로 앱 배포 설정

시작하기 전에

이 튜토리얼을 시작하기 전에 다음이 준비되어 있어야 해요.

  • CI/CD 파이프라인에 접근할 수 있는 GitLab 계정
  • GitLab 저장소에 있는 모바일 앱 코드
  • Apple 개발자 계정
  • 로컬에 설치된 fastlane

빌드 환경 설정

GitLab 호스팅 러너를 사용하거나, 빌드 환경을 완전히 제어하려면 자체 관리 러너를 설정하세요.

  1. 저장소 루트에 .gitlab-ci.yml 파일을 만드세요.
  2. macOS GitLab 호스팅 러너 (베타)에서 작업을 실행하려면 지원되는 macOS 이미지를 추가하세요.
    test:
      image: macos-14-xcode-15
      stage: test
      script:
        - fastlane test
      tags:
        - saas-macos-medium-m1
    

fastlane으로 코드 서명 구성

iOS 코드 서명을 설정하려면 fastlane을 사용해 서명된 인증서를 GitLab에 업로드하세요.

  1. fastlane을 초기화하세요.
    fastlane init
    
  2. 구성으로 Matchfile을 생성하세요.
    fastlane match init
    
  3. Apple Developer 포털에서 인증서와 프로파일을 생성하고 그 파일들을 GitLab에 업로드하세요.
    PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match development
    
  4. 선택 사항. 프로젝트에 이미 서명 인증서와 프로비저닝 프로파일이 있다면 fastlane match import를 사용해 기존 파일을 GitLab에 불러오세요.
    PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match import
    
    파일 경로를 입력하라는 메시지가 표시돼요. 세부 정보를 입력하면 파일이 업로드되어 프로젝트의 CI/CD 설정에 표시됩니다. 가져오는 동안 git_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 배포를 만들려면:

  1. App Store Connect API용 API 키를 생성하세요. Apple App Store Connect 포털에서 프로젝트용 새 개인 키를 생성하세요.
  2. Apple App Store Connect 통합을 활성화하세요.
    1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾으세요.
    2. Settings > Integrations를 선택하세요.
    3. Apple App Store Connect를 선택하세요.
    4. Enable integration 아래에서 Active 체크박스를 선택하세요.
    5. Apple App Store Connect 구성 정보를 제공하세요.
      • Issuer ID: Apple App Store Connect 발급자 ID.
      • Key ID: 생성된 개인 키의 키 ID.
      • Private key: 생성된 개인 키. 이 키는 한 번만 다운로드할 수 있어요.
      • Protected branches and tags only: 보호 브랜치와 태그에서만 변수를 설정하려면 활성화하세요.
    6. Save changes를 선택하세요.
  3. 파이프라인과 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 전반을 함께 살펴보시면 좋아요.