
지난 글의 프로세스를 잘 따라왔다면 커맨드로 Android, iOS 앱의 빌드, Firebase에 업로드, 슬랙에 자동 메시지까지 처리할 수 있을 것이다.
이 글에서는 iOS 인증서 관리 방법과 연관된 fastlane match
에 대해 작성해보려고 한다.
1. fastlane match란?
Info
인증서를 Git으로 버전 관리하고, 팀 전체가 똑같은 인증서를 자동으로 공유/사용할 수 있게 해주는 도구
간단하고 명료하게 위와 같이 한 줄로 요약할 수 있다.
회사별로 혹은 팀별로 iOS 인증서 관리에 대한 부분은 다 다를 거라고 예상된다.
그것을 단일화 해주는 것... 그게 바로 fastlane match
이다.
이전에는 어떻게 인증서를 관리했냐면,
- 개발 인증서는 각자 개인으로 만들어서 사용했다.
- 팀원이 n명이면 계속 늘어나는 구조이고 invalid 되거나 여러 경우에 대해 관리되지 않았다.
- 배포 인증서는 생성 갯수의 제한이 있어서 만들어 놓고 p12 파일로 묶어서 팀원이 같은 배포인증서를 공유해서 사용했다.
- 푸시 인증서는 p8의 등장 이후로 관리에 대한 개념이 흐릿해져서 패스해도 될 거 같다.
- 앱 프로비저닝은 git에 올려놓고 수동으로 매칭하거나, Xcode에서 자동 매칭을 사용했다.
fastlane match
를 사용하면 어떻게 바뀌냐면,
- Git 레파지토리에서 인증서가 관리되므로 모든 팀원은 같은 인증서를 사용할 수 있다.
- 최초 설정 이후로는 커맨드로 매칭만 하면 되므로 인증서 갱신 외에는 별도의 관리가 필요 없다.
- 프로젝트에서 인증서 삭제, 생성이 용이하다.
2. fastlane match 설정
2-1. git 레파지토리 생성하기
Git
에서 인증서가 관리된다고 했으니 인증서가 업로드될 저장소가 필요하다.
나의 경우엔 회사에서 GitLab을 쓰고 있으므로 GitLab에 레파지토리를 생성하였다.
생성 후엔 연동을 위해 git remote url
을 갖고 있으면 된다.
2-2. faslane match 초기화
fastlane match init
iOS 프로젝트의 root 경로에서 명령어를 입력하면 어떤 저장소를 사용할 것인지 묻는다. (git, google cloud, s3)
이 글에선 git 기준이므로 git으로 설정하면 된다.
그러면 원격 저장소 주소를 물어보는데 2-1에서 생성했던 레파지토리 url을 입력해 주면 된다.
이 과정을 마치면 fastlane 하위에 Matchfile
이 생기는 걸 볼 수 있다.
git_url({GIT_REMOTE_URL})
storage_mode("git")
app_identifier([{BUNDLE_ID}])
username({APPLE_ID})
불필요한 내용을 빼면 파일은 대략 이런 내용을 확인할 수 있다.
git_url
fastlane match init 하면서 입력한 remote url이 기입되어 있을 것이다.app_identifier
프로젝트에 관리할 bundle id를 입력하면 된다.- 개발앱, 스테이징앱, 운영앱 등 앱이 n개인 경우 배열 안에 쉼표로 구분하여 추가해 주면 된다.
username
애플 개발자 계정을 넣으면 된다.
이후 과정을 진행할 때 터미널에서 계정 로그인을 진행할 것이다.
2-3. 개발 인증서 파기와 생성
이제 fastlane match를 통해 인증서를 관리할 것이므로 기존 인증서는 제거해 준다. (선택 사항)
fastlane match nuke development
정상적으로 진행됐다면 인증서가 모두 삭제되었다는 문구를 확인할 수 있고 애플 개발자 계정에서도 확인해 보면 지워진 것이 확인 가능하다.
fastlane match development
마찬가지로 정상적으로 진행됐다면 2-2의 app_identifier
항목에 기입한 bundle id를 대상으로 개발 인증서를 자동으로 생성해 준다.

그리고 연동해 놓은 레파지토리에 생성한 인증서가 자동으로 업로드되어 관리된다.
2-4. 배포 인증서 파기와 생성
위 2-3과 프로세스가 같다. 다만 주의해야 할 점은 기배포된 Adhoc 혹은 Enterprise 앱이 있는 경우 앱 사용이 불가능해지니 삭제 과정은 스킵하거나 새로 만든 배포 인증서로 배포하는 등 과정이 필요할 것이다.
# 기존 배포 인증서 파기
fastlane match nuke distribution
# 신규 배포 인증서 생성
fastlane match appstore
2-5. Fastfile
sync_code_signing(
type: "adhoc",
app_identifier: {bundle_id},
readonly: true
)
위 설정을 모두 마친 뒤에 Fastfile
에서 이런 식으로 앱 사이닝을 자동화할 수 있게 된다.
3. 팀원에게 인증서 공유(사용법)
# development 인증서 매칭
fastlane match development
# adhoc 인증서 매칭
fastlane match adhoc
# appstore 인증서 매칭
fastlane match appstore
# enterprise 인증서 매칭
fastlane match enterprise
프로젝트 root에서 해당되는 명령어를 입력한 뒤, 키체인에 들어가 보면 정상적으로 등록되는 것을 확인할 수 있다.
마찬가지로 Xcode에서 Signing & Capabilities
에 보면 프로비저닝 파일이 보일 것이다.
다음 글에서는 Play Console
과 TestFlight
의 연동 과정을 끝으로 Fastlane 시리즈는 마무리 될 것 같다.