- macOS에서 사용 가능한 머신 유형
- 지원되는 macOS 이미지
- macOS 이미지 업데이트 정책
.gitlab-ci.yml
파일 예제- fastlane을 사용한 iOS 프로젝트의 코드 서명
- Homebrew 최적화
- Cocoapods 최적화
- 알려진 문제 및 사용 제약 사항
macOS에서의 SaaS 러너
macOS에서의 SaaS 러너는 오픈 소스 프로그램 및 Premium 및 Ultimate 요금제를 가입한 고객을 위해 베타로 제공됩니다.
macOS에서의 SaaS 러너는 온디맨드 macOS 빌드 환경을 GitLab SaaS CI/CD와 통합하여 제공합니다. 이러한 러너를 사용하여 Apple 생태계 (macOS, iOS, watchOS, tvOS)용 앱을 빌드, 테스트 및 배포할 수 있습니다. GitLab의 단일 DevOps 플랫폼의 모든 기능을 활용할 수 있으며 빌드 환경을 관리하거나 운영할 필요가 없습니다. 저희의 모바일 DevOps 솔루션은 iOS용 모바일 애플리케이션을 빌드하고 배포하는 기능, 문서 및 안내를 제공합니다.
SaaS 러너가 macOS에서 일반 사용 가능 (GA)이 될 수 있도록 반복적인 작업을 진행하고 있습니다. 이에 대한 작업 내용은 관련 에픽에서 확인할 수 있습니다.
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에서의 GitLab SaaS 러너와 달리 macOS를 위한 VM 이미지 세트를 제공합니다.
다음 이미지 중 하나를 지정하여 .gitlab-ci.yml
파일에서 빌드를 실행할 수 있습니다. 각 이미지는 특정 버전의 macOS 및 Xcode를 실행합니다.
VM 이미지 | 상태 | |
---|---|---|
macos-12-xcode-14
| 게량 중단 예정
| (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 이미지는 한 번에 두 개만 지원되므로, 가장 오래된 이미지는 게량 중단되며 지원되는 이미지 수명주기에 따라 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 "started by ${GITLAB_USER_NAME}"
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 앱 스토어에 배포하기 전에 응용 프로그램을 코드 서명해야 합니다.
macOS VM 이미지의 각 러너에는 fastlane이 포함되어 있으며, 이는 모바일 앱 배포를 단순화하는 데 중점을 둔 오픈 소스 솔루션입니다.
애플리케이션의 코드 서명 설정 방법에 대한 자세한 내용은 모바일 DevOps 문서의 안내를 참조하십시오.
관련 주제:
Homebrew 최적화
기본적으로 Homebrew는 모든 작업 시작 시 업데이트를 확인합니다. Homebrew는 GitLab macOS 이미지 릴리스 주기보다 더 빈번할 수 있습니다. 이 릴리스 주기의 차이로 인해 brew
를 호출하는 단계가 완료되기까지 추가 시간이 걸릴 수 있습니다.
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 이상에서 사용할 수 있으며, GitLab SaaS macOS 러너에서 모두 지원됩니다.
CDN 액세스를 활성화하려면 Podfile이 다음과 같이 시작되도록 하십시오:
source 'https://cdn.cocoapods.org/'
GitLab 캐싱 사용
프로젝트의 Cocoapods 패키지에 캐싱을 사용하여 pod
가 변경될 때만 pod install
을 실행하여 빌드 성능을 향상시킬 수 있습니다.
프로젝트에 캐싱을 구성하려면 다음을 수행하십시오:
-
.gitlab-ci.yml
파일에cache
구성 추가:cache: key: files: - Podfile.lock paths: - Pods
- 프로젝트에
cocoapods-check
플러그인 추가 -
pod install
을 호출하기 전에 설치된 의존성을 확인하는 작업 스크립트 업데이트:bundle exec pod check || bundle exec pod install
소스 컨트롤에 pods 포함
프로젝트의 pods 디렉터리를 소스 컨트롤에 포함하여 CI 작업의 일부로 pods를 설치할 필요가 없지만 프로젝트 리포지터리의 전체 크기를 증가시킵니다.
알려진 문제 및 사용 제약 사항
- 작업에 필요한 특정 소프트웨어 버전이 VM 이미지에 포함되어 있지 않은 경우 필요한 소프트웨어를 가져와 설치해야 합니다. 이로 인해 작업 실행 시간이 증가됩니다.
- 자체 OS 이미지를 가져올 수 없습니다.
- 사용자
gitlab
의 키체인은 공개적으로 이용할 수 없습니다. 대신 키체인을 만들어야 합니다.