본문 바로가기
개발 블로그/아이폰개발

[iOS Swift] Xcode Server를 이용한 CI(Continuous Integration) 설정하기 1편

by snapshot 2020. 7. 30.

iOS 자동배포를 위한 여러가지 서비스가 있다.

 

도대체 자동배포는 왜 필요할까..?

반복적인 배포 작업으로 인한 불필요한 시간 소비?

사실 개발을 하다보면 배포를 자주하지 않게 된다. 개발을 10분마다 커밋을 하는 경우도 드물고..QA 중이 아니라면야..

버그를 수정하고 직접 손으로 간단히 버튼 몇개를 눌러서 배포를 하는게 생각보다 어렵거나..오래 걸리거나..반복적이지도 않다고 생각한다. 

요약 : 생각 보다 귀찮지 않은 수동 배포

 

 

그런데..? 한명이 아닌 여러명이 개발을 같이 하게 된다면..?

그러면 이야기가 달라진다. 각자 컴퓨터의 개발 환경이 모두 다르고 사람이기에 실수로 다른 것을 배포할 수도 있고..

우리는 개발한 소스를 커밋을하고 다른 환경이 아닌 일관된 환경에서 빌드를하고 배포를 하는 시스템을 원하게 되었다. 

여러 CI 서비스 중에 iOS Xcode Server에서 제공하는 CI를 선택하게 되었다.

그냥 애플에서 서비스를 하고 인증서 관리도 편하기에 선택하였다. 다른 이유는 없다. 쉽게쉽게 하자.

요약 : 일관된 개발 환경에서의 빌드 및 배포

 

 

  • Xcode server 개발환경 설정
  • Xcode server + Slack 알림
  • 기타 설정

등으로 총 네개의 글로 나눌 것이다. 

 

 

영어 잘하시면 

help.apple.com/xcode/mac/current/#/dev399fc6efa

 

https://help.apple.com/xcode/mac/current/#/dev399fc6efa

To see this page, you must enable JavaScript. Pour afficher cette page, vous devez activer JavaScript. Zur Anzeige dieser Seite müssen Sie JavaScript aktivieren. このページを表示するには、JavaScript を有効にする必要があります。

help.apple.com

 

 

 

1. xcode server 설정을 하기 위해서 xcode 의 권한 설정 해준다.

 

사과모양 -> 시스템 환경 설정 -> 보안 및 개인 정보 보호 -> 개인 정보 보호 탭 -> 손쉬운 사용 -> xcode helper 체크

 

 

2. xcode server를 On 해준다

 

Xcode -> preferences -> Server & Bots 탭 -> On

 

유저 선택 -> Continue

 

Permissions 탭

이 탭에서는 All users를 할지..이건 알아서 설정

 

 

Xcode -> preferences -> Accounts -> + -> Xcode Server -> Continue

Xcode Server 추가

 

 

맥북의 user name 과 password 입력

 

이렇게 Xcode Server 가 생성된걸 볼 수 있다. 설명을 위해 새로 또 만든거라 이해 바람

 

 

 

Xcode -> preferences -> Source Control

누군가 push를 한 최신 소스를 빌드를 해야 하기 때문에 Xcode와 Git을 연결!!

 

 

Product -> Create Bot..

이제 봇을 만들어보자

 

 

 

만든 서버와 이름을 정한다.

 

 

Sign in 클릭

 

 

 

Git 계정을 연결해준다.

 

 

 

 

빌드시 환경인데..이건 이것저것 체크해보길..

주의 :  Test를 할 경우 밑에 디바이스 설정이 있는데 제발 꼭!! 모두가 아닌 지정을 해주길 바란다.

Test를 다 할경우 모든 디바이스 시뮬레이터를 빌드하기 때문에 한시간도 넘기 걸리기 때문에..

 

나는 IPA 파일을 얻기 위해서 Use Custom Export Options Plist를 선택하지만..일반적으로는 파란색을 하는듯..

Export Options Plist는 검색하면 여기저기 많지만..그냥 자신의 컴퓨터에서 아카이브하고 Ad Hoc으로 내보내면 그 폴더 안에 있으니 그거 활용하면 됨

 

>>>>>>>>>exportOptionsPlist에 대해서 알아보기..

 

 

 

 

시간으로 주기적으로 할지

커밋시 할지

아니면 수동을 할지..선택

 

 

그 다음이 이 부분인데..여기 설정들은 나중에 다 바꿀수 있지만..꼭!!!

구체적으로 테스트할 모델을 정해주길...저거 안 정하면 정말 1시간 넘게 걸림..

하지만 Test를 선택 안할 경우 저 화면은 나오지 않으니 안심!!

 

 

 

여기는 현재 프로젝트와의 인증서 연결

 

여기서 필요한 인증서와 프로비저닝 파일을 서버에 올려 준다. 

이 부분이 아마 다른 CI 서비스보다 편하기 때문에 Xcode Server를 사용하는게 아닌가 싶다. 

 

 

 

환경변수가 있으면 여기서 설정을 해주고

 

 

 

거의 대부분의 프로젝트는 Cocoapods를 사용할 것이다. 

그래서 Pods을 사용중이라면 Pre-Ingetration Script를 사용한다. 

#!/bin/sh
export LANG=en_US.UTF-8
export PATH=/usr/local/bin:$PATH

whoami

cd $(basename “${XCS_PRIMARY_REPO_DIR}“) #프로젝트가 설치된 폴더 경로

pwd

cd projectName #프로젝트가 있는 폴더명 - 직접 확인해야함

pwd

pod install --verbose

 

이렇게 설정을 해주면 된다.

프로젝트 폴더명 꼭 확인하길

만약 스크립트 fail이 날 경우..

 

 

빨간색을 에서 Logs를 선택하고

 

이렇게 선택을 하면 실패한 로그를 볼 수 있다. 그걸 보고 직접 수정하면 된다.

 

수동으로 Integration을 하고 싶으면 노란색 클릭

봇을 선택하고 수동 Integrate 와 Edit로 설정을 봇 설정을 할 수 있다.

 

이건 인증서 에러가 났던 적이 있기 때문에..저런식으로 뭔가 문제인지 알려준다.

 

 

성공을 했다면 저런게 IPA 파일 또는 Archive 가 만들어진다.

 

실패 했어도 Archive 파일이 만들어지는데..그건 필요가 없다. 

 

 

다음편에서는 슬랙으로 완료가 됐을 때 메세지를 보내는 방법을 하겠다. 

 

 

이렇게 Xcode 서버를 웹으로 접근해서 파일을 직접 다운로드 받을 수 있다.

그래서 회사에 남는 맥미니나 맥이 있다면 거기서 Xcode Server 설정을 해주고 완료시 링크를 공유 받아서 자신의 컴퓨터에서 테스트 파일을 배포 또는 관리 할 수 있다. 

 

마치며..

 

Xcode Server를 이용한 CI는 애플이 직접 제공해주었기 때문에 인증서 관리가 편하고 간단하게 설정을하면 배포 서버가 만들어주어 편하다.

다른 CI 서비스는 자동으로 appstore에 까지 업로드를 해주고 아니면 firebase의 Distribution까지 배포를 해준다고 하는데..이건 좀 더 알아봐야겠지만..이 정도 배포 시스템에서도 충분히 불편하지 않은거 같다. 

무조건 추천이다. 

댓글