【问题标题】:Triggering a Git fetch, reset using Jenkins触发 Git 获取,使用 Jenkins 重置
【发布时间】:2015-08-12 00:55:24
【问题描述】:

我有一个在 Git(和 code.amazon.com)中检查的 Java 包,并且我有一个 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 pull 怎么不能解决问题?为什么要获取和重置?
  • 奥列格!!我添加了错误。我是否进行 GIT 拉取或获取都没关系。我无法调用任何 GIT 命令是真正的问题。
  • @Shubhankar Raj 你能从你的詹金斯机器上的终端运行 git 吗?
  • @OlegPavliv :是的..我是。

标签: java eclipse git ant jenkins


【解决方案1】:

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

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

Jenkins giving error while cloning from gitHub

【讨论】:

  • 非常感谢@Dr.Bokko。但是我在做了很多头撞之后已经弄清楚了这个问题。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2022-11-14
      • 1970-01-01
      • 2015-09-25
      • 2023-04-02
      • 2016-10-11
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      相关资源
      最近更新 更多