Fastlane을 활용한 앱 배포 자동화(2) - with. fastlane match로 iOS 인증서 관리하기

etc-image-0
fastlane

지난 글의 프로세스를 잘 따라왔다면 커맨드로 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를 대상으로 개발 인증서를 자동으로 생성해 준다.

etc-image-1
인증서 repository

그리고 연동해 놓은 레파지토리에 생성한 인증서가 자동으로 업로드되어 관리된다.

 

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 ConsoleTestFlight의 연동 과정을 끝으로 Fastlane 시리즈는 마무리 될 것 같다.

차니님의 😊
글이 좋았다면 응원을 보내주세요!