2014-03-04 37 views
1

我是新来的詹金斯和phing且似乎是用不能够运行我phing命令詹金斯一个基本的错误。下面是我的失败版本的控制台日志。我只有一个安装phing,所以我明白我不需要“配置工作选择一个”,我也尝试添加一个PATH到我的jenkins全局环境变量,并在添加变量后重新启动Jenkins,但仍然没有走。我已经在本地PATH中拥有Phing,因为我可以在任何地方调用phing命令。我也能够调用jenkins从终端执行的相同phing命令,并且构建完成。然而,Jenkins的Build Now总是失败。任何帮助将是伟大的!谢谢:)詹金斯不能运行程序“phing” - Phing命令执行失败

Started by user anonymous 

Building in workspace /Users/Shared/Jenkins/Home/jobs/php-template/workspace 

Fetching changes from the remote Git repository 

Fetching upstream changes from ssh://[email protected]:7999/myproject/myrepo.git 

Checking out Revision 8fb6f843d6fd232cdde1684e18c455cef6f20460 (origin/master) 
looking for '/Users/Shared/Jenkins/Home/jobs/php-template/workspace/build.xml' ... 

use '/Users/Shared/Jenkins/Home/jobs/php-template/workspace' as a working directory. 

[workspace]  
$ phing -buildfile /Users/Shared/Jenkins/Home/jobs/php-template/workspace/build.xml clean try_ParallelTasks -logger phing.listener.DefaultLogger 

FATAL: command execution failed.Maybe you need to configure the job to choose one of your Phing installations? 
java.io.IOException: Cannot run program "phing" (in directory "/Users/Shared/Jenkins/Home/jobs/php-template/workspace"): error=2, No such file or directory 

    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) 
    at hudson.Proc$LocalProc.<init>(Proc.java:244) 
    at hudson.Proc$LocalProc.<init>(Proc.java:216) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:773) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:353) 
    at hudson.Launcher$ProcStarter.join(Launcher.java:360) 
    at hudson.plugins.phing.PhingBuilder.perform(PhingBuilder.java:215) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804) 
    at hudson.model.Build$BuildExecution.build(Build.java:199) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:160) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:585) 
    at hudson.model.Run.execute(Run.java:1670) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:231) 
     Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) 
    ... 15 more 
Build step 'Invoke Phing targets' marked build as failure 
+0

作为一种解决方法,我只是执行shell脚本来运行我的phing命令,而不是使用phing插件的构建步骤来运行我的phing命令。 – mfink

回答

0

在安装了phing脚本的目录不在詹金斯用户的$PATH

将它链接到/ usr/bin /中,并且应该设置。

+0

我可以在命令行运行phing命令,jenkins也以同一个用户有什么可能是错的? – Unnikrishnan

1

更清晰,因为Cweiske指出,詹金斯失败的构建,因为它无法找到正确的phing可执行文件,因为它看起来它在错误的道路(一个工作区)。

无论如何,詹金斯搜索太其他路径是可执行文件,当你引用了一句:“在我的本地路径,因为我可以在任何地方调用phing命令”。

与你的本地目录的问题是,它是你的,而不是詹的一个。由于Jenkins使用自己的用户(在安装过程中创建的jenkins)在Mac上运行,因此它不能使用您的本地路径。

理解了这个问题,有不止一种可能的解决方案(并且我已经一个一个尝试了它们,但没有成功!),但更简单的(以及最后工作的那个)是“符号链接”。

注意:请注意Mac上各种类型的“链接”之间的区别:SymLinks不同,不等于别名或硬链接(http://macs.about.com/od/faq1/f/What-Are-Aliases-Symbolic-Links-And-Hard-Links-In-Mac-Os-X.htm)。

走回来的作为USR/bin文件夹中有一些在Mac上每个用户都可以使用的可执行文件,让我们创建一个符号链接到这个文件夹你每次使用的可执行文件,包含在文件夹中的一个您的本地路径。

从终端,到USR/bin文件夹。使用命令“cd”命令将当前目录更改和去根使用类似的顶部:

> cd ../ 

用命令“PWD”就可以查看到该目录的完整路径在其中目前是,并且使用“ls”命令,您可以列出其中的所有文件和文件夹:使用它们在文件夹树中引导自己。

因此,假设你已经是在USR/bin文件夹,并假设你使用MAMP作为Web服务器,的命令是:

> ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing 

正如你所看到的,第一个参数是路径您想要符号链接的可执行文件,第二个参数是要在其中创建符号链接的文件夹的路径。不要忘记追加新的符号链接的名称!

完成后,再次尝试建立与詹金斯:所有现在应该很好地工作......我希望!

一些故障排除:

1)您创造了错误的文件夹的符号链接:使用“RM”删除文件

2)您没有正确的权限:使用“命令”作为一个超级管理员

> sudo ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing 
+0

此解决方案不适用于OS X El Capitan,因为它具有称为“无根”的新安全功能。您需要创建一个“Execute Shell”构建步骤,而不是“调用Phing目标”构建步骤。在这个脚本里面,你可以像这样运行phing:/ usr/local/bin/phing -v。如果您希望能够在不使用/ usr/local/bin的情况下运行phing,而不是进入Manage Jenkins - >配置系统并添加环境变量。将Name设置为PATH,值等于/ usr/local/bin:/ usr/bin:/ bin:/ usr/sbin:/ sbin:/ usr/local/git/bin –

0

从以下错误消息

Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:248) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

我得到这个“IOException when starting a process

好像ProcessBuilder不使用环境变量PATH,所以找不找phing

我所做的是我删除Invoke Phing targets,并添加生成作为Execute Shell,并在Command我加了/usr/local/bin/phing。这对我有用。