IPA 파일의 Provisioning Profile을 바꾸는 feat.Jenkins씨

4443 단어 iOSJenkinsipa

머리



이 기사는 Silbird Advent Calendar 2017 20일째 의 기사입니다.

iOS의 개발 단말기의 지정을 드물게 잘 붙이거나 제거하고 있어, 그때마다 리빌드를 부탁하는 것이 귀찮아 죄송하기 때문에, 어떻게든 서명이라든지 ProvisioningProfile만 무리 교환할 수 없는지, 그 다음에 Web로부터 버튼 한발 정도로 할 수 없을까 시행착오해 보았습니다.

중요한 재서명부는 위대한 선구자님을 참고로 했습니다.
( h tp // w w. 미니 마 b. 코 m/bぉg/2016/04/14/레시 g응-이파/ )

전제 조건



OSX기(MBP나무나)에 XCode를 도입해, 필요한 증명서(코드 서명에 사용 가능한 Development or Distribution 증명서)를 도입합니다.
또, security find-identity -p codesigning -v 로 제대로 도입되어 있는지 확인과, 증명서의 이름을 삼가해 둡니다
( "iPhone Developer: fumitti (0A1B2C3D4E)" )
또한 Jenkins를 준비합니다. 이번에는 기존 Jenkins의 슬레이브로 준비했습니다.

Jenkins의 Job 만들기



우선, 업데이트하는 Provisioning Profile을 WebUI에서 업로드하여 IPA를 아티팩트로 받는 스타일로 만들고 싶습니다.
그래서 빌드의 파라미터화로 파일을 받도록 합니다.
업데이트할 ProvisioningProfile과 교체할 IPA 파일을 받도록 합니다.


다음으로, 본명의 교환, 재서명 처리를 추가합니다.
쉘 스크립트로 추가하므로 쉘 실행에서

rm -rf ./Payload
rm -f ./entitlements.plist
unzip AwesomeApp.ipa
codesign -d --entitlements :- ./Payload/AwesomeApp.app > entitlements.plist
cat entitlements.plist
cp -p new.mobileprovision ./Payload/AwesomeApp.app/embedded.mobileprovision
codesign --force --sign "iPhone Developer: fumitti (0A1B2C3D4E)" --timestamp=none --entitlements entitlements.plist Payload/AwesomeApp.app
zip -ry AwesomeApp.ipa Payload

를 추가합니다.
또, 이대로라면 키체인 액세스의 인증이 요구되어 버리므로, security unlock-keychain -p <キーチェーンのパスフレーズ> 에 대한 액세스를 허용합니다.


마지막으로 ZIP으로 굳힌 IPA 파일을 아티팩트로 저장


실행



htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 아코 t / 이오 s / 에서 개발 단말기를 추가하거나 삭제하고,
htps : //로 ゔぇぺぺr. 아 ぇ. 코 m / 아코 t / 이오 s / p 로후 ぇ / 에서 업데이트 할 Provisioning Profile을 선택하고 내부 Devices를 적절하게 업데이트하고,

다운로드합니다.

그런 다음 Jenkins에서 만든 Job을 실행하고 다운로드 한 프로필을 전달하면 재 서명 된 IPA 파일이 아티팩트로 저장됩니다.


YATTA!
덧붙여서, 파일을 건네지 않고 빌드를 실행하는 것도 가능하고, 그 경우 전회의 빌드로 사용된 것이 사용 돌려지기 때문에 매회 IPA 파일을 건네주지 않아도 괜찮습니다.

성과물로서 보존하고 있으므로, 다른 Job으로부터 참조할 수 있기 때문에, 이 Job의 뒤에 OTAInstall 사이트의 IPA 갱신이라든지 노력하면 자동화 할 수 있군요!

후기



이제 매번 빌드 장인에게 부탁하지 않아도 Web에서 모든 처리를 완결시킬 수 있게 되어 주로 빌드 장인과 내가 조금 해피가 되었습니다!
여러분도 꼭 자동화를 진행해 행복하게 합시다!

좋은 웹페이지 즐겨찾기