티스토리 뷰
CI/CD
CI 와 CD 는 여러 DevOps 단계를 아우르는 포괄적인 용어입니다. CI 는 지속적 통합으로써 하루에도 여러 차례 발생하는 코드 변경 사항을 저장소에 통합하는 방식입니다. CD 는 지속적 제공을 통해 코드 통합을 자동화하거나 지속적 배포를 통해 최종 빌드를 최종 사용자에게 자동으로 릴리즈한다는 두 가지 의미가 있습니다.
CI/CD 에서 수행되는 테스트로 코드 오류와 결함을 줄일 수 있습니다.
CI(Continous Intergration)
지속적인 통합이라는 뜻입니다. 하루에도 여러 차례 발생하는 코드 변경 사항을 레포지토리에 머지 되는 것을 의미합니다. 이때 발생하는 문제는 머지할 때마다 발생하는 충돌에 대해서 신경을 써야 하는 것입니다. 이러한 과정을 자동화하면 개발자는 빌드와 테스트 없이도 수정한 코드를 머지하기만 하면 코드를 검증할 수 있게 됩니다. 이를 통해 배포 전에 우리는 버그를 빠르게 찾을 수 있고, 코드의 품질을 유지할 수 있게 됩니다.
CD(Continuous Deployment 혹은 Continuous Delivery)
Continuos Deployment(지속적인 배포), Continuous Delivery(지속적인 제공)을 의미합니다.
지속적인 배포는 빌드되고 테스트 된 후 배포 단계를 자동화하여 수동적인 개입 없이 프로덕션의 자동적인 배포를 의미합니다. 이 방법을 통해서 개발자는 사용자에게 품질 저하 없이 빠르게 서비스를 제공할 수 있습니다.
지속적인 제공은 지속적인 배포와 동일하지만 배포를 수동적으로한다는 점에서 다릅니다.
정리하자면 CI 는 코드의 빌드, 테스트, 병합까지를 의미합니다. CD 는 레포지토리를 넘어 고객의 프로덕션 환경까지 릴리즈되는 것을 의미합니다.
CI/CD 를 적용하는 것은 다양하게 적용이 가능하기 때문에 위에서 언급한 병합, 머지 등의 과정을 푸시를 통한 트리거되는 과정으로 보아도 무방할 것 같습니다. 예를 들어 중간에 PR 을 추가하는 등의 과정이 존재할 수 있는 것처럼 말입니다.
그렇다면 왜 해야할까요?
앱을 배포했다는 가정하에 버그를 발견했어요! 어떻게 대응해야 할까요?
수정을 거쳐서 컴파일, 빌드, 테스트를 거쳐서 레포지토리에 올려야 합니다. iOS 앱에 대해서는 앱을 우선 아카이브를 한 뒤 App Connect에 업로드하고 테스트 플라이트 혹은 배포까지의 과정이 모두 자동이 아닌 클릭을 통해서 이루어지고 있어요! 물론 실수 없이 모두 한 번에 통과한다면 말이죠!
이러한 반복 작업을 없애주는 것이 바로 CI/CD 를 하는 이유입니다.
iOS 에서는 CI/CD 를 위해서 GitAction, fastlane, zenkins, bitrise 등이 있습니다. 그 중 요즘 핫한 fastlane 을 사용해서 CI/CD 를 진행해 보려고 합니다.
참고:
'ProjectSetting' 카테고리의 다른 글
ProjectSetting) git forking workflow 적용 (0) | 2022.01.08 |
---|---|
ProjectSetting) Swift Package Manager 를 사용해보자 (0) | 2021.08.27 |
ProjectSetting) Info.plist 경로 변경 시 에러 해결" (2) | 2021.08.26 |
ProjectSetting) 프로젝트에 SwiftLint 를 적용해보자 (2) | 2021.08.09 |
ProjectSetting) iOS 프로젝트 폴더링 (2) | 2021.08.09 |
- WWDC
- OpenSourceLibrary
- rxswift
- IOS
- UserDefaults
- WidgetKit
- CloneCoding
- RxCocoa
- 2022 KAKAO TECH INTERNSHIP
- WWDC22
- Objective-C
- SwiftUI
- watchOS
- 서버통신
- configurable widget
- YPImagePicker
- Notification
- Algorithm
- github
- Protocol
- MOYA
- containerBackground
- APNS
- async/await
- Firebase
- Widget
- MVVM
- Swift
- urlsession
- projectsetting
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday