首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins无法运行程序" Phing“-Phing命令执行失败

Jenkins无法运行程序" Phing“-Phing命令执行失败
EN

Stack Overflow用户
提问于 2014-03-05 02:30:28
回答 3查看 3.2K关注 0票数 1

我是jenkins和phing的新手,jenkins无法运行我的phing命令,这似乎是一个基本的错误。下面是我失败构建的控制台日志。我只有一个phing安装,所以我知道我不需要“配置作业来选择一个”,我也尝试添加一个路径到我的jenkins全局环境变量,并在添加变量后重新启动Jenkins,但仍然无法执行。我的本地路径中已经有了Phing,因为我可以在任何地方调用phing命令。我还可以从终端调用与jenkins相同的phing命令,然后构建完成。然而,Jenkins的构建现在总是失败。任何帮助都是最好的!谢谢:)

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2014-07-05 04:45:09

更清楚地说,正如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文件夹。使用命令"cd“更改当前目录,并转到根目录的顶部,使用如下命令:

代码语言:javascript
复制
> cd ../

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

因此,假设您已经在usr/bin文件夹中,并且正在使用MAMP作为and服务器,命令是:

代码语言:javascript
复制
> ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing

如您所见,第一个参数是要符号链接的可执行文件的路径,第二个参数是要在其中创建符号链接的文件夹的路径。不要忘了附加新符号链接的名称!

完成后,再次尝试使用Jenkins构建:现在一切都应该正常工作了……希望如此!

一些故障排除:

1)您在错误的文件夹中创建了符号链接:使用"rm“删除文件

2)您没有权限:使用"sudo“作为超级管理员

代码语言:javascript
复制
> sudo ln /Applications/MAMP/bin/php/php5.5.10/bin/phing ./phing
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 21:12:58

jenkins用户的$PATH中没有安装phing脚本的目录。

将其符号链接到/usr/bin/中,您就应该设置好了。

票数 0
EN

Stack Overflow用户

发布于 2016-07-07 22:11:01

从以下错误消息中

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,所以它找不到find phing

我所做的是删除Invoke Phing targets并将构建添加为Execute Shell,然后在Command中添加/usr/local/bin/phing。这对我来说很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22180055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档