22

Jenkins を使用して CI システムをセットアップしていますが、次の行を実行したときに xcodebuild がスキームがないと報告するため、ビルドが失敗していることに気付きました。

-xcodebuild -workspace XXX -scheme NNN.

なぜこれが起こっているのかわからなかったので、ワークスペースで何か厄介なことを排除するために、XCodeを使用して新しいプロジェクトテンプレートを作成しました.xcodebuildコマンドとワークスペース/プロジェクトの動作に違いがあることがわかりました. .

テンプレート プロジェクトはスクラップと呼ばれ、端末のコマンド ラインから次のコマンドを実行した場合、たとえば次のようになります。

  xcodebuild -list

出力します

Information about project "scrap":
    Targets:
        scrap

    Build Configurations:
        Debug
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        scrap

しかし、Jenkins 内から xcodebuild -list を実行すると、出力は次のようになります。

Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap
[scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh
+ xcodebuild -list
Information about project "scrap":
    Targets:
        scrap

    Build Configurations:
        Debug
        Release

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    This project contains no schemes.

これは最も単純な jenkins ジョブです。新しいジョブを作成し、それをフリー スタイルのソフトウェア プロジェクトに設定してから、Execut シェルのビルド ステップを追加し、xcodebuild -list コマンドを追加するだけです。

スキームがあるのに、xcodebuild がスキームがないと言っているのはなぜですか? また、Jenkins 内から実行すると動作が異なるのはなぜですか?

4

2 に答える 2

32

スキームを共有するように設定するだけでよいことがわかりました。スキーム > スキームの管理 「共有」がチェックされていることを確認します。

これにより、新しいフォルダー/ファイルが生成されます.../xcshareddata/xcschemes/???.xcscheme

このファイルをソース管理にチェックインすると、ジェンキン ボックスにスキームが表示されます。

于 2012-11-21T23:06:14.733 に答える
0

.gitignore ファイルの.xcodeproj/xcuserdata/ .xcuserdatadを無視する必要があります。xcodebuild -list .xcodeproj/xcuserdata/ .xcuserdatad/xcschemes からスキームを取得します。jenkinsサーバーにはこのファイルがないため、スキームを取得できません。jenkinsサーバーで* .xcodeprojを開くことができます。ファイルを作成してからxcodebuild -listを実行すると、現在のスキームを取得できます。同じ問題があり、上記の方法で解決しました.

于 2016-06-20T02:39:23.683 に答える