我是jenkins和phing的新手,并且看起来像jenkins无法运行我的phing命令的基本错误。我失败的构建的控制台日志如下。我只有一个phing安装所以我明白我不需要“配置工作来选择一个”,我也尝试在我的jenkins全局环境变量中添加一个PATH并在添加变量后重新启动Jenkins但仍然没有走。我已经在我的本地路径中使用了Phing,因为我可以在任何地方调用phing命令。我也能够调用jenkins从终端执行的相同的phing命令,并且构建完成。但是,Jenkins的Build Now总是失败。任何帮助都会很棒!谢谢:))
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://git@mystash.server: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 :(得分:1)
更清楚的是,正如Cweiske所指出的那样,Jenkins无法构建,因为它无法找到正确的phing可执行文件,因为它在错误的路径(工作区中的那个)中查找它。
无论如何,Jenkins也会在其他路径中搜索该可执行文件,就像你引用的那样:“在我的本地路径中,因为我可以在任何地方调用phing命令”。
你的本地路径的问题在于它是你的,而不是Jenkin的。由于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作为网络服务器,命令为:
> ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing
如您所见,第一个参数是您想要符号链接的可执行文件的路径,第二个参数是您要在其中创建符号链接的文件夹的路径。不要忘记附加新符号链接的名称!
完成后,再次尝试使用Jenkins构建:现在一切都应该运行良好...我希望!
一些疑难解答:
1)您在错误的文件夹中创建了符号链接:使用“rm”删除文件
2)您没有正确的权限:使用“sudo”充当超级管理员
> sudo ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing
答案 1 :(得分:0)
安装phing
脚本的目录不在jenkins用户的$PATH
中。
将它符号链接到/ usr / bin /,你应该设置它。
答案 2 :(得分: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)
我得到了这个&#34; IOException when starting a process&#34;
似乎ProcessBuilder
没有使用env变量PATH,因此无法找到find phing
我做的是删除了Invoke Phing targets
并添加了构建为Execute Shell
,并在Command
中添加了/usr/local/bin/phing
。这对我有用。