안녕하세요!!! 8월의 마지막에 다급하게 포스트를 들고왔습니다. (헐레벌떡)

오늘 소개해드릴 내용은 fastlane match 라는 녀석인데요,
Mash-Up 프로젝트를 진행하면서 굉장히 잘 써먹어서 공유해드리고 싶어서 가져왔습니다. 🥰

그러면 이번 글도 읽는분들에게 많은 도움이 되길바라며 시작해보겠습니다.

해당 포스트는 flastlane 2.209.1. version 기준으로 작성되었습니다.

What is fastlane match

먼저 match란 무엇이냐,

fastlane에서 제공해주는 tool중 하나로, certificates와 profile을 팀 내에서 간편하게 동기화 시켜주는 도구입니다.

Mash-Up에서 프로젝트를 진행하면 언제나 팀 내에서 인증서 문제로 골치가 아팠습니다.

개인 디바이스로 빌드하게 개발 인증서좀요.. 던가, 배포하고싶은데 배포인증서좀 줄 수 있나요?? 등등..

세명뿐인 프로젝트 iOS 팀 내에서도 공유할때는 골치가 아픈데… 3~4명이 훌쩍 넘는 회사에서는 얼마나 골치가 아플까요..

먼저 왜 골치가 아픈지 살펴보겠습니다 👀

Provisioning Profile

먼저 provisioning profile은 아래 세가지 항목을 포함합니다.

  • App ID - App을 구분할 수 있는 유일한 식별자 입니다.
  • Development Certificate - 물리 디바이스에서 코드를 실행하기 위한 개발자들의 인증서 입니다. (개발자가 여럿이라면 여러개의 인증서가 있겠죠?)
  • Device ID - App을 설치하고 실행할 수 있는 device의 ID입니다. (UDID, Unique Device Identifier)

자, 그러면 Development Certificate와 Device ID는 새로운 개발자가 개발에 투입된다면 Provisioning Profile에 해당 내용을 포함해서 업데이트 해줘야겠죠?

그러면 기존 인원들도 해당 profile을 업데이트 받아야 합니다. (내용이 변경되었으니까요)

그러면 기존인원들에게도 업데이트 비용이 발생하고, 관리자는 팀원 변경이 있을 때 마다 해당 profile을 관리해야 합니다. 🤯

이러한 점을 개선하기 위해 provisioning profile과 certificate를 원격에서 관리하고 동기화 시킬 수 있는 tool이 fastlane-match입니다.

변경사항이 생기면 원격에 업데이트를 해두고, 팀원들은 명령어 한줄로 업데이트 된 profile과 certificate를 동기화 할 수 있습니다.

How to use

서론이 길었습니다.

어떻게 사용하는지 바로 알아봅시다.

가장 먼저 fastlane 설치를 해줍니다 !! 이미 깔려있다면 pass-! 😏

(이때, 권한 부족으로 인한 실패 에러가 발생할 수 있는데, 이때는 sudo 명령어를 함께 사용해서 설치해주세요!)

brew install fastlane

sudo brew install fastlane

이전에 말씀드렸듯이 인증서를 원격에서 관리할겁니다.

개인적인 기준으로 사용하기 가장 편한방법은 github private repository에 올리는 방법이 있습니다. 😃

먼저 private repository를 만들고, clone 받아 해당 위치에서 CLI 명령어를 몇가지 실행할겁니다.

이때, 해당 repository에 push를 하게되는데, private repository이기 때문에

Personal access token이 필요합니다 !!

발급 방법과 등록 방법은 아래에 아주 친절하게 잘 나와있습니다 ! 😝

https://curryyou.tistory.com/344,
https://curryyou.tistory.com/403

이제 본격적으로 명령어를 실행해볼까요?

../fastlane-match % fastlane match init

match를 초기화 하는 명령어 입니다.

실행하시면 위와같은 내용이 노출되고,

fastlane match supports multiple storage modes, please select the one you want to use:

메세지만 주목하시면 됩니다.

저희는 git을 사용하니 1을 입력해줍니다.

그러면 이제 repo url을 입력하라고 할텐데요, 이전에 만들어둔 repo의 url을 입력해줍니다.

이때, 저는 ssh url로 시도해보았지만 match에서 git clone을 시도하는데 무한로딩이 걸려서, http url로 했습니다!

성공적으로 ./Matchfile이 생성되었음을 나타내는 메세지가 노출됩니다. 🎉

그러면 생성된 Matchfile을 살짝 볼까요? 👀

Matchfile

먼저 git_url은 이전단계에서 입력한 url이 들어가 있습니다. 해당 url을 기준으로 인증서를 관리합니다.

storage_mode 는 첫단계에서 설정한 저장소의 유형입니다. 저희는 git을 선택했으니 당연히 git이겠죠?

type은 Matchfile의 유형입니다. appstore, adhoc, enterprise, development가 될 수 있습니다.

우선은 요 세가지 항목들은 변경하실 필요가 없습니다 🤘

