InfoGrab Docs

macOS의 호스팅 러너

요약

macOS의 호스팅 러너는 GitLab CI/CD와 완전히 통합된 온디맨드 macOS 환경을 제공합니다. macOS의 호스팅 러너는 베타 상태로 오픈 소스 프로그램과 Premium 및 Ultimate 플랜의 고객이 사용할 수 있습니다.

macOS의 호스팅 러너는 GitLab CI/CD와 완전히 통합된 온디맨드 macOS 환경을 제공합니다. 이러한 러너를 사용하여 Apple 에코시스템(macOS, iOS, watchOS, tvOS)의 앱을 빌드, 테스트, 배포할 수 있습니다. Mobile DevOps 섹션은 iOS용 모바일 애플리케이션 빌드 및 배포에 대한 기능, 문서 및 지침을 제공합니다.

macOS의 호스팅 러너는 베타 상태로 오픈 소스 프로그램과 Premium 및 Ultimate 플랜의 고객이 사용할 수 있습니다. macOS의 호스팅 러너의 일반 가용성에픽 8267에서 제안되었습니다.

macOS의 호스팅 러너를 사용하기 전에 알려진 문제 및 사용 제약 목록을 검토하세요.

macOS에 사용 가능한 머신 유형#

GitLab은 macOS의 호스팅 러너에 다음 머신 유형을 제공합니다. x86-64 대상으로 빌드하려면 Rosetta 2를 사용하여 Intel x86-64 환경을 에뮬레이션할 수 있습니다.

러너 태그 vCPU 메모리 스토리지
saas-macos-medium-m1 4 8 GB 50 GB
saas-macos-large-m2pro 6 16 GB 50 GB

지원되는 macOS 이미지#

Linux의 호스팅 러너와 달리 모든 Docker 이미지를 실행할 수 있는 반면, GitLab은 macOS에 대해 VM 이미지 세트를 제공합니다.

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

VM 이미지 상태
macos-14-xcode-15 deprecated 사전 설치 소프트웨어
macos-15-xcode-16 GA 사전 설치 소프트웨어
macos-26-xcode-26 GA 사전 설치 소프트웨어

이미지가 지정되지 않은 경우 macOS 러너는 macos-15-xcode-16을 사용합니다.

macOS의 이미지 업데이트 정책#

이미지와 설치된 구성 요소는 각 GitLab 릴리스마다 업데이트되어 사전 설치된 소프트웨어를 최신 상태로 유지합니다. GitLab은 일반적으로 여러 버전의 사전 설치 소프트웨어를 지원합니다. 자세한 내용은 사전 설치 소프트웨어 전체 목록을 참조하세요.

macOS와 Xcode의 주요 및 부 릴리스는 Apple 릴리스 이후 마일스톤에서 제공됩니다.

새 주요 릴리스 이미지는 처음에 베타로 제공되며 첫 번째 부 릴리스와 함께 일반적으로 사용 가능해집니다. 한 번에 두 개의 일반적으로 사용 가능한 이미지만 지원되므로 가장 오래된 이미지가 지원 중단되며 지원되는 이미지 수명 주기에 따라 3개월 후에 제거됩니다.

새 주요 릴리스가 일반적으로 사용 가능해지면 모든 macOS 잡의 기본 이미지가 됩니다.

.gitlab-ci.yml 파일 예시#

다음 샘플 .gitlab-ci.yml 파일은 macOS의 호스팅 러너를 사용하는 방법을 보여줍니다:

.macos_saas_runners:
  tags:
    - saas-macos-medium-m1
  image: macos-14-xcode-15
  before_script:
    - echo "started by ${GITLAB_USER_NAME} / @${GITLAB_USER_LOGIN}"

build:
  extends:
    - .macos_saas_runners
  stage: build
  script:
    - echo "running scripts in the build job"

test:
  extends:
    - .macos_saas_runners
  stage: test
  script:
    - echo "running scripts in the test job"

