[iOS] Dev, Prod 환경 분리 그리고 CI/CD (1)

Zoe·2024년 1월 15일
0

iOS

목록 보기
39/39
post-thumbnail

Dev, Prod 환경을 분리하는 방법을 알아보자.

현재까지는 Scheme을 분리해서 Dev/Prod를 분리한 상태(debug, release 이용)였는데, 앞으로는 개발앱과 운영앱을 완벽히 분리할 필요성이 있기 때문에 환경 자체를 분리하고자 한다.

🌟 현재 상태

  1. Scheme -> Dev/Prod
  2. 전처리문으로 Dev/Prod 분리

🌟 현재 상태의 문제점

  1. TestFlight에서 테스트할 때 개발앱과 운영앱의 타겟이 동일하여 테스트의 불편함 존재
  2. Ver2에 대한 개발 사항이 운영앱에 연결될 가능성 존재

🌟 해결 방법

Dev App, Prod App 환경 분리
브랜치 전략 수립
Jenkins 도입

그리고... 사실 그동안은 iOS를 1인 개발로 진행하고 있었기 때문에 브랜치 관리에 대해 신경쓰지 않았는데, 이후엔 개발 브랜치와 운영 브랜치를 분리해서 배포해야 하기 때문에 브랜치 관리도 도입해야 한다.

브랜치 전략 목표는 다음과 같다.
1. main : 실 서비스
2. develop : 개발앱 배포 시 사용
3. release : 배포 브랜치. 버그 수정만.
4. feature : 브랜치 하나 당 기능 1개
5. hotfix : 급하게 수정되어야 하는 이슈. 버그/기능. main에서 바로 따서 짧게 수정.

그리고 현재는 fastlane을 통해 프로덕트 자동 배포를 진행하고 있었는데, iOS 빌드 환경을 미리 셋업하고, 자동화를 위해 Jenkins를 도입해보기로 했다.


[최종 설계]

차근차근 진행해보자.🍀

1. 환경 분리

Xcode내부에서 환경을 분리하는 일련의 과정은 다음과 같다.

  • build setting에서 asset 세팅
  • build setting에서 packaging -> Product Bundle Indeifier 세팅
  • BUNDLE_ID_SUFFIX 추가 후 세팅
  • build setting에서 bundle display name 세팅

그리고 스킴을 추가해서 각 스킴에서 진행할 모드 세팅

2. Jenkins 설정

CI

jenkins 설정하느라 많은 시간을 보냈다. 일단 jenkins는 설치되었다고 가정하자.

jenkins를 터미널에서 실행시킨 후,

새로운 item을 생성한다.

develop과 main 에 pr이 올라오면 ci가 진행되는 걸로 trigger를 설정했다.

그리고 pr comments에 trigger를 설정해서 fastlane을 통해 cd 를 진행하는 걸로 구성했다.

테스트와 함께 자세한 설정은 다음 시간에...

profile
iOS 개발자😺

0개의 댓글

관련 채용 정보