그러면 변경해야할 곳은 그 아래부분입니다.

app_identifier, username 을 변경합니다.

app_identifier 는 위에서 보았던 profile이 가질 App ID 입니다.

username 은 사용자의 Apple ID를 입력합니다 !

왜냐?!

작성된 apple id를 가지고 Apple Developer에 인증서를 생성하고, 받아올것이기 때문이죠 !! 😎

Create Certificate

잘 작성하셨나요?! 이제 다음단계로 넘어가봅시다.

이제 인증서를 Match를 통해서 만들어볼텐데요

기존에 개발인증서나 배포인증서를 가지고 계신분이 있을 수 있습니다.

(없는분들은 요 부분은 건너뛰셔도 됩니다 🏃)

배포인증서의 경우에는 최대 갯수가 정해져 있기 때문에 기존것을 삭제하시고 Match를 통해서 관리하시는 편이 더 좋습니다 ! 🙂 

(물론 권장사항입니다!)

삭제하시길 마음 먹으셨다면

fastlane match nuke development # 개발인증서 삭제
fastlane match nuke distribution # 배포인증서 삭제

위 두 명령어를 통해 인증서를 삭제합니다.

이제는 진짜 인증서를 만들어봅시다.

먼저 개발인증서를 만들어볼까요?

fastlane match development # 개발인증서 생성

위 명령어를 사용해서 개발인증서를 생성해줍니다.

이때, 다음과 같은 에러가 난다면!

앞서 말씀드린것과 같이 Access Token을 통해서 git clone을 따로 시도해보시기 바랍니다!

이때 git password는 token 에서 복사한 값을 입력해주세요!! 🔑

자, 에러가 나신분들은 다시한번 명령어를 실행하시고, 한번에 통과하신분들은 인증서가 생성되었습니다.

이때,

Passphrase(비밀번호)를 입력하라고 하는데, 저희는 비밀번호를 만든적이 없으니 최초로 생성하는겁니다.

해당 비밀번호는 잘 기억해두세요!! ⭐

잘 입력했으면 이제 Apple Developer Program의 account 정보를 입력합니다.

Username에는 Apple ID를 입력해줍니다.

신기하게 2중인증 로그인까지 시도합니다 ㅋㅋㅋ

2중인증 코드를 입력하고 나면 어떤 Developer Portal을 사용할 것인지도 선택해야합니다.

2번은 회사 portal이니 1번으로 갑시다 gogo

이제 bundle identifier를 입력하라고 하는데요, 아까 Matchfile에 입력했던 bundle id를 입력해봅시다.

그러면 development code signing identity가 존재하지 않아 새로 만든다고하네요 !!

마찬가지로 Apple ID를 넣어줍시다.

그러면 위의 로그인 step을 거쳐, certificate와 provisioning profile을 생성합니다.

자, 여기까지 잘 따라오셨다면 .. 이제 git repo를 가보면..!!

development 인증서가 git repo에 들어있습니다. 👏👏👏

축하드립니다! 🎉🥳

Use at project

그러면 이제 저 인증서를 가지고 어떻게 활용하느냐…!!

이전에 만들었던 프로젝트 repository에 가서,

fastlane match init 

명령어를 통해서 Matchfile을 생성하고 수정합니다.

이전에 인증서를 올려두었던 url을 git_url에 적어두고 app_identifier, username은 이전과 동일하게 설정합니다.

git_url("https://github.com/dvHuni/fastlane-match-simulation")

storage_mode("git")

type("development") # The default type, can be: appstore, adhoc, enterprise or development

# app_identifier("com.sz.HikingClub")
# username("ansh0324@gmail.com") # 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%

이제 Matchfile에 적힌 url을 기준으로 인증서를 받아오면 됩니다!!!

fastlane match development --readonly // 개발 인증서 다운로드
fastlane match appstore --readonly // 배포 인증서 다운로드

--readonly 옵션은 인증서를 생성하는것이 아닌 받아오기만 하겠다는 옵션입니다!

정상적으로 받아왔다면 프로젝트를 켜봅시다!

오!! Signing Certificate에 match 인증서가 들어있네요 !! 👏👏👏👏

이제 해당 provisioning profile을 선택하고 개발을 하시면 됩니다 -! 😌

마무리하며

이제 다른팀원이 “인증서좀요..”라고 할때

fastlane match development --readonly 명령어 실행하시면되여 ^^”

라고 간지나게 이야기 하시면 됩니다.

글이 조금 길어지는것 같아서 다음 포스트에서 디바이스를 추가하는 방법을 알아보겠습니다!!

골치아팠던 인증서 협업!! fastlane match로 편리하게 해보세요 ~!! 🤣

아 추가로 !

Matchfile을 적용하고나면 .Matchfile.swp 같은게 생길 수 있습니다.

해당 파일은 의미 없는 파일이므로 remote에 올라가지 않도록 .gitignore에 추가해주세요!

참조 :

profile
hello, iOS

0개의 댓글