fastlane으로 iOS 프로젝트 코드 서명#

GitLab을 Apple 서비스와 통합하거나 기기에 설치하거나 Apple App Store에 배포하려면 먼저 애플리케이션에 코드 서명을 해야 합니다.

macOS VM 이미지의 각 러너에는 모바일 앱 배포를 단순화하기 위한 오픈 소스 솔루션인 fastlane이 포함되어 있습니다.

애플리케이션의 코드 서명 설정 방법에 대한 자세한 내용은 Mobile DevOps 문서의 지침을 참조하세요.

관련 항목:

Homebrew 최적화#

기본적으로 Homebrew는 작업 시작 시 업데이트를 확인합니다. Homebrew는 GitLab macOS 이미지 릴리스 사이클보다 더 자주 릴리스 사이클을 가질 수 있습니다. 이러한 릴리스 사이클 차이로 인해 brew를 호출하는 단계가 Homebrew 업데이트를 처리하는 동안 완료하는 데 더 오래 걸릴 수 있습니다.

의도하지 않은 Homebrew 업데이트로 인한 빌드 시간을 줄이려면 .gitlab-ci.yml에서 HOMEBREW_NO_AUTO_UPDATE 변수를 설정합니다:

variables:
  HOMEBREW_NO_AUTO_UPDATE: 1

CocoaPods 최적화#

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

CocoaPods CDN

전체 프로젝트 저장소를 클론하는 대신 CDN에서 패키지를 다운로드하기 위해 콘텐츠 전송 네트워크(CDN) 액세스를 사용할 수 있습니다. CDN 액세스는 CocoaPods 1.8 이상에서 사용 가능하며 macOS의 모든 GitLab 호스팅 러너에서 지원됩니다.

CDN 액세스를 활성화하려면 Podfile이 다음으로 시작하는지 확인합니다:

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

GitLab 캐싱 사용

GitLab의 CocoaPods 패키지에서 캐싱을 사용하면 pod가 변경될 때만 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
    

소스 제어에 pod 포함

소스 제어에 pods 디렉터리를 포함할 수도 있습니다. 이렇게 하면 CI 잡의 일부로 pod를 설치할 필요가 없지만 프로젝트 저장소의 전체 크기가 증가합니다.

알려진 문제 및 사용 제약#

  • VM 이미지에 잡에 필요한 특정 소프트웨어 버전이 포함되어 있지 않으면 필요한 소프트웨어를 가져와서 설치해야 합니다. 이로 인해 잡 실행 시간이 늘어납니다.
  • 자체 OS 이미지를 가져오는 것은 불가능합니다.
  • gitlab 사용자의 키체인은 공개적으로 사용할 수 없습니다. 대신 키체인을 생성해야 합니다.
  • macOS의 호스팅 러너는 헤드리스 모드로 실행됩니다. testmanagerd와 같이 UI 상호작용이 필요한 워크로드는 지원되지 않습니다.
  • Apple silicon 칩에는 효율성 코어와 성능 코어가 있으므로 잡 실행 간에 잡 성능이 다를 수 있습니다. 코어 할당이나 스케줄링을 제어할 수 없으며 이로 인해 불일치가 발생할 수 있습니다.
  • macOS의 호스팅 러너에 사용되는 AWS 베어 메탈 macOS 머신의 가용성이 제한됩니다. 사용 가능한 머신이 없을 때 잡이 오래 기다릴 수 있습니다.
  • macOS의 호스팅 러너 인스턴스가 요청에 응답하지 않을 때가 있어 최대 잡 지속 시간에 도달할 때까지 잡이 멈출 수 있습니다.
  • macOS는 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용합니다. 이 동작은 대소문자만 다른 중복 파일 경로가 있는 경우 예상치 못한 오류를 유발할 수 있습니다. 이러한 중복 경로는 Git 작업 트리나 브랜치와 태그가 저장되는 Git 참조에 있을 수 있습니다.

macOS의 호스팅 러너

