You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

疑问

  1. Jenkins为何无法识别已安装的Git?
  2. 如何解决该问题并确保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工具

  1. 登录Jenkins后台,进入 Manage Jenkins → Global Tool Configuration
  2. 找到 Git 配置区域:
    • 如果没有已存在的Git安装项,点击 Add Git
    • 设置名称(比如System Git),然后在Path to Git executable中填写Docker容器内Git的实际路径
      • 可以在容器内执行which git获取路径,通常是/usr/bin/git
    • 取消勾选Install automatically(因为Git已经在容器内安装好了,不需要Jenkins自动安装)
  3. 点击 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:43:09