まつちよの日記

プログラミングに関する知見や、思ったことを書き残します。

Bitriseで実行したCarthageのログを見られるようにする

Bitriseに関する小ネタです。

要旨

BitriseのワークフローのCarthageのステップに、--log-path $BITRISE_DEPLOY_DIR/carthage_result.logを指定すると、bitrise.ioのビルド結果ページのApp & Artifactsタブで、carthage_result.logがダウンロードできるようになります。

経緯

BitriseのCarthageステップで以下の通り失敗したので、Please check the xcodebuild log for more details:とあるとおりCarthageが出力したログを確認しようとしました。

...省略...
*** Building scheme "Alamofire iOS" in Alamofire.xcworkspace
Build Failed
    Task failed with exit code 65:
    /usr/bin/xcrun xcodebuild -workspace /Users/vagrant/git/Carthage/Checkouts/Alamofire/Alamofire.xcworkspace -scheme Alamofire\ iOS -configuration Release -derivedDataPath /Users/vagrant/Library/Caches/org.carthage.CarthageKit/DerivedData/11.7_11E801a/Alamofire/3.5.1 -sdk iphoneos ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES archive -archivePath /var/folders/wp/4pf4qdmn217djs68lskdcc780000gn/T/Alamofire SKIP_INSTALL=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO CLANG_ENABLE_CODE_COVERAGE=NO STRIP_INSTALLED_PRODUCT=NO (launched in /Users/vagrant/git/Carthage/Checkouts/Alamofire)
This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/wp/4pf4qdmn217djs68lskdcc780000gn/T/carthage-xcodebuild.UWE24q.log
Failed to execute step: Carthage command failed, error: exit status 1

しかし、App & Artifactsタブを開いても、Carthageが出力したログは見当たりません。

この理由として、iOS Auto ProvisionステップやXcode Archiveステップで生成されるログは、Deploy to Bitrise.ioステップを追加するだけでApp & Artifactsタブから見られるようになります。一方でCarthageのログは、このステップを追加するだけでは、Bitrise.ioにデプロイされないためです。

↓Deploy to Bitrise.ioステップ

参考:Xcode Buildのログを確認するにはDeploy to Bitrise.ioステップが必要

I wonder how do I print or export the full log file of raw-xcodebuild-output.log? ... It’s really simple: just add a Deploy to Bitrise.io step to the end of the Workflow. https://discuss.bitrise.io/t/how-do-i-print-or-export-the-full-log-file-of-raw-xcodebuild-output-log/20

Carthageのログを見られるようにするには追加で1ステップ必要になります。この記事ではその方法を紹介します。

なお、今回App & ArtifactsタブにiOS Auto ProvisionステップやXcode Archiveステップで生成されたログすら出ていないのは、前段のCarthageステップで失敗した結果スキップされているためです。

Carthageのログを見られるようにする方法

以下の画像の通り、Workflow EditorのCarthageステップにオプション--log-path $BITRISE_DEPLOY_DIR/carthage_result.logを追加します。

こうすることで、後続のDeploy to Bitrise.ioステップで、$BITRISE_DEPLOY_DIRがデプロイされる時に、Carthageのログも一緒にデプロイされます。

(もし、Deploy to Bitrise.ioステップを追加していなかったら、ワークフローの一番最後に追加してください。)

デプロイされた結果、以下のように、App & Artifactsタブにcarthage_result.logが表示されるようになります。

これで以上です。