Tier: Premium, Ultimate
Offering: GitLab.com
원문 보기
요약

macOS의 호스팅 러너는 GitLab CI/CD와 완전히 통합된 온디맨드 macOS 환경을 제공합니다. macOS의 호스팅 러너는 베타 상태로 오픈 소스 프로그램과 Premium 및 Ultimate 플랜의 고객이 사용할 수 있습니다.

macOS의 호스팅 러너는 GitLab CI/CD와 완전히 통합된 온디맨드 macOS 환경을 제공합니다. 이러한 러너를 사용하여 Apple 에코시스템(macOS, iOS, watchOS, tvOS)의 앱을 빌드, 테스트, 배포할 수 있습니다. Mobile DevOps 섹션은 iOS용 모바일 애플리케이션 빌드 및 배포에 대한 기능, 문서 및 지침을 제공합니다.

macOS의 호스팅 러너는 베타 상태로 오픈 소스 프로그램과 Premium 및 Ultimate 플랜의 고객이 사용할 수 있습니다. macOS의 호스팅 러너의 일반 가용성에픽 8267에서 제안되었습니다.

macOS의 호스팅 러너를 사용하기 전에 알려진 문제 및 사용 제약 목록을 검토하세요.

macOS에 사용 가능한 머신 유형#

GitLab은 macOS의 호스팅 러너에 다음 머신 유형을 제공합니다. x86-64 대상으로 빌드하려면 Rosetta 2를 사용하여 Intel x86-64 환경을 에뮬레이션할 수 있습니다.

러너 태그 vCPU 메모리 스토리지
saas-macos-medium-m1 4 8 GB 50 GB
saas-macos-large-m2pro 6 16 GB 50 GB

지원되는 macOS 이미지#

Linux의 호스팅 러너와 달리 모든 Docker 이미지를 실행할 수 있는 반면, GitLab은 macOS에 대해 VM 이미지 세트를 제공합니다.

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

VM 이미지 상태
macos-14-xcode-15 deprecated 사전 설치 소프트웨어
macos-15-xcode-16 GA 사전 설치 소프트웨어
macos-26-xcode-26 GA 사전 설치 소프트웨어

이미지가 지정되지 않은 경우 macOS 러너는 macos-15-xcode-16을 사용합니다.

macOS의 이미지 업데이트 정책#

이미지와 설치된 구성 요소는 각 GitLab 릴리스마다 업데이트되어 사전 설치된 소프트웨어를 최신 상태로 유지합니다. GitLab은 일반적으로 여러 버전의 사전 설치 소프트웨어를 지원합니다. 자세한 내용은 사전 설치 소프트웨어 전체 목록을 참조하세요.

macOS와 Xcode의 주요 및 부 릴리스는 Apple 릴리스 이후 마일스톤에서 제공됩니다.

새 주요 릴리스 이미지는 처음에 베타로 제공되며 첫 번째 부 릴리스와 함께 일반적으로 사용 가능해집니다. 한 번에 두 개의 일반적으로 사용 가능한 이미지만 지원되므로 가장 오래된 이미지가 지원 중단되며 지원되는 이미지 수명 주기에 따라 3개월 후에 제거됩니다.

새 주요 릴리스가 일반적으로 사용 가능해지면 모든 macOS 잡의 기본 이미지가 됩니다.

.gitlab-ci.yml 파일 예시#

다음 샘플 .gitlab-ci.yml 파일은 macOS의 호스팅 러너를 사용하는 방법을 보여줍니다:

.macos_saas_runners:
  tags:
    - saas-macos-medium-m1
  image: macos-14-xcode-15
  before_script:
    - echo "started by ${GITLAB_USER_NAME} / @${GITLAB_USER_LOGIN}"

build:
  extends:
    - .macos_saas_runners
  stage: build
  script:
    - echo "running scripts in the build job"

test:
  extends:
    - .macos_saas_runners
  stage: test
  script:
    - echo "running scripts in the test job"

