[iOS] Fastlane + Github Actions로 CI/CD 파이프라인 구축하기 (1편 - CI/CD란 무엇일까?)
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기)
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기)
Fastlane Match를 사용해서 Git Repo에 인증서와 프로필 관리하기
iOS 앱 개발 프로젝트를 진행하다 보면 Xcode 프로젝트 자체의 Signing, Profiles 등의 관리 문제로 인해 실제 개발 외의 세팅에 많은 시간이 소모되는 경향이 있다. 이러한 문제를 해결하는 방법으로, fastlane Match를 이용할 수 있다. fastlane match는 private한 git repo에 이러한 인증서와 프로필을 저장하여 팀원들 간에 편하게 공유하여 사용할 수 있도록 만들어주며, CI machine을 이용할 때에도 이러한 인증서 세팅을 불러와 사용 가능하다는 이점이 있다.
링크에는 git을 이용한 code-signing에 대해서 설명되어 있는데, match는 'Keep Your Keys In-Sync with Git'에 포함되는 일련의 과정을 쉽게 관리할 수 있도록 만들기 위해 fastlane에서 제공하는 tool의 일종이다. 간단히 말해서 인증서와 프로필을 생성하고, git repo에 암호화해서 push하며 다시 이를 다운받고 복호화하는 과정을 명령어 몇 줄로 실행할 수 있도록 해주는 것이다.
fastlane match 사용해보기
전반적으로 다음 링크를 따라해가며 적용해 보았다.
1. Organization에 새로운 private repo를 판다.
2. Match Init을 통해 MatchFile을 생성한다.
git에 인증서와 프로필을 저장할 것이기 때문에 1을 선택해 준다. 여기까지 하면 matchfile이 생성되는데, 아래와 같은 내용들을 포함하고 있다. 만약 identifier나 username을 따로 지정하고 싶으면 주석을 풀어서 사용하면 된다.
git_url("인증서를 저장할 git 주소")
storage_mode("git")
type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
# app_identifier(["tools.fastlane.app", "tools.fastlane.app2"])
# username("user@fastlane.tools") # Your Apple Developer Portal username
# For all available options run `fastlane match --help`
# Remove the # in the beginning of the line to enable the other options
# The docs are available on https://docs.fastlane.tools/actions/match
3. 기존에 사용하던 개발, 배포용 인증서들을 파기한다.
fastlane match nuke development # 개발용 인증서 파기
fastlane match nuke distribution # 배포용 인증서 파기
위의 사진처럼 passphrase를 요구하는데, 자세한 개념은 모르겠지만 비밀번호라고 생각하고 입력 후, 기억해 놓는다.
가지고 있던 인증서 목록이 뜨고 모두 삭제할 것인지 묻는데, 지금부터 모든 인증서를 git에 관리할 것이기 때문에 y를 눌러준다.
4. 새로운 인증서 생성하기
fastlane match �development # 개발용 인증서 생성 및 업로드
fastlane match �distribution # 배포용 인증서 생성 및 업로드
중간에 login keychains에 대한 password를 요구하는데 입력하고 기억해 놓는다.
위의 명령어들을 입력하면 인증서 생성, 다운로드, git에 push까지 순차적으로 해결해준다.
5. 레포지토리 확인 및 Xcode에서 확인하기
아까 생성했던 인증서 저장용 레포지토리에 들어가면 아래와 같이 파일들이 생성된 것을 확인할 수 있다.
그리고 프로필이 잘 동작하는지 확인하기 위해 Xcode에 들어가서 provisioning profile을 'match Development '번들ID''로 지정해서 빌드해본다.
6. 팀원들에게 공유하기
Xcode에서 빌드가 되는 것을 확인했으니, 다음으로는 팀원들에게 해당 프로필을 공유하면 된다. 공유 절차는 다음과 같다.
- 팀원들에게 인증서 저장용 repo 권한 부여하기
- 팀원의 맥북에 fastlane이 설치되어 있지 않다면 fastlane 설치하기
- matchfile이 존재하는 버전을 pull 받고, fastlane 명령어 입력하기
fastlane match appstore --readonly
fastlane match development --readonly
중간에 passphrase를 요구하는데, 팀원에게 패스워드를 공유해서 입력할 수 있도록 한다.
- Xcode provisioning profile 변경해서 빌드해보기
다음 스텝
여기까지 했다면 git 저장소를 이용해서 팀 프로젝트의 인증서와 profile을 손쉽게 관리하기 위한 준비가 되었다. 앞으로 새로운 팀원들이 합류하거나 새 Device가 주어질 때 master가 repo에 인증서를 업데이트하고, 팀원들은 위의 명령어 한줄만 입력하여 인증서를 갱신할 수 있다. 만약 CI/CD를 위해 가상 머신을 이용한다면 위의 repo에서 인증서를 받아올 수도 있다.
참고
'iOS' 카테고리의 다른 글
[iOS] iOS App의 Modularization (1편 - Bundle이란?) (0) | 2022.09.12 |
---|---|
[iOS] FirebaseAuth를 통해 OAuth 2.0 소셜로그인 기능 구현하기 (1) | 2022.09.10 |
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (3편 - fastlane으로 TestFlight에 앱 업로드하기) (0) | 2022.09.04 |
[iOS] iOS 앱의 버전 관리에 대해(앱 버전 및 빌드 버전) (2) | 2022.08.29 |
[iOS] Fatslane + Github Actions로 CI/CD 파이프라인 구축하기 (2편 - Github Actions 살펴보기) (0) | 2022.08.28 |