상세 컨텐츠

본문 제목

[삽질이야기] fastlane 새로운 기기 등록하기 (Register new devices)

iOS 캐기/fastlane 캐기

by Atlas 2022. 11. 1. 17:05

본문

728x90
반응형

시나리오 :  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/

 

Authentication - fastlane docs

Authenticating with Apple services Several fastlane actions communicate with Apple services that need authentication. As this can pose several challenges especially on CI, this document focuses on those challenges, but everything described here can be done

docs.fastlane.tools

 

 

사용자 및 엑세스 탭에서 "+"을 클릭하여 API키를 생성해준다.

 

IssuerId, KeyId 그리고 API키 다운로드를 해서 받은 .p8 확장자의 파일을 잘 관리하도록하자.

(⚠  한번만 다운로드 가능하니 다운받아서 관리 필수)

 

나는 fastlane 폴더 아래의 appstore폴더를 만들어서 키파일을 넣어두었다! 

 

위에 미리 생성한 Env 파일에 필요한 정보들도 넣어놓았다.

 

4. 자 이제 lane을 만들어 보자 .

fastlane > Fastfile.swift 를 열어서 작성해주면 된다. 

 

*Tips!!! lane명은 끝에 꼭 ****Lane ()으로 해줘야 한다!

아래 코드처럼 구성을 해보았다.

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

 

GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps

🚀 The easiest way to automate building and releasing your iOS and Android apps - GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps

github.com

 

 

fastlane fastlane-credentials add --username felix@krausefx.com

Password를 설정해주고 난 후 최초 입력 한번 해주면 그 다음부터는 입력 안해도 된다! 야호!!!! 자동화 만세!!

 

 

 

확인사항

1. 추가한 기기가 잘 등록 되었는지(등록되어 있는 기기를 Inactive상태로 바꾼 상태에서 lane을 실행 후, 해당 기기가 다시 active가 되어 있으면 정상작동!)

2.인증서 관리 Repository update 되었는지 확인 

 

 

 

슬랙푸시도 넣어줘서 사용성을 올려보니 좋습니다!!

2022.10.04 - [iOS 캐기/fastlane 캐기] - [fastlane] slack으로 push 알림 보내기

 

[fastlane] slack으로 push 알림 보내기

시나리오 : Testflight에 바이너리가 업로드 된 시점에 슬랙 채널로 알림이 오도록 해보자 공식문서를 보고싶다면 바로 아래 링크로 들어가서 보면 된다. https://docs.fastlane.tools/actions/slack/ slack - fas..

artieee.tistory.com

 

 

 

 

마무리 : 많은 삽질을 통해서 되었다.. ㅠㅠ 

 

 

 

 

 

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/

 

match - fastlane docs

A new approach to iOS and macOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues. match is the implementation of the codesigning.guide concept. match creates all r

docs.fastlane.tools

 

 

http://docs.fastlane.tools/getting-started/ios/fastlane-swift/#getting-started-with-fastlaneswift-beta

 

Swift - fastlane docs

Getting Started with Fastlane.swift (beta) Welcome to Fastlane.swift. Fastlane.swift allows you to write your fastlane configuration using Xcode, in Swift - the language you have come to know and love from the world of iOS development. Fastlane.swift is cu

docs.fastlane.tools

https://docs.fastlane.tools/actions/register_devices/

 

register_devices - fastlane docs

This will register iOS/Mac devices with the Developer Portal so that you can include them in your provisioning profiles. This is an optimistic action, in that it will only ever add new devices to the member center, and never remove devices. If a device whi

docs.fastlane.tools

 

https://github.com/fastlane/fastlane/tree/master/credentials_manager

 

GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps

🚀 The easiest way to automate building and releasing your iOS and Android apps - GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps

github.com

 

반응형

'iOS 캐기 > fastlane 캐기' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역