Jenkins Pipeline报错:所选Git安装不存在的原因与解决
Jenkins Pipeline Git识别问题排查与解决
问题场景
我在Docker容器中运行Jenkins,容器内已安装Git,配置从SCM拉取脚本的Pipeline时出现错误,执行日志如下:
Obtained Jenkinsfile from git https://github.com/Sidharth-Singh10/testscore [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /var/jenkins_home/workspace/trail2 [Pipeline] { [Pipeline] stage [Pipeline] { (Declarative: Checkout SCM) [Pipeline] checkout Selected Git installation does not exist. Using Default The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/trail2/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/Sidharth-Singh10/testscore # timeout=10 Fetching upstream changes from https://github.com/Sidharth-Singh10/testscore > git --version # timeout=10 > git --version # 'git version 2.39.2' > git fetch --tags --force --progress -- https://github.com/Sidharth-Singh10/testscore +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/main^{commit} # timeout=10 Checking out Revision 1f42c4a68d6dce1797bc27aaf709e61118dd74b3 (refs/remotes/origin/main) > git config core.sparsecheckout # timeout=10 > git checkout -f 1f42c4a68d6dce1797bc27aaf709e61118dd74b3 # timeout=10 Commit message: "Create Jenkinsfile" First time build. Skipping changelog.
使用的Jenkinsfile内容:
pipeline { agent any environment { DOCKER_IMAGE = 'sidharthsingh7/ss_backend' DOCKER_TAG = "0.0.1.RELEASE" } stages { stage('Checkout') { steps { git scm } } stage('Build') { steps { script { sh 'docker build -t $DOCKER_IMAGE:$DOCKER_TAG .' } } } stage('Test') { steps { script { sh 'docker run --rm $DOCKER_IMAGE:$DOCKER_TAG npm test' } } } stage('Push to Docker Hub') { steps { script { sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin' sh 'docker push $DOCKER_IMAGE:$DOCKER_TAG' } } } } }
环境信息:
- Jenkins运行在Docker容器内
- Git插件已安装并保持最新
- Git版本为2.39.2
核心问题
Pipeline执行失败,提示:Selected Git installation does not exist. Using Default. The recommended git tool is: NONE.
疑问
- Jenkins为何无法识别已安装的Git?
- 如何解决该问题并确保Jenkins使用已安装的Git版本?
已尝试步骤
- 确认Git插件已安装且为最新版本
- 验证Docker容器内Git可正常访问(
git --version返回2.39.2) - 检查Jenkins中Git安装路径配置
解决方案
1. 问题原因分析
出现该提示的核心原因是Jenkins的Git工具配置存在问题:
- Jenkins全局配置中没有正确注册已安装的Git路径,导致系统找不到指定的Git安装实例,只能 fallback 到默认查找方式
- 新版本Jenkins的Git插件推荐使用
Git Tool配置,而不是旧的Git installations,如果未配置则会提示recommended git tool is: NONE
2. 具体解决步骤
步骤一:配置Jenkins全局Git工具
- 登录Jenkins后台,进入 Manage Jenkins → Global Tool Configuration
- 找到 Git 配置区域:
- 如果没有已存在的Git安装项,点击 Add Git
- 设置名称(比如
System Git),然后在Path to Git executable中填写Docker容器内Git的实际路径- 可以在容器内执行
which git获取路径,通常是/usr/bin/git
- 可以在容器内执行
- 取消勾选
Install automatically(因为Git已经在容器内安装好了,不需要Jenkins自动安装)
- 点击 Save 保存配置
步骤二:指定Pipeline使用配置好的Git工具
在Jenkinsfile中添加tools块,指定使用刚才配置的Git工具名称:
pipeline { agent any tools { git 'System Git' // 这里填写你在全局配置中设置的Git名称 } environment { DOCKER_IMAGE = 'sidharthsingh7/ss_backend' DOCKER_TAG = "0.0.1.RELEASE" } stages { // 后续stage保持不变 stage('Checkout') { steps { checkout scm // 推荐使用checkout scm代替git scm,更符合Declarative Pipeline规范 } } // ... 其他stage } }
注意:原Jenkinsfile中的
git scm可以替换为checkout scm,这是Declarative Pipeline的标准写法,兼容性更好。
步骤三:验证配置是否生效
重新触发Pipeline构建,查看日志:
- 不再出现
Selected Git installation does not exist. Using Default的提示 - 日志中会显示使用了配置的Git工具名称
3. 额外排查点
如果配置后仍然有问题,可以检查:
- Docker容器内的Git路径是否正确,确保Jenkins容器用户有权限访问该路径
- Jenkins的Git插件是否兼容当前Jenkins版本,必要时降级或升级插件
- 确认Jenkins全局配置中的Git工具名称与Jenkinsfile中指定的完全一致
内容的提问来源于stack exchange,提问作者user25805114
相关产品推荐
相关产品推荐

