2019년 5월 4일 토요일

Xcode Server 를 이용한 CI (Continuous Integration)

Xcode Sever 를 이용한 CI (Continuous Integration)


Xcode로 개발 하면서 bitbucket에 있는 repository에 프로젝트를 자동으로 내려 받아 빌드 하고 테스트 하는 CI를 설정 하고 사용 하는 방법을 기록으로 남겨 본다.

Xcode 서버 활성


Xcode 서버를 활성 시키려면
Xcode -> Preference -> Server & Bots















스위치를 켜기만 하면 끝이다.

이제 Account로 가서 Xcode Server를 추가 한다.




Bot 설정


이제 비트 버킷으로 관리 되는 프로젝트를 클론 하여 Xcode로  열어 본다.

cocoapod 을 이용하여 xcworkspace로 열려진 프로젝트의 경우
.xcworkspace는 git으로 관리 하지 않는 상황에서 Xcode Server가 스스로 pod install 및 .xcworkspace를 로드 하여 프로젝트를 빌드 하고 테스트 하는 방법을 기술 한다.

bitbucket으로 클론 하면 xcworkspace가 존재 하지 않는다.
.xcworkspace는 git으로 add 하지 않고 관리 하지 않기 때문이다.

# pod install을 수행한다.
# open projectname.xcworkspace 로 워크스페이스를 연다.

워크스페이스로 열고 Xcode bot을 설정 하는 이유는 단지 bitbucket 의 url을 자동으로 열기 위함이었다.

상관 없다.

Product->Create Bot 으로 봇을 생성 한다.













워크스페이스를 연 이유는 자동으로 bitbucket  설정 을 위해서 였다.







CI 스케줄을 정한다. 매시간 이 디폴트이다.




테스트를 하는 시뮬레이터 및 디바이스를 선택 하는 단계 모든 디바이스와 모든 시뮬레이터를 설정 할 경우 Xcode Server가 빌드하고 테스트 하는동안 수많은 시뮬레이터 와 CPU 점유을 맥머신에 이륙 소리를 만날 것이다. 특정된 모델만 선택 하는 것을 강추 한다.







인증 서 단계등을 완료 하고 나면 봇이 생성 된다.

봇이 완료되면 바로 integration을 수행하는데 100% 실패 한다.

이유는 cocoa pod 프로젝트 그리고 .xcworkspace를 bitbucket에 pull 하지 않았기 때문에 빌드 과정에서 에러가 발생 한다.  projectname.xcworkspace 파일이 없기 때문에 실패 하는 것이다.




상단에 Edit bot을 클릭 한다.
맨 오른쪽 Trigger를 선택 한다.
하단 + 버튼을 클릭 하여

pre-integration script를 생성 한다.

#!/bin/sh
cd "${XCS_PRIMARY_REPO_DIR}/projectname"
pwd
/usr/local/bin/pod install

위와 같은 스크립트를 생성한다.

Xcode Server bot 이 프로젝트를 클론 해온다음
스크립트가 pod install을 수행하여 모든 pod 라이브러리를 내려 받아 놓고
생성된 .xcworkspace를 로드하여 빌드 및 테스트를 진행 한다.

unit test, ui test를 프로젝트에 등록 해두었으면 자동으로 빌드 및 테스트 까지 수행 하여 Xcode bot이 리포팅 해준다.

댓글 없음: