EEYatHo 앱 깎는 이야기

Git ) GithubAction2 - EEYatHo iOS 본문

Git

Git ) GithubAction2 - EEYatHo iOS

EEYatHo 2021. 9. 6. 17:20
반응형

사내 앱 GithubAction 적용하다가 알아낸 것들 적습니다.

 

생략 )

1. CI / CD 할 때 인증이 필요한 구간은 2가지다.

2. 개발 주체와 배포 주체가 같느냐 다르냐에 따라, 인증에 요구되는게 달라진다.

3. auto signing을 하려면 애플 로그인이 필요하다. ( 사내 서버면 쉽지만, 깃헙액션에서는 넘나 어려운 짓이다 ㅠ )

 


1. 일단 CI / CD 할 때 인증이 필요한 구간은 2개임.

 

archive 할 때, exportArchive (ipa생성) 할 때.

 

1) archive 할 때의 특징

깃헙 서버에서 archive를 할 때는, xcode에서 설정한 build setting을 따라감.

즉, xcode의 Signing & Capabilities에 설정 한 것에 따라 Auto sigining을 하던, 프로파일을 찾던 함.

 

특이한건, release 설정인데

- 개발 주체와 배포 주체가 같은 개인 앱의 경우, dist인증서를 요구함. -> ad-hoc, app-store 인증서를 박아야함.

- 개발은 나, 배포는 회사인 경우, release 설정인데 불구하고 dev인증서를 요구함 ㅡㅡ -> dev 인증서를 박아야함.

 

( 대충 생각한 이유는, 배포 주체가 회사이며, 그 아래에 개발자로 등록되었기 때문에, 개발 인증을 해서 회사 배포로 연결되는 뭐 그런 구조인건가 암튼 현상이 이럼 ㅡㅠ )

 

 

2) exportArchive 할 때의 특징

얘는 ExportOptions.plist 의 설정에 따라감.

- 여기서는 무조건 dist인증서를 요구함.

 


결론 ) 이러한 이유로,

- 개인 앱을 CI / CD 할 때는 archive, export ipa 둘 다 dist인증서를 요구하기 때문에,

dist인증서와 프로파일만 있으면 됨. ( 아래 zedd님 글 그대로 해도 됨. 갓젣.. )

 

Github Actions ) Archive and export

안녕하세요 :) Zedd입니다. 저번에 zeddios.tistory.com/825 Github Actions 시작해보기 안녕하세요 :) Zedd입니다. 아니 CAShapeLayer...ㅆ ㅣ....... 암튼 ㅎㅎ 잘 안돼서 다른거 해보겠씁니다. 요새 깃헙가면..

zeddios.tistory.com

 

- but, 사내 앱을 CI / CD 할 때는 archive 단계에서 dev인증서와 프로파일이 요구되서

dev, dist 각각 인증서, 프로파일이 필요함.

 


2. auto signing 을 하기 위해 필요한 것.

 

1) archive, exportArchive 명령어 두곳에 -allowProvisioningUpdates 명령어를 써줘야함.

이건 뭐 걍 써주면 됨. 쓰는 위치는 

xcodebuild archive ~~~ release -allowProvisioningUpdates ~~~

xcodebuild -exportArchive -allowProvisioningUpdates ~~~

이렇게 쓰면 됨.

 

2) 깃헙 서버의 xcode에 로그인이 되어야함..... << 이거 때문에 autosigning을 포기함. 

로그인하려고 쌩 난리하는 것 보다, 프로파일 만들어서 옮기는게, 애플에서 제공하고 있는 기능이기도 하고, 자료도 많아서..

로그인이 필요하다는 에러 메세지 :

error: There are no accounts registered with Xcode. Add your developer account to Xcode (in target '[타겟이름]' from project '[프로젝트이름]')
error: No profiles for '[번들ID]' were found: Xcode couldn't find any iOS App Development provisioning profiles matching '[번들ID]'. (in target '[타겟이름]' from project '[프로젝트이름]')

 

Comments