1

我想要完成的工作 - 我想为 git 本身提供一个包装器,如果 git 命令失败(超时/网络问题),它将重试。

我有以下包装器的虚拟代码:

"C:\Program Files\Git\cmd\git.exe" %*
echo Success!

在更改 $PATH 并将文件另存为 git.cmd 并删除 git.exe 的路径后,如果我直接从 jenkins 调用任何 git 命令,它就会很好地工作:

script {
        bat 'git clone %REPO%'
       }

结果:

(...)
Updating files: 100% (5314/5314), done.
17:58:51 E:\jenkins\workspace\sandbox>echo Success! 
17:58:51 Success!

但是我希望它适用于使用jenkins git 插件 https://github.com/jenkinsci/git-plugin/blob/master/README.adoc的多分支管道

使用此插件运行结帐会导致:

18:48:46  Caused by: java.io.IOException: Cannot run program "git" (in directory "E:\jenkins\workspace\PR-XXXX"): CreateProcess error=2, The system cannot find the file specified

不知何故 git 插件知道,它缺少 git.exe 并且它没有像第一个示例中那样拾取 git.cmd 包装脚本。有什么建议吗,伙计们?

4

1 回答 1

1

Git 插件使用String getGitExe()它为 builtOn 节点返回 git exe,通常是“ Default”或“ jgit”。

所以首先检查,如“在 Jenkins 节点配置中指定工具位置的相关性”,是否可以在节点(代理)工具配置字段中指定git.cmd包装器的完整路径。Git (Default)


Wojtas.Zet在评论确认:

我查看了 git-plugin 的源代码,并意识到有一种方法可以在 jenkins 节点 GUI 中定义自定义 git 可执行文件

我在 Jenkins GUI - Jenkins ---> 节点 ---> NodeA 中单击了它(节点属性 ---> 工具位置 ---> 工具位置列表)

节点属性

于 2022-01-01T00:05:04.220 回答