ref : bitrise 홈페이지, 패스트 캠퍼스
앱스토어에 앱을 배포하는 과정에서는 앱 빌드, 앱 테스트, 앱 배포 등의 과정이 필요하다. 유저의 피드백을 반영하거나, 버그를 수정하거나, 코드를 리팩토링하거나, 기능을 추가하는 등의 이유로 앱을 꾸준히 업데이트 해야 할거다.
업데이트 할 때마다 빌드, 테스트, 배포 과정을 계속 반복해야 하는데, 이 과정을 자동화 한다면 편리 할 것이다. 이런 자동화 과정을 CI / CD 라고 한다.
CI : Continuous Integration - 지속적 통합, 빌드
CD : Continuous Deploy - 지속적 배포
대표적인 CD / CD 툴 중 하나로 Bitrise가 있다. 첫번째 하나의 앱만 등록할 때는 무료로 사용할 수 있다.
1. Bitrise 회원가입. github 로 회원가입 할 수 있다.
2. 앱 workspace 생성
3. 설정에서 Apple, Github 연동
Apple Service Connect 를 위해서는 API key authentication 가 필요하다. Creating API Keys for App Store Connect API 공식 문서 :
https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api앱 스토어 커넥트 API Key 발급에 대한 글을 정리했다.
https://velog.io/@heyksw/iOS-App-Store-Connect-API-키-생성
- Add New App on web UI
- Github Repository 선택
- 필요한 설정 이후 Configuration complete 확인
- Bitrise 가 자동으로 iOS 앱으로 인식을 해서 Workshit path, Scheme name 을 생성해줬다. MANUAL 로 수동 설정하면 까다롭다. expoty method 는 development 로 설정하고 confirm 한다.
- 앱 아이콘 설정
- 설정을 마친 후, 빌드 확인
일단 Webhook 은 사용하지 않았다. 설정을 마친 뒤 kicked off 를 클릭하면 빌드를 확인할 수 있다.
- 가상의 mac 머신에서 빌드가 실행된다.
- 스크롤을 내리면서 log 를 확인해 볼 수 있다.
ssh-key 활성화
가상 머신에 git-clone, cache pull. 근데 첫 빌드라 남아있는 캐쉬가 있진 않음.
Bitrise 에서 자동으로 테스트 코드를 실행한 모습. Unit Test Code 중에서는 다행히 테스트 실패하는 코드가 없다.
UI Test Code 는 난리가 났다 ㅋㅋ 절반이 테스트를 실패한다.
테스트가 실패했기 때문에 빨갛게 Failed 라고 뜨는데 기분이 나빴다..
자동화 환경설정 단계
1. Xcode Project 의 Unit Test 가 실행되는 Workflow 생성
2. 새로운 Commit이 Push되면 자동으로 Unit Test Workflow 가 실행되도록 설정
3. Xcode Project 가 빌드되고 테스트가 실행될 macOS, Simulator 환경 설정
[ 1단계 ]
Dashboard - app - Team 클릭
아래로 스크롤 내려서 authentication 연결 후 Test the Connection.
그 다음 workflow 로 들어가서 확인. 디폴트 workflow 를 살펴보면,
active ssh key : 깃허브 연결
git clone repository : 가상 머신에 클론
birtise cache pull : 이전에 빌드했던 캐쉬가 있다면 가져옴
run cocoapods install : 코코아팟 설치
xcode test for ios : xcode test 실행따라서, 내가 원하는 workflow 를 새롭게 설정할 것이 아니라면 default 값 그대로 가져가면 된다.
[ 2 단계 ]
Triggers 로 들어가서 확인. Trigger : 어떤 조건에서 workflow 를 실행할 것인지. 확인해보면 push branch * (모든 branch) 에서 primary workflow 가 실행되는 것을 확인할 수 있다. 아까 확인한 default workflow 가 primary workflow 였다. ( 무료 버전에서는 Trigger 를 다중 생성 못한다 )
따라서, Triggers 도 default 값 그대로 사용해준다.
[ 3 단계 ]
Stacks & Machines 에 들어가서 Xcode 버전 설정. 개발하는 Xcode 버전과 일치하게 설정.
-> 환경설정 완료
Start Build 로 CI 시작.
아래는 코드 수정 후, 테스트와 빌드에 성공한 모습