AzureDevOpsとAppCenterでiOSアプリをCI/CDする
ほぼほぼ参考にさせていただいたこちらのサイト(iOSアプリのCI/CD〜Azure Pipelines編〜 - Qiita)の通りですが、特殊な箇所やハマったところがいくつかあったので、残しておきます。
iOS 開発ナニモワカラナイので、誤りがあったらご指摘ください。
contents:
XCode のバージョン指定
今回はやんごとなき事情で XCode の10.1 をビルドに使いたかったのでバージョン指定しました。
「Specify path」を選択して Path に/Applications/Xcode_10.1.app
と入力します。
バージョンに指定する値は下記サイトに記載があります。(対象のOSのREADMEになにがそのOSに入っているかが書いてある)
https://github.com/actions/virtual-environments/blob/master/images
署名
冒頭で紹介した参考サイトにも記載されていますが、署名のところで色々うまくいかなかったです。
結局参考サイトと同じ以下の設定にしました。
マニュアル署名だと、すべてのプロジェクトに署名しようとしてしまい Pod で参照しているライブラリに対して does not support provisioning profiles. と以下のエラーが全ライブラリに対して出まくります。
❌ error: R.swift.Library does not support provisioning profiles. R.swift.Library does not support provisioning profiles, but provisioning profile XXXXXXXXXXXXX has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor. (in target 'R.swift.Library') ** ARCHIVE FAILED ** ##[error]Error: /usr/bin/xcodebuild failed with return code: 65 ##[section]Finishing: Xcode build
そのため、参考サイトと同じ様に Podfile の末尾に追記しました。
post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = '' config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO' config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' end end
そしてこれだけでなく、今回の案件では Dynamic Library を使用していて、そこでも同じエラーが発生していました。
project.pbxproj
を適当なエディターで開いてライブラリの対象 Configuration の buildSettings に以下を追記します。(たぶん XCode でやればいいんだけど、Windows だけで作業してたため直編集しちゃった…)
CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; PROVISIONING_PROFILE = ''; PROVISIONING_PROFILE_SPECIFIER = '';
以上でなんとかビルドが成功するようになりました。
dSYM を AppCenter にアップロードする
AppCenter でテストアプリを配布するのは参考サイトの通りですが、クラッシュログ分析のため、シンボルファイルを AppCenter にアップロードする設定を追加しました。
デフォでできている Copy Files to: $(build.artifactstagingdirectory)
のタスクをクローンします。
Target Folder の箇所を$(build.artifactstagingdirectory)/dSYMs
に変更します。
Contents を**/*.dSYM/**
に変更します。続いてPublish Artifacts
のタスクもクローンして、先ほど設定した$(build.artifactstagingdirectory)/dSYMs
を Path to publish に設定します。
Artifact name は適当にdSYMs
とかにしておきましょう。そして最後に AppCenter の Deploy タスクの Symbols のところの dSYM path に$(build.artifactstagingdirectory)/dSYMs
を設定します。
そうすると自動でアップロードしてくれるようになります。デプロイ完了後、AppCenter のシンボルの箇所を見るとアップロードされています。