2015-05-29 33 views
0

我有一个在Git(和code.amazon.com)中签入的Java包,我有一个Ant作业来触发包。在Ant工作中,我为Git创建了一个macrodef,我正在执行git fetchgit reset,以便每次触发Ant作业时都可以获取最新的代码库。触发Git获取,使用Jenkins重置

当我使用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) 

部分原因可能是,我的詹金斯是不能够触发任务作为主机的当前用户:这是给下面的错误。

为了解决这个问题,我已经尝试采取以下步骤:

  1. 创建一个全球性的证书,并使用无密码的帐户(RSA ID)。
  2. 使用与系统相同的用户名登录到Jenkins。
  3. 安装Git和Git客户端插件并正确设置它们。

请让我知道如果我失去了一些东西,如果有任何出路。如果我的方法不正确,我会很高兴如果你能分享其他几个想法。

+0

什么是错误? –

+0

简单的git pull怎么不能做到这一点?为什么抓取和重置? – fge

+0

奥列格!我已经添加了错误。不管我是否做GIT拉或取。我无法调用任何GIT命令是真正的问题。 –

回答

0

@ Dr.Bokko是正确的......我应该感谢他指导正确的方向。我试图给出完整的答案。有三个因素,我们可以用JENKINS来设置GIT。

  • 第一因子:要访问GIT存储库,如果它是公共存储库,则不需要用户凭证。但对于访问受限的GIT存储库,我们需要确保传递适当的凭据。需要为Jenkins安装Git和Git客户端插件才能了解GIT操作。
  • 第二个因素:在运行脚本之前,添加一个构建步骤并导出所有作为shell脚本一部分所需的库。
  • 第三因素:最后检查Manage Jenkins部分中的系统配置并检查Jenkins认为的环境变量。如果它们不合适,则转到节点管理链接,并将所有环境变量作为KEY-VALUE对。

希望上面提到的这些步骤能够解决这个问题。出现在您的堆栈跟踪

2

我认为这是关系到git的配置上你的主人(或节点)

这个解决方案应该努力解决您的问题:

Jenkins giving error while cloning from gitHub

+0

非常感谢Dr.Bokko博士。但是我在做了很多打头之后已经发现了这个问题。 –

0

以下错误:

Cannot run program "git": error=2, No such file or directory 

这也就意味着,git的可执行文件未安装或不能在运行过程中ANT的命令路径。

这并不完全清楚你为什么从ANT给GIT打电话。通常詹金斯会先执行代码结帐(使用GIT),然后再打电话给ANT。我强烈建议调查这个替代工作流程,这可能需要为Jenkins安装一个GIT插件(不记得这是否是默认插件)。