CI(Continuous Integration), CD(Continuous Delivery, Continuous Deployment)
https://trunkbaseddevelopment.com/
CI는 빌드, 테스트의 자동화, CD는 배포의 자동화라고 할 수 있다.
CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미하고, CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미한다.
CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포.
지속적인 배포(Continuous Deployment)는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공(Continuous Delivery)이 가진 장점을 활용한다.
CI는 개발자들이 협업하여 일할 수 있도록 하기 위해 당연히 필요한 과정이고, 대부분 어떤 방식이냐의 차이가 있겠으나 적용되고 있을 것이다. 그리고 업데이트가 자주 필요한 프로덕트일 수록 CD가 중요해지는 것 같다.
CI/CD 도입과 실질적 적용의 범위에 대한 의견을 들어보았는데, 편리함과 안전함 사이에서 균형을 찾아야 하는 것 같다.
예를 들어, 완전히 자동화된 경우에 오류가 있는 또는 오류가 아니더라도 정책상 잘못된 코드가 바로 사용자에게 배포될 수 있다는 것이다.
물론, CI는 빌드 뿐 아니라 테스트의 자동화도 포함한 것이기 때문에 테스트를 거쳤겠지만, 그럼에도 불구하고 수동으로 배포 시점을 결정하는 것이 안전할 때가 많다.
그래서 현재는 절충한 방안으로, 최소한 배포는 수동으로 개발자가 제어하도록 하였다.
프론트엔드에서의 테스트는 적용하기 어려울 때가 많고, 또 적용함으로써 얻는 이득이 적은 편이라고 한다. 현재 프론트엔드 작업을 하면서 테스트 코드가 거의 없는 상황인데, 테스트에 대해 더 공부해봐야할 것 같다.
어떤 web hook을 사용하여, GitHub에 PR이 올라왔을때 자동으로 빌드하고 테스트하여 배포하는 등의 작업까지 만들 수 있지만, 현재로서는 수동으로 커맨드를 입력하여 배포를 하고 있다.
fastlane을 사용하여 빌드 및 ipa 파일 추출, 테스트용 배포 및 test flight 업로드를 자동화하였다. fastlane을 사용하면, 여러 가지 자동화의 장점을 누릴 수 있다.
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
원래 목표는 '시리야, 빌드 해줘' 까지 구현하는 것이 목표였는데, 현재 회사에 빌드 전용 서버가 없기 때문에 localhost로만 Jenkins를 동작하고 있어서 아직 구현하지 못했다.
'1 - iOS' 카테고리의 다른 글
[iOS/Swift] Amplitude를 이용한 사용자 행동 이벤트 로깅 (0) | 2022.08.12 |
---|---|
[iOS/Swift] 에러 처리 방법, do-catch 구문, defer 구문 등 (0) | 2022.08.12 |
[iOS/Swift] Firebase App Distribution 으로 Test를 위한 배포 with fastlane (0) | 2022.07.29 |
[iOS/Swift] Jenkins 설정하기 (0) | 2022.07.25 |
[iOS/Swift] fastlane을 이용하여 Test Flight upload 하기 (0) | 2022.07.22 |