개인적으로 Xcode 9의 여러 가지 새로운 기능 중 Wireless Development 다음으로 반가운 것은 Xcode Server가 Xcode에 통합되었다는 것입니다. 이전까지는 macOS 서버를 별도로 설치하고 Xcode를 구성하는 과정이 필요했지만 이제는 Xcode 설정에서 몇 번의 클릭만으로 Xcode Server를 구성할 수 있습니다.

CI를 사용하고 있다면 대부분 Xcode Server 보다는 TravisCI와 같은 서비스를 사용하고 있을 것입니다. 이러한 서비스들은 많은 장점을 가지고 있지만 인증서/프로파일을 구성하는 과정이 어렵고 이 과정에서 발생하는 오류는 스트레스의 원인이 되기도 합니다. 그리고 스크립트와 터미널 명령어를 통해 처리해야 하는 부분이 많은 점도 단점으로 볼 수 있습니다.

Xcode 9의 CI는 크게 네 가지 장점을 가지고 있습니다.

- 별도의 프로그램을 설치하거나 상용 서비스를 사용할 필요가 없습니다.
- 인증서/프로파일과 관련된 골치 아픈 작업들을 대부분 자동으로 처리해 줍니다. Automatic Signing이 정상적으로 동작해 준다면
- 배포가능한 파일과 ITC에 제출할 아카이브 파일을 자동으로 생성해 줍니다.
- 병렬 테스팅을 지원합니다.

이 외에도 기존에 제공하던 이메일 알림, 스트립트 실행, Bot Website 등의 기능도 모두 제공됩니다. 

그럼 Xcode Server 구성하는 과정을 간략히 살펴 보겠습니다.

Xcode Preferences 화면을 보면 Server & Bots라는 새로운 탭이 추가되어 있습니다. Xcode Server는 기본적으로 비활성화 된 상태입니다. 오른쪽에 있는 스위치를 클릭하면 구성 작업이 시작됩니다. 

CI에 사용할 계정을 선택한 후 Continue 버튼을 클릭하면 구성 작업이 시작됩니다.

몇 분 정도 기다리면 구성 작업이 완료됩니다. 스크린샷 처럼 초록색 원이 표시되고 스위치가 ON으로 표시된다면 문제없이 완료된 것입니다. 화면에 있는 Settings, Permissions, Mail 탭을 통해 기본적인 설정을 변경할 수 있습니다.

Xcode 프로젝트에서 CI를 사용하려면 Bot을 생성해야 합니다. 그리고 Bot을 생성하려면 프로젝트가 소스 제어 하에 있어야 하고, Bot이 접근할 수 있는 원격 저장소가 구성되어 있어야 합니다. 원격 저장소가 구성되어 있다고 가정하고 Bot을 생성하는 과정을 따라가 보겠습니다.

Product > Create Bot… 메뉴를 선택하면 Bot을 생성할 수 있는 화면이 표시됩니다. 이 화면에서는 Bot의 이름을 입력하고 대상 서버를 선택합니다. Xcode에 Xcode Server가 등록되어 있지 않다면 메뉴를 통해 쉽게 추가할 수 있습니다.

다음 화면에서는 Bot이 접근할 원격 저장소를 구성합니다. Xcode 프로젝트에서 원격 저장소를 이미 구성해 두었다면 바로 다음 화면으로 넘어 갑니다.

빌드 구성 화면에서는 Bot이 사용할 Scheme과 빌드 과정에서 수행할 동작을 지정할 수 있습니다.

이어서 Bot의 실행 주기를 설정합니다. Commit 후에 실행하거나 지정된 주기마다 반복적으로 실행할 수 있습니다.

테스트에 사용할 디바이스와 시뮬레이터를 선택합니다. 앞에서 언급한 것처럼 병렬 테스팅을 지원합니다. 다수의 시뮬레이터를 선택한다고 해서 선택된 시뮬레이터가 개별적으로 실행되는 것은 아닙니다. 그러므로 필요한 수만큼 얼마든지 선택해도 문제가 없습니다.

인증서와 프로파일은 Xcode가 자동으로 관리하도록 하는 것이 가장 편리합니다. Xcode와 개발자 계정을 연결해 두면 연관된 작업들이 자동으로 처리됩니다. 다만 최초 구성시점에는 Add Server to Team 메뉴를 통해 Xcode Server와 계정을 연결하는 작업이 필요합니다.

이어지는 화면에서는 빌드 과정에서 필요한 인자와 환경변수를 추가할 수 있습니다.

Bot은 Pre-Integration Scripts와 Post-Integration Scripts를 추가할 수 있고, 이메일 전송 규칙도 추가할 수 있습니다.

Bot 생성이 완료되면 자동으로 CI 작업이 시작됩니다. Bot과 관련된 모든 정보는 Report Navigator에서 확인할 수 있습니다.

CI 작업이 완료되면 작업 결과를 포함한 다양한 정보가 표시됩니다. 툴바 아래쪽에 있는 탭을 통해 상세 정보를 확인할 수 있고 Integrate 메뉴를 통해 CI 작업을 직접 시작하는 것도 가능합니다. 생성된 아카이브를 ITC로 업로드 하고 싶다면 Archive 항목 오른쪽에 있는 메뉴에서 Submit to App Store... 메뉴를 선택합니다. 아쉽게도 CI 작업이 완료된 후 자동으로 업로드 하는 기능은 제공되지 않습니다.

이전 버전과 마찬가지로 Bot Website를 통해 개요를 확인하고 파일을 다운로드 할 수 있습니다.

지금까지 Xcode 9의 CI와 Bot을 만드는 과정에 대해 간략히 설명했습니다. ITC 자동 업로드 기능까지 제공하기를 바란다면 욕심일까요??

이전 버전의 내용이 궁금하시다면? Xcode 5 Continuous Integration