macOS에서의 SaaS 러너

Tier: Premium, Ultimate Offering: GitLab.com Status: Beta

macOS에서의 SaaS 러너는 오픈 소스 프로그램 및 프리미엄 및 얼티밋 요금제 고객을 위해 베타에 있습니다.

macOS에서의 SaaS 러너는 GitLab SaaS CI/CD와 통합된 온디맨드 macOS 빌드 환경을 제공합니다. Apple 생태계(macOS, iOS, watchOS, tvOS)용 앱을 빌드, 테스트 및 배포하기 위해 이 러너를 사용할 수 있습니다. GitLab 단일 DevOps 플랫폼의 모든 기능을 활용할 수 있으며 빌드 환경을 관리하거나 운영할 필요가 없습니다. Mobile DevOps 솔루션에서는 iOS용 모바일 애플리케이션을 빌드하고 배포하는 데 필요한 기능, 문서 및 안내를 제공합니다.

계속해서 macOS에서의 SaaS 러너를 일반적으로 사용 가능하도록 반복하고 있습니다. 이 목표를 향해 진행 중인 작업은 관련 에픽에서 확인할 수 있습니다.

macOS용 사용 가능한 머신 유형

GitLab SaaS는 Apple 실리콘(M1) 칩을 사용하는 macOS 빌드 머신을 제공합니다. x86-64 타깃용으로 빌드하기 위해 Intel x86-64 빌드 환경을 모방하는 Rosetta 2를 사용할 수 있습니다.

러너 태그 vCPU 메모리 스토리지
saas-macos-medium-m1 4 8 GB 25 GB

지원되는 macOS 이미지

Linux에서의 SaaS 러너와 달리 GitLab SaaS는 macOS용 VM 이미지 세트를 제공합니다.

다음 이미지 중 하나에서 빌드를 실행할 수 있으며, 이는 .gitlab-ci.yml 파일에서 지정합니다. 각 이미지는 특정 버전의 macOS 및 Xcode에서 실행됩니다.

VM 이미지 상태  
macos-12-xcode-14 Deprecated (GitLab 16.10에서 제거 예정)
macos-13-xcode-14 GA 선행 설치된 소프트웨어
macos-14-xcode-15 GA 선행 설치된 소프트웨어

이미지가 지정되지 않으면 macOS 러너는 macos-13-xcode-14를 사용합니다.

macOS용 이미지 업데이트 정책

이미지 및 설치된 구성 요소는 GitLab 릴리즈마다 업데이트되어 미리 설치된 소프트웨어를 최신 상태로 유지합니다. 보통 GitLab은 여러 버전의 미리 설치된 소프트웨어를 지원합니다. 자세한 정보는 미리 설치된 소프트웨어의 전체 목록를 참조하십시오.

macOS 및 Xcode의 주요 및 부 버전 릴리스는 Apple의 릴리스 후 2주 이내에 제공됩니다.

새로운 주요 버전 릴리스 이미지는 처음에 베타로 제공되며, 첫 번째 부 버전 릴리스가 출시되면 일반적으로 사용 가능(GA) 상태가 됩니다. GA 이미지는 동시에 2개까지 지원되므로 가장 오래된 이미지는 폐기 처리되며 지원되는 이미지 라이프사이클에 따라 3개월 후에 제거됩니다.

.gitlab-ci.yml 예시 파일

다음 샘플 .gitlab-ci.yml 파일은 macOS의 SaaS 러너를 사용하기 위한 방법을 보여줍니다:

.macos_saas_runners:
  tags:
    - saas-macos-medium-m1
  image: macos-14-xcode-15
  before_script:
    - echo "${GITLAB_USER_NAME}에 의해 시작됨"

build:
  extends:
    - .macos_saas_runners
  stage: build
  script:
    - "빌드 작업에서 스크립트 실행 중"

test:
  extends:
    - .macos_saas_runners
  stage: test
  script:
    - "테스트 작업에서 스크립트 실행 중"

fastlane을 사용하여 iOS 프로젝트에 코드 서명하기

GitLab을 Apple 서비스와 통합하거나 기기에 설치하거나 Apple 앱 스토어에 배포하기 전에 응용 프로그램에 코드 서명을 해야 합니다.

각 macOS VM 이미지에는 fastlane이 포함되어 있어, 모바일 앱 배포를 간소화하는 오픈 소스 솔루션입니다.

애플리케이션에 대한 코드 서명 설정 방법에 대한 정보는 Mobile DevOps 문서의 지침을 참조하십시오.

관련 주제:

Homebrew 최적화

기본적으로 Homebrew는 작업을 시작할 때 업데이트를 확인합니다. Homebrew는 GitLab macOS 이미지 릴리스 주기보다 더 빈번할 수 있습니다. 이러한 릴리스 주기의 차이로 인해 brew를 호출하는 단계가 Homebrew가 업데이트를 수행하는 동안 추가 시간이 소요될 수 있습니다.

의도하지 않은 Homebrew 업데이트로 인한 빌드 시간을 줄이려면 .gitlab-ci.ymlHOMEBREW_NO_AUTO_UPDATE 변수를 설정하세요:

variables:
  HOMEBREW_NO_AUTO_UPDATE: 1

Cocoapods 최적화

프로젝트에서 Cocoapods를 사용하는 경우 CI 성능을 향상시키기 위해 다음 최적화를 고려해야 합니다.

Cocoapods CDN

전체 프로젝트 저장소를 복제하는 대신 콘텐츠 전달 네트워크(CDN)를 통해 패키지를 다운로드할 수 있습니다. CDN 액세스는 Cocoapods 1.8 이상에서 사용할 수 있으며 모든 GitLab SaaS 러너에서 macOS를 지원합니다.

CDN 액세스를 활성화하려면 Podfile이 다음과 같이 시작하는지 확인하세요:

source 'https://cdn.cocoapods.org/'

GitLab 캐싱 사용

GitLab에서 Cocoapods 패키지 캐싱을 사용하여 팟이 변경될 때에만 pod install을 실행하여 빌드 성능을 향상시킬 수 있습니다.

프로젝트에 캐싱을 구성하려면:

  1. .gitlab-ci.yml 파일에 cache 구성을 추가하세요:

     cache:
       key:
         files:
          - Podfile.lock
     paths:
       - Pods
    
  2. 프로젝트에 cocoapods-check 플러그인을 추가하세요.
  3. pod install을 호출하기 전에 설치된 종속성을 확인하는 작업 스크립트를 업데이트하세요:

     bundle exec pod check || bundle exec pod install
    

소스 제어에 팟 포함

또한 소스 제어에 팟 디렉토리를 포함할 수 있습니다. 이렇게 하면 CI 작업의 일부로서 팟을 설치할 필요가 없어지지만 프로젝트 저장소의 전체 크기를 증가시킵니다.

알려진 문제 및 사용 제한 사항

  • VM 이미지에 작업에 필요한 특정 소프트웨어 버전이 포함되어 있지 않으면 해당 소프트웨어를 가져와 설치해야 합니다. 이로 인해 작업 실행 시간이 증가합니다.
  • 사용자 gitlab의 키체인은 공개적으로 사용할 수 없습니다. 대신 키체인을 직접 만들어야 합니다.