我有一个在Git(和code.amazon.com)中检查的Java包,并且我有一个Ant作业来触发该包。在Ant作业中,我为Git创建了一个macrodef,我正在执行git fetch
和git reset
,以便每次触发Ant作业时都可以获得最新的代码库。
当我使用Eclipse触发Ant作业时,它正在工作。如果我使用ANT –buildfile my_buildfile.xml
从终端运行Ant作业,它也可以工作。
现在我已经在我的机器上设置了Jenkins,并试图运行Ant文件。Jenkins无法触发Ant文件中的Git作业。它给出以下错误:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:81: The following error occurred while executing this line:
/rhel5pdi/workplace/bangshis/EpubYJConvPerfWorkspace/src/EpubYJConvPerfLinux/Jenkins_Linux_build_Global.xml:99: Execute failed: java.io.IOException: Cannot run program "git": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
此错误的部分原因可能是,我的Jenkins无法以主机当前用户的身份触发作业。
为了解决这个问题,我尝试了以下步骤:
- 创建全局凭据并使用无密码帐户(RSA ID)。
- 使用与system相同的用户名登录Jenkins。 安装Git和Git客户端插件并正确设置。
请让我知道,如果我错过了什么,如果有任何出路。如果我的方法不正确,我希望你能分享一些其他的想法。
我认为这与你的主(或节点)上的git配置有关
这个解决方案应该可以解决你的问题:
Jenkins在从gitHub克隆时给出错误
@Dr。Bokko是对的……我应该感谢他指引了我正确的方向。我想给出一个完整的答案。基于以下三个因素,我们可以使用JENKINS进行GIT的设置。
- 第一个因素:要访问GIT存储库,如果它是公共存储库,则不需要用户凭据。但是对于访问受限的GIT存储库,我们需要确保传递了正确的凭据。Jenkins需要安装Git和Git Client插件才能理解Git的操作。第二个因素:在运行脚本之前,添加一个构建步骤,并将所需的所有库导出为shell脚本的一部分。
- 第三个因素:最后检查管理Jenkins部分的系统配置,并检查Jenkins所考虑的环境变量。如果不合适,则转到节点管理链接,并将所有环境变量作为KEY-VALUE对。
希望上述步骤能解决问题。
在您的stacktrace中出现以下错误:
Cannot run program "git": error=2, No such file or directory
这意味着git可执行文件要么没有安装,要么不在运行ANT的进程的命令路径中。
从ANT调用GIT的原因并不完全清楚。通常,Jenkins会先执行代码的签出(使用GIT),然后调用ANT。我强烈建议你研究一下这个替代的工作流程,它可能需要为Jenkins安装一个GIT插件(记不清这是不是默认的插件了)。