InfoGrab DocsInfoGrab Docs

macOS용 호스팅 러너

요약

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

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

macOS용 호스팅 러너는 베타 단계이며, 오픈소스 프로그램과 Premium 및 Ultimate 플랜 고객이 사용할 수 있습니다. macOS용 호스팅 러너의 정식 출시는 에픽 8267에서 제안되었습니다.

macOS용 호스팅 러너를 사용하기 전에 이에 영향을 미치는 알려진 문제 및 사용 제약 조건 목록을 검토합니다.

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

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

Runner Tag vCPUS Memory Storage
saas-macos-medium-m1 4 8 GB 50 GB
saas-macos-large-m2pro 6 16 GB 50 GB

지원되는 macOS 이미지#

모든 Docker 이미지를 실행할 수 있는 Linux용 호스팅 러너와 달리, GitLab은 macOS용으로 정해진 VM 이미지 세트를 제공합니다.

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

VM image Status
macos-15-xcode-16 GA 사전 설치된 소프트웨어
macos-26-xcode-26 GA 사전 설치된 소프트웨어
macos-27-xcode-27 beta 사전 설치된 소프트웨어

이미지를 지정하지 않으면 macOS 러너는 macos-26-xcode-26을 사용합니다.

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-26-xcode-26
  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 프로젝트 코드 서명하기#

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

각 macOS용 러너 VM 이미지에는 모바일 앱 배포를 간소화하는 것을 목표로 하는 오픈소스 솔루션인 fastlane이 포함되어 있습니다.

애플리케이션의 코드 서명을 설정하는 방법에 대한 자세한 내용은 모바일 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 성능을 개선하기 위해 다음 최적화를 고려해야 합니다.

CDN 액세스 활성화#

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

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

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

GitLab 캐시 사용하기#

pod가 변경될 때만 pod install을 실행하도록 GitLab에서 CocoaPods 패키지에 캐시를 사용하면 빌드 성능을 개선할 수 있습니다.

프로젝트에 대해 캐시를 설정하려면 다음을 수행합니다.

  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 실리콘 칩에는 효율 코어와 성능 코어가 있으므로 작업 실행 간에 작업 성능이 달라질 수 있습니다. 코어 할당이나 스케줄링을 제어할 수 없으므로 일관성이 떨어질 수 있습니다.
  • macOS용 호스팅 러너에 사용되는 AWS 베어메탈 macOS 머신의 가용성은 제한되어 있습니다. 사용 가능한 머신이 없으면 작업의 대기 시간이 길어질 수 있습니다.
  • macOS용 호스팅 러너 인스턴스는 요청에 응답하지 않는 경우가 있으며, 이 경우 작업이 최대 작업 지속 시간에 도달할 때까지 중단된 상태로 유지됩니다.
  • macOS는 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용합니다. 이러한 동작으로 인해 대소문자만 다른 동일한 파일 경로가 있는 경우 예기치 않은 오류가 발생할 수 있습니다. 이러한 중복 경로는 Git 작업 트리나 브랜치 및 태그가 저장되는 Git 참조에 존재할 수 있습니다.

macOS용 호스팅 러너

GitLab v19.5
Tier: Premium, Ultimate
Offering: GitLab.com
원문 보기

요약

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

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

macOS용 호스팅 러너는 베타 단계이며, 오픈소스 프로그램과 Premium 및 Ultimate 플랜 고객이 사용할 수 있습니다. macOS용 호스팅 러너의 정식 출시는 에픽 8267에서 제안되었습니다.

macOS용 호스팅 러너를 사용하기 전에 이에 영향을 미치는 알려진 문제 및 사용 제약 조건 목록을 검토합니다.

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

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

Runner Tag vCPUS Memory Storage
saas-macos-medium-m1 4 8 GB 50 GB
saas-macos-large-m2pro 6 16 GB 50 GB

지원되는 macOS 이미지#

모든 Docker 이미지를 실행할 수 있는 Linux용 호스팅 러너와 달리, GitLab은 macOS용으로 정해진 VM 이미지 세트를 제공합니다.

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

VM image Status
macos-15-xcode-16 GA 사전 설치된 소프트웨어
macos-26-xcode-26 GA 사전 설치된 소프트웨어
macos-27-xcode-27 beta 사전 설치된 소프트웨어

이미지를 지정하지 않으면 macOS 러너는 macos-26-xcode-26을 사용합니다.

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-26-xcode-26
  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 프로젝트 코드 서명하기#

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

각 macOS용 러너 VM 이미지에는 모바일 앱 배포를 간소화하는 것을 목표로 하는 오픈소스 솔루션인 fastlane이 포함되어 있습니다.

애플리케이션의 코드 서명을 설정하는 방법에 대한 자세한 내용은 모바일 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 성능을 개선하기 위해 다음 최적화를 고려해야 합니다.

CDN 액세스 활성화#

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

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

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

GitLab 캐시 사용하기#

pod가 변경될 때만 pod install을 실행하도록 GitLab에서 CocoaPods 패키지에 캐시를 사용하면 빌드 성능을 개선할 수 있습니다.

프로젝트에 대해 캐시를 설정하려면 다음을 수행합니다.

  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 실리콘 칩에는 효율 코어와 성능 코어가 있으므로 작업 실행 간에 작업 성능이 달라질 수 있습니다. 코어 할당이나 스케줄링을 제어할 수 없으므로 일관성이 떨어질 수 있습니다.
  • macOS용 호스팅 러너에 사용되는 AWS 베어메탈 macOS 머신의 가용성은 제한되어 있습니다. 사용 가능한 머신이 없으면 작업의 대기 시간이 길어질 수 있습니다.
  • macOS용 호스팅 러너 인스턴스는 요청에 응답하지 않는 경우가 있으며, 이 경우 작업이 최대 작업 지속 시간에 도달할 때까지 중단된 상태로 유지됩니다.
  • macOS는 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용합니다. 이러한 동작으로 인해 대소문자만 다른 동일한 파일 경로가 있는 경우 예기치 않은 오류가 발생할 수 있습니다. 이러한 중복 경로는 Git 작업 트리나 브랜치 및 태그가 저장되는 Git 참조에 존재할 수 있습니다.