본문 바로가기
개발/swift

fastlane을 적용하여 팀원간 인증서 동기화 하기

by 꼬마상어 2018. 5. 29.
반응형

왜 이것이 필요할까요?

"나는 되는데 왜 너는 안되지?"

iOS 개발자에게는 꽤나 복잡한 문제가 아닐까 싶습니다. 프로비저닝 프로파일이며, 인증서며, 맥장비가 늘어갈수록 셋팅해주는 것만으로도 진이 빠지곤 하죠.. 이런것들을 해결하기위해 match는 꽤나 좋은 툴입니다. 간단히 설명하자면 우리가 하나의 소스코드를 수정하기 위해 git이라는 툴로 관리를 하는 것과 같이 인증서또한 git으로 관리하자는 것이죠. 팀원간에 일치하지 않는 개발환경은 혼란을 야기시킬 수 있습니다.

Easily sync your certificates and profiles across your team using git

공홈에서는 저렇게 match를 설명하고 있는데요. 저 문장이 match의 모든 것을 말해주는 것 같네요 ㅎㅎ 당신의 팀사이에서 당신의 인증서와 프로파일을 깃으로 동기화 시킬수 있는 가장 쉬운 방법!

공홈 : https://docs.fastlane.tools/actions/match/#nuke

튜토리얼

일단 인증서를 담을 private git 프로젝트(레포지토리)를 생성합니다. 저는 테스트를 위해 MatchCert2라고 이름 지었습니다. http://office.com/jiyeonpark/MatchCert2

그리고 새로운 애플 계정을 만들어 팀원으로 넣어둡니다. 예를들어 office@office.com 같이 말이죠. 아래 그림과 같이 서로 깃을 통해서 인증서를 공유하는데, 이때 마스터 계정을 통해 한명이 인증서를 관리한다고 생각하시면 될 것같아요. (이건 공홈에서는 옵셔널이라고 써놓았지만, 저는 이 방법을 추천합니다.)

그리고 match를 위한 이니셜라이징을 합니다.

fastlane match init

그럼 쭉쭉 실행되다가 어느순간에 git url을 물어볼텐데요. 저희는 비공개로 설정해두었기 때문에 url을 다음과 같은 형식으로 넘깁니다.

https://아이디:패스워드@깃허브주소.git

그럼 이렇게 작성된 정보들(git url, apple id...)은 프로젝트 내에 Matchfile에 저장됩니다. 만약 잘못 git url을 작성하였다면 저 파일을 수정하시면 됩니다 ㅎㅎ

Matchfile 내용

git_url "https://github.com/fastlane/certs"

app_identifier "tools.fastlane.app" #여기에는 번들 아이디를 입력해주세요
username "user@fastlane.tools" #여기에는 애플 아이디를 입력해주세요

이제 git의 기초 작업은 모두 끝났습니다.

그리고 이제 앱스토어 용 인증서 및 프로파일을 발급받아 git에 올려볼껀데요. 처음에 match를 실행하기 전에 기존의 인증서를 지우는 작업을 해야합니다. 이것 또한 필수 사항은 아니지만, 추천합니다. match는 절대 인증서를 삭제하지 않기때문에, 기존 인증서가 있는 상태에서 작업을 하면 인증서가 쌓여만가는 구조가 될 것입니다. 그럼 기존꺼와 섞여 더 혼잡해지겠죠..? 그리고, development 인증서같은 경우에는 맥시멈으로 만들수 있는 갯수가 정해져 있기 때문에, 갯수가 다 차서 만들지 못한다는 에러를 언젠가는 만나게 될 것입니다.

fastlane match nuke development
fastlane match nuke distribution

이 커맨드를 실행하면 app identifier 구분하지 않고 development, distribution을 인증서, 프로파일을 삭제합니다. 단, 푸시 인증서는 삭제하지 않습니다! 걱정마세요 :)

그리고 이제 비워진 상태에서 앱스토어용, 개발용, 애드훅용으로 인증서를 만들어봅시다!

fastlane match appstore
fastlane match development
fastlane match adhoc

이 커맨드들은 해당 목적에 맞는 새로운 인증서와 프로파일을 생성하고, git repo에 저장합니다.

저 커맨드들 중 하나를 실행할 때, Passphrase을 입력하라고 요구할 것입니다. Password라 하지 않고 왜 Passphrase라 하는지 모르겠지만.. 저건 일단 비밀번호를 입력하라는 건데요. git repository는 private로 설정해 두어도 접근이 가능하기 때문에 인증서 openssl방식으로 암호화 하여 git에 push 합니다. 이 암호화를 진행할 때 필요한 private 패스워드라고 생각하시면 됩니다. 한번 입력하면 해당 로컬 pc에서는 키체인에 저장되어 다시 입력하지 않아도 됩니다.

이제 마스터 계정으로 작업하는 부분은 모두 끝났습니다. 새로운 인증서가 생성되거나, 디바이스가 추가되어 프로비저닝 프로파일을 갱신해야할때만 마스터가 수고해주면 됩니다.

 

이제 팀원들이 새로 영입될때, fastlane match development --readonly 로 실행하여 셋팅을 할 수 있습니다.

이외에도 텍스트 파일, 엑셀파일로 디바이스 관리하기,여러 타겟에 관하여 인증서 관리하기를 수행할 수 있습니다. 자세한 사항은 공식 홈페이지를 참고해주세요!

QNA

테스트 계정으로 진행하기 전에 있었던 의문점들을 나열해 봅시다.

Q : 출시된 앱의 인증서를 폐기해도 됩니까? A : 네! 이미 출시된 앱(상용 앱)은 인증서를 폐기해도 아무런 일도 일어나지 않습니다!

반응형

댓글