Jenkins不能从项目文件夹运行xcodebuild

我正在尝试为iOS应用程序设置CI环境。 到目前为止,我已经获得了xcodebuild从命令行正确构buildtesting版本,但是当Jenkins试图执行它时,我在控制台中读取了以下内容:

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) 

有什么想法吗? 我对jenkins相当陌生,但是我已经尽力用Google Fu来回答这个问题,但是没有成功。 我原本遇到这个问题,手动安装Jenkins(技术上是自制的),但最近使用OSX安装程序,并导致相同的错误。

我猜这与Unix / Linux / OSX权限有关,比Jenkins / Xcode更多,但是没有足够的专业知识来确定。

编辑

项目目录权限设置为775。

我也尝试将所有权更改为Jenkins运行的用户。

下面是我试图运行xcodebuild作为守护进程用户($ sudo -u daemon xcodebuild)的输出:

 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) 

确保Jenkins运行的用户具有正确的权限。 转到http://[jenkins_server]/systemInfo并searchuser.name

上面写着:

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作业configuration为将代码从存储库检出到Jenkins工作区中,并在那里构build它,然后报告结果。

我不确定可以通过让Jenkins直接跳到你的工作目录并在那里进行构build来实现。 如果这真的是你想要做的,你需要告诉我们为什么你认为这是一个好主意。