티스토리 뷰
안녕하세요 오늘은 CD/CI 자동화 도구인 Fastlane에 대해 알아보려고 합니다.
우선 시작하기 앞서 CD/CI에 대해 알아보려고 합니다.
✅ CD/CI 란?
CD/CI는 소프트웨어를 개발하고 배포하는 과정을 자동화 하기 위한 개발 문화이자 방법론입니다.
프로젝트가 커질수록 여러 개발자들이 동시에 개발을 진행하고, 버그를 수정하고, 배포를 진행하게 됩니다.
이 과정에서 테스트, 빌드, 배포를 모두 수동으로 진행하게 된다면 시간이 오래 걸릴 뿐 아니라 실수도 빈번하게 발생하게 됩니다.
CD/CI는 이러한 반복 작업을 자동화하여 빠르고 안정적인 배포환경을 구축하는 것을 목표로 합니다.
용어에 대한 개념을 더 자세히 알아보면 아래와 같습니다.
- CD(Continuous Delivery or Continuous Deployment): 검증된 코드를 자동으로 배포 가능한 상태로 만들거나 실제 서비스까지 배포하는 과정.
- CI(Continuous integration, 지속적 통합): 여러 개발자가 작성한 코드를 병합하고 병합시마다 자동으로 빌드와 테스트를 진행하는 과정.
그럼 우리는 왜 이 과정에 대한 자동화를 필요로 할까요?
개발자가 하나의 기능을 개발했다고 가정해봅시다. 이를 배포하기까지 개발자가 거쳐야 하는 작업 들은 아래와 같습니다.
Git에 코드 Push -> 프로젝트 Build -> Unit Test 진행 -> UI Test 진행 -> Archive 생성 ->
Build Number 증가 -> TestFlight 업로드 -> QA 전달 -> Slack 배포 알림
하지만 배포가 자주 이루어지는 경우 이 과정들 사이에 휴먼 에러가 발생할 수 있습니다.
CI는 개발자가 작성한 코드를 지속적으로 통합하는 과정입니다.
만약 5명의 개발자가 각자 서로 다른 기능을 개발한다고 가정해보겠습니다.
일주일간 각자 Feature 브랜치 하위에 브랜치를 생성하여 개발을 진행합니다.
이후 개발이 완료되면 PR을 생성하여 올립니다.
그러면 리뷰어가 이를 확인하며 로직, 버그 등을 확인하며 테스트 과정을 거치게 되죠.
이렇게 리뷰가 끝난 코드는 Main 또는 Developer 브랜치에 Merge 되게 되며 이후 통합 브랜치는 다시 테스트를 거치게 됩니다.
그리고 iOS 라면 위에 이미 설명한 과정들을 거치게 되죠.
이 과정에서 서로의 코드가 충돌할 수 있고 버그가 발생할 확률은 다분합니다.
따라서 CI에서는 Merge를 자주 진행하고 Merge 시마다 프로젝트 검증을 진행합니다.
과정은 아래와 같습니다.
Git push -> Github Actions 실행 -> 프로젝트 Build -> Unit Test -> Lint -> 성공 시 Merge
CI 가 코드를 검증하는 단계라면 CD는 검증된 코드를 실제 사용자에게 전달하는 과정입니다.
CD는 두가지 의미로 사용됩니다.
1. Continuous Delivery
이 방법은 제일 일반적인 방법으로 배포 가능 상태까지 자동으로 준비하지만 실제 배포는 개발자가 결정합니다.
Build -> Archive -> TestFlight Upload -> 수동으로 Release
2. Continuous Deployment
모든 테스트를 통과하는 경우 자동으로 서비스 배포가 이루어집니다.
Push -> Build -> Test -> Deploy -> 서비스 반영
iOS에서는 App Store 심사가 필수이므로 이 방법은 사용하기 어렵습니다.
✅ Fastlane이란?
Fastlane이란 iOS/Android 앱의 빌드, 테스트, 배포를 자동화하는 오픈소스 도구입니다.
특히 iOS에서 반복적으로 수행하는 Xcode 작업을 스크립트로 만들어 한번의 명령으로 실행할 수 있도록 만들어줍니다.
iOS 앱을 배포할 때 일반적으로 다음과 같은 작업을 수행합니다.
버전 변경 -> Build Number 증가 -> 코드 서명(Code Signing) -> Archive 생성 -> Test 실행 ->
App Store Connect 업로드 -> TestFlight 배포 -> Slack 알림
이 과정을 매번 Xcode에서 직접 수행하면 시간이 오래 걸리고 실수가 발생하기 쉽습니다.
Fastlane은 이 과정을 하나의 명령으로 자동화합니다.
fastlane beta
이 명령으로 테스트 실행, Build Number 증가, Archive 생성, TestFlight 업로드, Slack 알림 을 한번에 수행할 수 있습니다.
Fastlane의 장단점
'Swift' 카테고리의 다른 글
| 앨범 만들기 1편 - 앨범에 접근하여 사진 가져오기 (0) | 2025.11.03 |
|---|---|
| Swift - Opaque Type 이란? (1) | 2024.10.17 |
| Swift - private(set) 이란? (0) | 2024.09.19 |
| Swift - CoreData란? (0) | 2024.07.12 |
| Swift - Swift의 관점에서 Thread 이해하기(1) (0) | 2024.07.08 |
- Total
- Today
- Yesterday
- 인공신경망
- kakaomapssdk
- Algorithm
- 스위프트
- CD/CI
- BoxedType
- 코어데이터
- Concurrency
- nonisolated
- tuist v4
- opaquetype
- coredata
- opaque
- Xcode
- swift
- 역전파
- SwiftUI
- iphone
- 동시성
- SocialLogin
- webrtc
- ios
- AI
- GradientDescent
- Actor
- 알고리즘
- 경사하강법
- ViewBuilder
- CacheLocality
- Tuist
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
