2012-03-20 12 views
7

iOSアプリケーションのCI環境を設定しようとしています。Jenkinsがプロジェクトフォルダからxcodebuildを実行できない

Started by user anonymous 
Building in workspace /Users/Shared/Jenkins/Home/jobs/Unit Tests/workspace 
Working directory is /Users/iosappdev/Documents/Xcode Projects/rules. 
[rules] $ /usr/bin/xcodebuild -version 
FATAL: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied 
java.io.IOException: Cannot run program "/usr/bin/xcodebuild" (in directory "/Users/iosappdev/Documents/Xcode Projects/rules"): error=13, Permission denied 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:707) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:338) 
    at hudson.Launcher$ProcStarter.join(Launcher.java:345) 
    at au.com.rayh.XCodeBuilder.perform(XCodeBuilder.java:224) 

任意の考え:これまでのところ私は、コマンドラインから正しくテストビルドを構築するためにxcodebuildが、ジェンキンスは、それを実行しようとしたとき、私は、コンソールで読み出さ以下を得る得ていますか?私はかなり新しいJenkinsですが、私はGoogle Fuでこの質問に答えようとしていません。私はもともとJenkins(技術家)の手動インストールでこの問題に遭遇しましたが、最近OSXインストーラを使用したため、同じエラーが発生しました。

私はこれがJenkins/XcodeよりもUnix/Linux/OSXの権限と関係があると思いますが、確かにこれを判断するのに十分な専門知識がありません。

編集

プロジェクトディレクトリのパーミッションは、私はまた、ジェンキンスが動作しているユーザーに所有権を変更しようとした775

に設定します。

dev-imac:rules iosappdev$ sudo -u daemon xcodebuild 
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied 
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied 
2012-03-21 11:05:46.161 xcodebuild[1411:70b] [MT] DVTAssertions: ASSERTION FAILURE in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1196/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/Xcode3Model/Xcode3Project.m:266 
Details: Assertion failed: [directoryPath isAbsolutePath] 
Object: <Xcode3Project> 
Method: +projectFilesInDirectory: 
Thread: <NSThread: 0x40010a260>{name = (null), num = 1} 
Hints: None 
Backtrace: 
    0 0x000000010025b85f -[DVTAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in DVTFoundation) 
    1 0x000000010025b6b5 _DVTAssertionFailureHandler (in DVTFoundation) 
    2 0x00000001011559bc +[Xcode3Project projectFilesInDirectory:] (in DevToolsCore) 
    3 0x00000001008a424b -[Xcode3CommandLineBuildTool _resolveInputOptions] (in Xcode3Core) 
    4 0x00000001008aa097 -[Xcode3CommandLineBuildTool run] (in Xcode3Core) 
    5 0x00000001001d7db6 (in xcodebuild) 
    6 0x00000001001d7c2c (in xcodebuild) 

答えて

5

はジェンキンスを実行するユーザーが必要な権限を持っていることを確認してください:

は、ここで私はデーモンのユーザー($ sudoを-uデーモンxcodebuild)としてxcodebuildを実行しようとしたときのための出力です。 http://[jenkins_server]/systemInfoに行き、user.nameを検索してください。その上

+0

「正しい」権限の外観はどうですか? xcodebuildは755を持っていて、どのユーザーも任意のディレクトリからプログラムを実行できると思っています。プロジェクトディレクトリにも755の権限があります。 Jenkinsユーザーはデーモンユーザーです。 – cesarislaw

+0

私が実際に何を意味するかは、あなたがディレクトリを所有するユーザでJenkinsを実行すべきであるということです。あるいは、書き込み可能にします。 –

+0

私は様々な時点で両方を試しました。再度チェックし(ディレクトリのパーミッションを775に設定し、所有権をデーモンユーザに設定する)、引き続きパーミッション拒否エラーを受け取ります。 – cesarislaw

0

読み取り:

Building in workspace /Users/Shared/Jenkins/Home/jobs/Unit Tests/workspace Working directory is /Users/iosappdev/Documents/Xcode Projects/rules. [rules] $ /usr/bin/xcodebuild -version

どういうわけか、ジョブの実行は、 "間違った" ディレクトリにジャンプしました。多分あなたはカスタムワークスペースでジョブを設定したでしょうか? Jenkinsはおそらくユーザーデーモンとして実行されているため、ユーザーiosappdevの下にあるファイルにはアクセスできません。

Jenkinsを使用する通常の方法は、ソースコードをバージョン管理リポジトリにコミットすることです。 Jenkinsジョブは、リポジトリのコードをJenkinsワークスペースにチェックアウトしてそこに構築し、結果を報告するように設定されます。

Jenkinsを作業ディレクトリに直接ジャンプさせてビルドを実行することで何が達成できるのかよく分かりません。それが本当にあなたがしようとしているものなら、それが良いアイデアだと思う理由を教えてください。

+0

コメントのビットが遅れていますが...私は同じことを経験しています。その理由は、xcodeプラグインで "Xcode Project Directory"を指定できるようになり、作業ディレクトリが変更されてしまうからです。私はOSX上で1.512を実行しており、ジェンキンはユーザー "jenkins"として実行されているので、OPと同じように自分のユーザーディレクトリの下にあるファイルにアクセスする権限はないと思う。これらの制約の下でジェンキンズを働かせる方法はありますか?私はむしろジェンキンスビルドを実行するためにVCをセットアップする必要はありません。 VCシステムなしでビルドにジェンキンを使用することは可能です。 – Tony