触发 Git 提取,使用 Jenkins 重置

Triggering a Git fetch, reset using Jenkins

我有一个 Java 包,它已在 Git(和 code.amazon.com)中签入,并且我有一个 Ant 作业来触发该包。在 Ant 作业中,我为 Git 创建了一个宏定义,并且正在执行 git fetchgit 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 无法以主机的当前用户身份触发作业。

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

  1. 创建全局凭据并使用无密码帐户(RSA ID)。
  2. 使用与系统相同的用户名登录 Jenkins。
  3. 正在安装 Git 和 Git 客户端插件并适当地设置它们。

如果我遗漏了什么,以及是否有任何解决办法,请告诉我。如果我的方法不正确,如果你能分享一些其他的想法,我会很高兴。

我认为这与您的主控(或节点)上的git配置有关

此解决方案应该可以解决您的问题:

Jenkins giving error while cloning from gitHub

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

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

希望上述步骤可以解决问题。

您的堆栈跟踪中出现以下错误:

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

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

不完全清楚您为什么要从 ANT 呼叫 GIT。通常 Jenkins 会先执行代码检出(使用 GIT),然后调用 ANT。我强烈建议研究这个替代工作流程,这可能需要为 Jenkins 安装 GIT 插件(不记得这是否是默认插件)。