fastlane으로 iOS 프로젝트 코드 서명#

GitLab을 Apple 서비스와 통합하거나 기기에 설치하거나 Apple App Store에 배포하려면 먼저 애플리케이션에 코드 서명을 해야 합니다.

macOS VM 이미지의 각 러너에는 모바일 앱 배포를 단순화하기 위한 오픈 소스 솔루션인 fastlane이 포함되어 있습니다.

애플리케이션의 코드 서명 설정 방법에 대한 자세한 내용은 Mobile DevOps 문서의 지침을 참조하세요.

관련 항목:

Homebrew 최적화#

기본적으로 Homebrew는 작업 시작 시 업데이트를 확인합니다. Homebrew는 GitLab macOS 이미지 릴리스 사이클보다 더 자주 릴리스 사이클을 가질 수 있습니다. 이러한 릴리스 사이클 차이로 인해 brew를 호출하는 단계가 Homebrew 업데이트를 처리하는 동안 완료하는 데 더 오래 걸릴 수 있습니다.

의도하지 않은 Homebrew 업데이트로 인한 빌드 시간을 줄이려면 .gitlab-ci.yml에서 HOMEBREW_NO_AUTO_UPDATE 변수를 설정합니다:

variables:
  HOMEBREW_NO_AUTO_UPDATE: 1

CocoaPods 최적화#

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

CocoaPods CDN

전체 프로젝트 저장소를 클론하는 대신 CDN에서 패키지를 다운로드하기 위해 콘텐츠 전송 네트워크(CDN) 액세스를 사용할 수 있습니다. CDN 액세스는 CocoaPods 1.8 이상에서 사용 가능하며 macOS의 모든 GitLab 호스팅 러너에서 지원됩니다.

CDN 액세스를 활성화하려면 Podfile이 다음으로 시작하는지 확인합니다:

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

GitLab 캐싱 사용

GitLab의 CocoaPods 패키지에서 캐싱을 사용하면 pod가 변경될 때만 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
    

소스 제어에 pod 포함

소스 제어에 pods 디렉터리를 포함할 수도 있습니다. 이렇게 하면 CI 잡의 일부로 pod를 설치할 필요가 없지만 프로젝트 저장소의 전체 크기가 증가합니다.

알려진 문제 및 사용 제약#

  • VM 이미지에 잡에 필요한 특정 소프트웨어 버전이 포함되어 있지 않으면 필요한 소프트웨어를 가져와서 설치해야 합니다. 이로 인해 잡 실행 시간이 늘어납니다.
  • 자체 OS 이미지를 가져오는 것은 불가능합니다.
  • gitlab 사용자의 키체인은 공개적으로 사용할 수 없습니다. 대신 키체인을 생성해야 합니다.
  • macOS의 호스팅 러너는 헤드리스 모드로 실행됩니다. testmanagerd와 같이 UI 상호작용이 필요한 워크로드는 지원되지 않습니다.
  • Apple silicon 칩에는 효율성 코어와 성능 코어가 있으므로 잡 실행 간에 잡 성능이 다를 수 있습니다. 코어 할당이나 스케줄링을 제어할 수 없으며 이로 인해 불일치가 발생할 수 있습니다.
  • macOS의 호스팅 러너에 사용되는 AWS 베어 메탈 macOS 머신의 가용성이 제한됩니다. 사용 가능한 머신이 없을 때 잡이 오래 기다릴 수 있습니다.
  • macOS의 호스팅 러너 인스턴스가 요청에 응답하지 않을 때가 있어 최대 잡 지속 시간에 도달할 때까지 잡이 멈출 수 있습니다.
  • macOS는 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용합니다. 이 동작은 대소문자만 다른 중복 파일 경로가 있는 경우 예상치 못한 오류를 유발할 수 있습니다. 이러한 중복 경로는 Git 작업 트리나 브랜치와 태그가 저장되는 Git 참조에 있을 수 있습니다.