Jenkins 管道在非 Windows 节点上调用 git.exe

Jenkins 管道在非 Windows 节点上调用 git.exe

我在 Windows 机器上设置了一个主控。

我在 Jenkins 上有几个节点,其中一个有 2 个标签:“系统项目”。

该节点实际上是一个普通的 Solaris 11.3 机器。

其他节点是普通的 Windows 机器(包括主节点)。

我的项目中有一个 Jenkinsfile,其中我将管道定义为:

pipeline {
  agent { label 'system && project' }

  environment {
    PATH='$PATH:/home/user/path'
  }
  stage('Build') {
    echo "Test PATH=$PATH"
  }
...

当我构建时,我看到日志中出现错误:

ERROR: Error cloning remote repo 'origin'
...
Caused by: java.io.IOException: Cannot run program "git.exe" (in directory "/remote/rootdir/workspace/ProjectName"): error=2, No such file or directory

构建被添加为 Jenkins Pipeline,而不是自由式项目或其他东西。目前唯一配置的是具有 SSH 凭据(rsa 密钥)的 GitLab repo。

但是为什么它会尝试在 Solaris 上调用“git.exe”?“节点”部分清楚地向我显示了这一点(https://服务器名称/计算机/) 事实上它是一个 SunOS (amd64)。

它是否真的在错误的节点上被调用?但是我看到创建了“/remote/rootdir/workspace/ProjectName”目录(它之前不存在,我甚至删除了它并重新启动了构建以确保 Jenkins 确实创建了它)。显然,情况并非如此,正如我最初怀疑的那样。

机器本身已安装 git - 我通过使用相同的 rsa 密钥手动克隆相同的 repo 进行了检查。

我做错了什么?我错过了什么?如何告诉 Jenkins 使用正确的 git?

请帮忙。

答案1

在这种情况下,问题是 jenkins master 已安装并在 Windows 上运行,但没有git针对 unix(solaris)/linux 进行任何配置。

我不得不去Manage Jenkins >> Global Tools Configuration >> Git >> Add Git添加它的另一个实例,其中“Git 可执行文件的路径”等于“git”,就像在这个问题的答案中所显示的那样:Jenkins 无法运行 git

以前只git配置了一个:"Git-win"->"git.exe"。现在有两个:"Git.win"->"git.exe" 和 "Git"->"git"。jenkins 在作业配置中有一个选项可以选择使用哪一个。因此,对于 Windows 作业,您可以选择 "Git-win";对于 unix(solaris)/linux 作业,您可以选择 "Git"。

相关内容