QA@IT

Jenkinsのエラー原因について(Xcode)

10226 PV

Gitを利用してJenkinsビルドしようとしていますが、ビルドが失敗してしまい困っています。
どなたかご存知の方いらっしゃればご教授いただけないでしょうか

ローカルのMacにJenkins環境を作っており、gitからプロジェクトをひっぱっているところまでは確認しています。
また、そのプロジェクトを開き、ビルドが通ることも確認しています。

これまでもエラーは何回もでていたのですが、Consoleの下の方にエラー内容が出ていたためなんとか解決できていましたが、今回はそれがなく難航しております。
全部かくと多くなるので、一番下からコピーしてきました。エラーは以下のような内容です。


Touch build/Debug-iphoneos/QuizAppTests.xctest
cd /Users/Yuya/.jenkins/jobs/newJob/workspace
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/usr/bin/touch -c /Users/Yuya/.jenkins/jobs/newJob/workspace/build/Debug-iphoneos/QuizAppTests.xctest

CodeSign build/Debug-iphoneos/QuizAppTests.xctest
cd /Users/Yuya/.jenkins/jobs/newJob/workspace
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity: "iPhone Developer: Yuya XXXXXXX (XXXXXXXX)"

/usr/bin/codesign --force --sign XXXXXXXXXXXXXXXXXXXXXXXXXXX --resource-rules=/Users/Yuya/.jenkins/jobs/newJob/workspace/build/Debug-iphoneos/QuizAppTests.xctest/ResourceRules.plist /Users/Yuya/.jenkins/jobs/newJob/workspace/build/Debug-iphoneos/QuizAppTests.xctest

Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!

** BUILD FAILED **

Build step 'Xcode' marked build as failure
成果物を保存中

Finished: FAILURE

どなたかご存知の方いらっしゃればアドバイスお願いします。

  • `/usr/bin/codesign --force`の手前に errorとか出ていたりしませんか?それより前でもいいですが。
    疑わしいのはその警告ではあるのですが。
    -
  • アドバイスありがとうございます!errorという文言で検索したところ、4件がヒットしていました。少し長くなりますので、回答の方で書かせていただきます。よろしければアドバイスお願いします -
  • すいません。勘違いしていました。 以下の出力をerrorと勘違いしていました。optionか何かの指定かと思われます
    /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool --target-device ipad --errors --warnings --notices -
    -
  • 上の出力が4つあるだけで他にerrorで引っかかるところはありませんでした。
    また、resourceのwarningの他にwarning:から始まる以下の内容の箇所がそれぞれ2箇所ずつありましたが、これも原因になりえるのでしょうか
    ・format specifies type 'unsigned long'
    ・values of type 'NSUInteger' should not be
    -
  • とりあえずパッチを受け入れてほしいのですが。あと直接の回答ではないのですが、少し回答に追記します。 -

回答

解決するかどうかはわかりませんが、とりあえず提示のログでは「Yosemiteからresource-rulesオプションは使用されなくなった」という警告だけなので、以下を参考に

http://stackoverflow.com/a/26485381/2513010

プロジェクトをクリック > Targets > Select your target > Build Settings >

Code Signing Resource Rules Path$(SDKROOT)/ResourceRules.plist

を設定してみてください。

(警告ではなくエラーとなる場合もあるようですので解決するかもしれません。)


追記

その.jenkinsフォルダのプロジェクトをそのままビルドするとうまくいくので、なぜjenkinsだけ駄目なのかが謎です。

jenkinsのビルド設定がどうなっているのかわかりませんが、jenkinsはコマンドの結果コード(終了ステータス)によって成否を判断していると思いましたので、ビルドが通るから成功するはずという事は言えません。

(例えばビルド後にどこかにコピーするcpコマンドが失敗していても失敗となったり)

ビルド自体が失敗したのか、それに付随する(署名とか)が失敗したのか、どのプロセスで失敗しているのかを調査する必要があります。

jenkinsのビルドログを見てjenkinsが実行しているのと同じコマンドをターミナルなどで(できるだけユーザーなども同じにして)手動で実行してみて、その結果コードを見てみる(echo $?)と問題のコマンドがわかる事もあります。

仮に警告付きのビルド成功が終了ステータスとして 0以外を返した場合にも失敗となりますのでそういった部分にも注意してください。

編集 履歴 (1)
  • ご回答ありがとうございます。早速試してみたのですが結果変わらずでした。
    git側に登録されているプロジェクトに入れて、jenkinsで引っ張ってきた後の.jenkinsフォルダにできたプロジェクトにもその設定が入っているのは確認しました。その.jenkinsフォルダのプロジェクトをそのままビルドするとうまくいくので、なぜjenkinsだけ駄目なのかが謎です。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。