시나리오 : match를 활용해서 인증서 관리 진행 중에 새로운 기기의 uuid 등록 및 profile 업데이트를 진행해보았다.
fastlane에서 Xcode에서 swift로 작성할 수 있어서 이번엔 ruby를 살짝 옆으로 밀어두고 진행해보았다.
실행환경
macOS 12.6 Monterey
fastlane 2.210.1
1. 프로젝트를 생성하고 fastlane을 설치한다.
fastlane init swift
2. Env.swift 파일을 생성하여 공통으로 쓰는 정보들을 관리하려고 한다.
3. 권한을 부여하기 위해서 App Store Connect API key를 생성한다
.
https://docs.fastlane.tools/getting-started/ios/authentication/
사용자 및 엑세스 탭에서 "+"을 클릭하여 API키를 생성해준다.
IssuerId, KeyId 그리고 API키 다운로드를 해서 받은 .p8 확장자의 파일을 잘 관리하도록하자.
(⚠ 한번만 다운로드 가능하니 다운받아서 관리 필수)
나는 fastlane 폴더 아래의 appstore폴더를 만들어서 키파일을 넣어두었다!
위에 미리 생성한 Env 파일에 필요한 정보들도 넣어놓았다.
4. 자 이제 lane을 만들어 보자 .
fastlane > Fastfile.swift 를 열어서 작성해주면 된다.
아래 코드처럼 구성을 해보았다.
Env.swift
enum AppStoreConnect {
static let keyFilepath = "./fastlane/appstore/AuthKey.p8"
static let keyId = "InputYourKeyId"
static let issuerId = "InputYourIssuerId"
}
enum Device {
static let name = "" //기기명 ex> 공용테스트폰 iPhon12 mini
static let uuid = "" // identifier
}
enum Developer {
static let teamId = "" // Developer Portal team id
static let userName = "aritee@gmail.com" // apple 계정
}
Fastfile.swift
class Fastfile: LaneFile {
let gitAuthKey = ""
func registNewDevicesLane() {
desc("regist enw divices and update profile")
// 기기등록
registerDevice(name: Device.name, // 추가할 기기명
udid: Device.uuid, // 기기 identifier
teamId: .userDefined(""),
username: .userDefined("aritee@gmail.com"))
//Appstore connect login
appStoreConnectApiKey(keyId: AppStoreConnect.keyId,
issuerId: AppStoreConnect.issuerId,
keyFilepath: .userDefined(AppStoreConnect.keyFilepath),
duration: 1200,
inHouse: false)
//Match를 통해서 profile 업데이트
match(type: "development", // Type은 development
readonly: .userDefined(false),
appIdentifier: ["InputYourAppIdentifier"],
username: .userDefined(Developer.userName),
teamId: .userDefined(Developer.teamId),
gitBasicAuthorization: .userDefined(gitAuthKey),
forceForNewDevices: .userDefined(true))
}
}
[Tips] match의 파라미터의 username 이랑 teamId을 넣은 이유는 해당 파라미터를 넣지 않고 실행했을 때
터미널에서 username을 몇 번 입력해줘야하는 상황이 생겨서 (이러면 자동화가 아니잖아 .. ㅠㅠ )
명령어 한방에 A-Z 하기 위해서 적용하였다.
[Tips] gitBasicAuthrization 키는 GitHub 사이트에서 personal access token의 경우는 Settings > Developer setting > Personal access tokens 에서 생성해 주면 된다.
생성한 token을 가지고 Base64 인코딩 된 키를 생성해주고 복사하여 사용하시면 됩니다~
echo -n your_gitlab_username:your_personal_access_token | base64
휴우 ~ 먼길을 달려왔군요.
이제 lane을 실행시켜보자.
bundler exec fastlane registNewDevicesLane
는.. 실행시키면 아래와 같은 메시지가 나올 것이다.
teamId 와 username을 추가하니 이와 같은 메시지를 받게 되었다. 친절하게 가이드해주는 fastlane 짱!
https://github.com/fastlane/fastlane/tree/master/credentials_manager
fastlane fastlane-credentials add --username felix@krausefx.com
Password를 설정해주고 난 후 최초 입력 한번 해주면 그 다음부터는 입력 안해도 된다! 야호!!!! 자동화 만세!!
확인사항
1. 추가한 기기가 잘 등록 되었는지(등록되어 있는 기기를 Inactive상태로 바꾼 상태에서 lane을 실행 후, 해당 기기가 다시 active가 되어 있으면 정상작동!)
2.인증서 관리 Repository update 되었는지 확인
슬랙푸시도 넣어줘서 사용성을 올려보니 좋습니다!!
2022.10.04 - [iOS 캐기/fastlane 캐기] - [fastlane] slack으로 push 알림 보내기
마무리 : 많은 삽질을 통해서 되었다.. ㅠㅠ
PS. 삽질의 흔적... ㅋㅋㅋ
-> app store connect api 연동을 통해 해결
-> 오타 ... username ...
-> fastlane-credentials 로 해결 (가이드 제대로 안읽고 apple 계정 비번인줄..ㅠㅠㅠ)
match에서 username, teamId를 request parameters에서 제외하고 lane 을 실행하게 되면
Apple 계정, 인증 번호, 계정의 여러개 팀이 있을 경우 teamId 선택 등등의 입력을 해주면서 진행하야한다 .
나의 경우는 dev/stage/production 각 각의 환경의 인증서와 provisioning profile을 관리해주기 때문에
이런 반복되는 작업을 없애고 싶었다.
참고사이트
https://docs.fastlane.tools/actions/match/
https://docs.fastlane.tools/actions/register_devices/
https://github.com/fastlane/fastlane/tree/master/credentials_manager
[review] fastlane을 사용후기 (0) | 2022.10.05 |
---|---|
[fastlane] slack으로 push 알림 보내기 (0) | 2022.10.04 |
[fastlane] match로 배포해보기 (2) | 2022.09.16 |
[fastlane] 프로젝트 설정 (0) | 2022.09.16 |
[fastlane] 설치 (0) | 2022.09.16 |
댓글 영역