[iOS] CI/CD 가 뭔데..?

또상·2022년 2월 9일
1

iOS

목록 보기
9/42

배경

CI/CD 라는게 있고, 배포 자동화를 한다는 것은 알고 있었지만, 여태 앱스토어에 앱을 배포해 본 경험은 없었기 때문에 딱히 CI/CD 의 필요성을 느끼진 못했다.

그런데 급박하게 내가 배포를 하는 상황이 오면서 여러 절차를 하나하나 알아내서 파일 뽑고 클릭하고 하는 과정을 경험해보니 CI/CD 의 필요성을 느끼게 되었다.


CI/CD

처음 약어 풀이만 보고는 배포는 이해가 가는데 통합...? 통합??? 이런 기분이었다. 설명을 잘 읽어보니 이해가 됐다.

CI

Continuous Integration 지속적 통합

  • 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 -> 공유 레포지토리에 통합 -> 충돌⬇️
  • 보통 master / dev 브랜치에 푸시가 되는 경우에 WebHook 으로 잡아서 해당 코드를 빌드, 테스트 하고 레포지토리에 통합하는 식으로 구현한다. 빌드, 테스트 결과를 Slack 에 메시지로 다시 공유해준다.
  • iOS 에서는 UnitTest 를 사용.

CD

Continuous Delivery 지속적 서비스 제공 / 배포

  • 레포지토리에 있는 코드를 자동으로 release 하고, 앱스토어에까지 배포하는 것
  • 이 단계에서도 테스트를 거침.

필요성

  • 배포 과정을 직접하기 귀찮음, 시간 절약
  • 빌드 환경, 배포 환경을 통일하여 환경적인 문제나, 개인이 배포 과정에서 실수해서 생기는 문제가 없음



CI/CD 기능을 제공하는 여러 툴(Jenkins, Bitrise, GitLab CI, GitHub CI ...)이 있지만, iOS 에서는 fastlane 을 많이 이용한다. 하지만 보안툴 적용이나 여러 과정을 거쳐야하는데, 다들 하고 있으니까 되겠지? 이지만 아직 완벽히는 모르겠다.

개인적으로는 시리로 배포하는게 간지나보여서 Jenkins를 꼭 써보고 싶다.

또, 빌드 test 의 경우는 넣으려면 모든 테스트 케이스를 만들어야해서 아직 한참 이르지만... 이 과정도 궁금하다.


[출처]
이미지 출처 - Tatiyana S

profile
0년차 iOS 개발자입니다.

0개의 댓글