Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- CI/CD
- cleanarchitecture
- ai expo
- apple intelligence
- swift알고리즘
- gitlab
- swift
- mvvm
- LLM
- CICD
- ReactiveX
- rxswift
- 오토레이아웃
- AI
- 백준
- Union-Find
- 동시성프로그래밍
- OperationQueue
- RxCocoa
- 클린아키텍처
- 동작과정
- 애플인텔리전스
- Autolayout
- IOS
- RxSwift요약
- gitlabci/cd
- 알고리즘
- Content Hugging priority
- Content Compression Resistance priority
- 자료구조
Archives
- Today
- Total
JosephCha의 개발일지
iOS GitLab CI/CD 본문
CI/CD란?
CI/CD는 반복적인 코드 변경을 지속적으로 구축, 테스트, 배포 및 모니터링하는 지속적인 소프트웨어 개발 방법.
이 반복 프로세스는 버그가 있거나 실패한 이전 버전을 기반으로 새로운 코드를 개발할 가능성을 줄이는 데 도움이 됨. GitLab CI/CD는 개발 주기 초기에 버그를 포착할 수 있으며, 프로덕션에 배포된 코드가 기존 코드 표준을 준수하는지 확인하는 데 도움을 줄 수 있음.
참고사항
- GitLab Runner: GitLab CI/CD와 함께 작동하여 파이프라인에서 작업을 실행하는 응용 프로그램
- Docker: 애플리케이션과 그 종속성을 하나의 표준화된 단위로 패키징하여 컨테이너라는 가벼운 가상화 환경에서 실행할 수 있게 해주는 오픈소스 플랫폼. 이 컨테이너 기술을 활용하면 애플리케이션을 어디서든지 일관되게 실행할 수 있어 개발, 테스트, 배포 프로세스를 크게 간소화함.
자세한 내용: https://chatgpt.com/share/6788c13b-0d14-8012-9e70-5506133abcbd
개인적으로 현재 금융앱을 개발하기에, 보안정책상 내부망에서 소스에 대한 저장과 빌드가 실행 되어야 함. (다른 회사들에서도 그러겠죠?)
그러므로, Xcode Cloud나 GitLab MacOS Saas 방식 사용이 어려워, 하기 방식들중 4.macOS PC로 GitLab Runner를 실행하는 방법을 사용해 내부망 및 MacOS 환경에서 돌릴 수 있도록 함.
Git Runner를 활용하는 방식들
1. Docker로 GitLab Runner를 실행하는 방법
- 설명
- Docker 컨테이너에서 GitLab Runner를 실행하여 CI/CD 작업을 실행하는 방법
- 장점
- 격리된 환경 제공 - 각 Runner가 Docker 컨테이너 내에서 실행되어 호스트 시스템과 격리됨.
- 유지보수 용이 - Docker 이미지를 활용하여 Runner를 쉽게 업데이트하거나 롤백할 수 있음.
- 일관된 환경 - Docker 이미지를 통해 Runner 실행 환경을 표준화할 수 있음.
- 확장성 - Docker Compose 또는 Kubernetes와 연계하여 Runners를 손쉽게 확장할 수 있음.
- 편리한 배포 - Docker 명령만으로 어디서든 GitLab Runner를 실행 가능.
- 단점
- iOS 빌드, 배포 불가: Docker는 기본적으로 Linux 컨테이너를 실행하며, macOS를 네이티브로 지원하지 않음. iOS 앱을 빌드하려면 macOS에서 실행되는 Xcode Command Line Tools가 필요하기 때문에, Docker 컨테이너 내부에서는 xcodebuild를 직접 실행할 수 없음.
- 사용법
2. GitLab의 macOS SaaS Runners로 실행하는 방법
- 설명
- GitLab이 제공하는 클라우드 기반 macOS 환경에서 빌드 작업을 실행할 수 있는 서비스. 주로 iOS, macOS, watchOS, tvOS와 같은 Apple 플랫폼의 앱 개발 및 빌드/테스트를 자동화하기 위해 사용.
- 장점
- 편의성 - 사용자가 로컬 환경을 유지할 필요가 없으므로, macOS PC를 켜두거나 관리하지 않아도 됨.
- 빌드 환경 유지보수 불필요 - GitLab이 macOS와 Xcode 환경을 관리 및 업데이트하므로, 사용자는 코딩과 빌드 프로세스에만 집중할 수 있음.
- 확장성 - GitLab의 클라우드 인프라는 자동으로 확장되며, 대규모 프로젝트에도 안정적으로 대응함.
- 다양한 Apple 플랫폼 지원 - GitLab의 클라우드 인프라는 자동으로 확장되며, 대규모 프로젝트에도 안정적으로 대응함.
- 단점
- 내부망에서만 소스 형상관리하는 회사 환경에서는 보안적 문제로 사용하기 어려움
- macOS Shared Runners는 GitLab.com의 클라우드 기반 서비스로, 내부망에서 GitLab 서버와의 통신이 보안적 문제가 있을 수 있음. 소스를 외부에 공유하기 떄문.
- 유료 플랜 필요 - GitLab의 macOS Shared Runners는 무료 플랜에서는 제공되지 않으며, GitLab Premium 이상의 플랜에서 사용할 수 있음. (참고: GitHub Actions는 월 2,000분 무료)
- Xcode 버전 확인 - 특정 Xcode 버전이 필요하다면 GitLab이 제공하는 macOS 환경에서 해당 버전이 지원되는지 확인해야 함.
- 내부망에서만 소스 형상관리하는 회사 환경에서는 보안적 문제로 사용하기 어려움
- 사용법
3.GitLab CI/CD와 Xcode Cloud 통합하고, Xcode Cloud로 빌드, 테스트, 배포하는 방법
- 설명
- GitLab CI/CD를 쓰는 대신에 빌드, 테스트, 배포 파이프라인은 Xcode Cloud를 통해 실행.
- Xcode Cloud는 Xcode에 내장된 CI/CD 서비스로, Apple 개발자를 위해 특별히 제작됨.
- 장점
- 자동화된 작업 흐름: 개발 과정에 맞게 작업 흐름을 구성하거나, 기본 제공되는 작업 흐름을 사용하여 시작한 후 필요에 따라 맞춤화할 수 있습니다. 코드 변경 사항이 커밋될 때마다 빌드를 수행하며, 문제가 발생하면 팀에 즉시 알림을 보냅니다
- 병렬 테스트: 하나 또는 두 개의 기기 유형에서 빠르게 프로젝트 상태를 확인하거나, 다양한 기기 구성에서 에지 케이스를 테스트하도록 설정할 수 있습니다. Xcode Cloud는 리소스를 병렬로 할당하여 테스트 작업을 신속하게 완료합니다.
- Xcode와의 통합: 빌드 및 테스트 결과, 그리고 사용자 피드백을 Xcode 내에서 직접 확인할 수 있습니다. 클라우드에서 빌드가 진행되므로 Xcode에 실시간 상태가 표시되며, 모니터링하려는 빌드 작업별로 필터링할 수 있음.
- App Store Connect와의 통합: App Store Connect 웹 대시보드에서 빌드 및 테스트 결과와 관련된 중요한 정보를 확인하고, 웹에서 직접 작업 흐름을 편집하거나 빌드를 실행할 수 있음.
- TestFlight와의 연동: Xcode Cloud는 TestFlight와 연동되어 팀을 위해 새로운 빌드를 설치할 수 있습니다. 이를 통해 새로운 아이디어를 실험하거나 특정 기능이 포함된 앱의 특정 브랜치를 외부 테스터에게 배포할 수 있음.
- 보안 및 개인정보 보호: Xcode Cloud는 사용하지 않는 상태의 모든 데이터를 암호화하고, 이중 인증으로 접근 권한을 보호하여 프로젝트와 개인정보를 안전하게 관리합니다. 소스 코드는 빌드 시에만 사용되며, 임시 빌드 환경은 빌드 완료 후 파기됨.
- 월 25시간 무료: Apple Developer Program 멤버십(애플 개발자 계정)에는 매월 25시간의 컴퓨팅 시간이 포함
- 단점
- Apple 생태계를 넘어서는 작업을 처리하기에는 제한적임.
- 내부망에서만 소스 형상관리하는 회사 환경에서는 보안적 문제로 사용하기 어려움
- Xcode Cloud는 Apple의 클라우드 서비스로, 내부망에서 GitLab 서버와의 통신이 보안적 문제가 있을 수 있음. 소스를 외부에 공유하기 떄문.
- 사용법
- Xcode Cloud 설정법 - https://developer.apple.com/documentation/xcode/configuring-your-first-xcode-cloud-workflow/
- GitLab CI/CD YAML 파일 구성 - GitLab의 .gitlab-ci.yml 파일에서 Xcode Cloud를 호출하는 스크립트를 작성함. https://developer.apple.com/documentation/appstoreconnectapi/xcode-cloud-workflow-and-builds 참고
stages: - build - test - deploy build: stage: build script: - curl -X POST \\ -H "Authorization: Bearer ${APPSTORE_API_KEY}" \\ -H "Content-Type: application/json" \\ -d '{ "type": "build", "attributes": { "workflow_id": "your-workflow-id", "branch": "main" } }' \\ "<https://api.appstoreconnect.apple.com/v1/builds>" only: - main test: stage: test script: - echo "Running tests on Xcode Cloud..." only: - main deploy: stage: deploy script: - echo "Deploying the app..." only: - tags
4. macOS PC로 GitLab Runner를 실행하는 방법
- 설명
- macOS PC로 GitLab Runner를 실행하여 CI/CD 작업을 실행하는 방법
- 장점
- macOS 전용 개발 및 테스트 지원 - macOS 환경에서 실행해야 하는 빌드나 테스트(예: iOS, macOS 앱 개발, Xcode 관련 작업)를 직접 실행할 수 있음. iOS 앱 빌드 및 테스트는 반드시 macOS에서 실행해야 하므로 유용함.
- 로컬 개발 환경과 유사 - 로컬 macOS 환경과 동일한 환경에서 CI/CD 작업을 수행하므로, 환경 차이로 인한 오류를 줄일 수 있음
- 유연성 - macOS PC를 직접 제어할 수 있어 필요에 따라 Runner를 쉽게 추가하거나 제거할 수 있음.
- 단점
- PC 상태 의존성 - GitLab Runner는 macOS PC가 켜져 있고, 네트워크에 연결되어 있으며, GitLab Runner 프로세스가 실행 중일 때만 작업을 수행할 수 있음.
- 비교적 낮은 가용성 - 클라우드 기반 Runner는 24/7 가동되며 언제든 작업을 실행할 수 있는 반면, 로컬 Runner는 macOS PC의 상태에 따라 가용성이 제한됨.
- 사용법
'iOS' 카테고리의 다른 글
App Intents를 통해 Siri(Apple Intelligence)에서 앱 기능 호출하기 (2) | 2024.08.09 |
---|---|
클린 아키텍처 (iOS 전용 포함) (2) | 2024.05.20 |
동시성 프로그래밍(개념, GCD, OperationQueue) (0) | 2023.08.16 |
RxSwift? 이거 하나로 종결 (전체 요약) (2) | 2023.08.09 |
Coordinator 패턴 (1) | 2023.08.09 |
Comments