我在 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"。