当前位置: 首页 > 知识库问答 >
问题:

触发Git读取,使用Jenkins重置

罗安和
2023-03-14

我有一个签入Git(和code.amazon.com)的Java包,我有一个Ant作业来触发该包。在Ant作业中,我已经为Git创建了一个宏定义,我正在执行Git fetchGit reset,以便每次触发Ant作业时都能获得最新的代码库。

当我使用Eclipse触发蚂蚁作业时,它正在工作。如果我运行的蚂蚁作业从终端使用ANT-Buildfilemy_buildfile.xml,它也在工作。

现在我已经在我的机器上安装了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)

此错误的部分原因可能是,my Jenkins无法作为主机的当前用户触发作业。

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

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

请让我知道,如果我错过了什么,如果有任何出路。如果我的方法不正确,如果你能分享一些其他想法,我会很高兴。

共有3个答案

西门经国
2023-03-14

stacktrace中出现以下错误:

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

这意味着git可执行文件要么没有安装,要么不在运行ANT的进程的命令路径中。

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

韩靖琪
2023-03-14

@博科博士是对的。。。我应该感谢他指引了正确的方向。我试图给出完整的答案。我们可以基于三个因素与JENKINS一起设置GIT。

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

希望上面提到的这些步骤能够解决这个问题。

尹昀
2023-03-14

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

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

Jenkins从gitHub克隆时出错

 类似资料:
  • 我正在管道中使用共享groovy库。我发现,当我合并到我的库时,会触发使用库的作业子集(但不是全部)。 我已经查看了共享库配置,并验证了“在作业最近的更改中包含@库更改”没有被选中。我梳理了日志,寻找线索,我发现看似随机的作业会被合并触发,但我还不能确定为什么这些特定的作业会运行。 我目前的想法是 /github-webhook/只是引发了太多的工作。 我正在使用groovy库插件的Jenkins

  • 我的目标是每当在 Git Repo B 上完成提交/拉取请求时,就触发 Git repo A 上的构建。Git repo 将所有管道代码作为单独的 groovy 代码,Git Repo b 具有由开发团队完成的应用程序代码。我想测试在管道代码中完成的提交触发应用程序代码中的构建的情况。如何使用带有管道的 Jenkins 2 来实现此目的?任何想法或方法都是非常值得赞赏的。 这是我在Git repo

  • 问题内容: 这是我遇到的问题-我需要每2小时触发一次作业构建,但前提是存在git commit(如果没有活动,则跳过)。我可以单独解决它们,但不确定如何一起解决- 有人有什么好主意吗?我唯一能想到的是一个cron作业,该作业每2小时检查一次,并且在此期间是否有git commit,请手动触发作业,但这看起来并不那么优雅。 任何好的想法表示赞赏。 问题答案: 将詹金斯设置为每2小时(0 * / 2

  • 在将新更新安装到Visual Studio后,我才开始出现此错误。出于某种原因,我的建筑现在都不会从詹金斯那里得到。已经做了几个小时了,似乎还不明白。 我从比特桶里取东西。 请帮助。 由工作区C:\Program Files(x86)\Jenkins\workspace\CA[WS-CLEANUP]中的计时器生成启动删除项目工作区。。。[WS-CLEANUP]已完成克隆远程Git存储库克隆存储库h

  • 问题内容: 我正在尝试为使用GitHub的项目设置Jenkins- ci。我已经使用适当的插件设置了Jenkins。我希望Jenkins仅在项目上的某人推动掌握时才运行构建脚本。到目前为止,我已经能够对其进行设置,以便任何人将其推送到任何地方都可以触发构建,但这太广泛了。我已经使用Git上的接收后服务挂钩完成了此操作。 我已经阅读了詹金斯(Jenkins)Wiki和一些教程,但是缺少此特定细节…可

  • 我有一个管道Jenkins作业,它按预期工作,配置了“GitHub hook trigger for GITScm polling”选项,以便在任何推送到git存储库时自动构建。 我已经将这个Jenkins URL与多个git回购挂钩,比如< code>repo-A、< code>repo-B、< code>repo-B。< br> Jenkins作业在任何代码推送至这些回购时自动触发。 但是我想