1. 简介

Jenkins 支持配置用于与第三方系统(如 Git 托管平台)交互的凭据。一旦配置完成,我们就可以在 Jenkins Pipeline 中引用这些凭据,使 Jenkins 服务器能够访问这些第三方服务。

本文将介绍如何在 Jenkins Pipeline 中使用 Git 凭据进行 git checkout 操作。我们将涵盖两种凭据类型:用户名+密码 和 SSH 私钥方式。

2. 在 Jenkins 中创建 Git 凭据

在使用凭据之前,我们首先需要在 Jenkins 中创建它们。以下是创建凭据的完整流程。

2.1. 进入 “Global Credentials” 页面

要创建凭据,我们需要进入 Jenkins 的凭据管理界面:

  • 点击左侧菜单中的 “Manage Jenkins”:

Manage Jenkins 菜单

  • 在 “Security” 菜单下,点击 “Credentials”:

安全菜单下的 Credentials

  • 在 “Stores scoped to Jenkins” 下,点击 “System”:

Jenkins 作用域的存储

  • 点击 “Global credentials (unrestricted)”:

Global Credentials Unrestricted

  • 点击右上角的 “+ Add Credentials” 按钮:

添加凭据按钮

2.2. 创建用户名+密码凭据

点击 “+ Add Credentials” 后,会进入凭据填写页面:

空白凭据页面

  • Kind:选择 “Username with password”
  • Scope:保持默认 “Global”
  • Username:填写 Git 账户用户名
  • Password:填写 Git 密码或 Personal Access Token(PAT)
  • ID:建议填写一个有意义的 ID,方便后续在 Pipeline 中引用
  • Description:可选填写描述信息

填写完成后点击 “Create” 创建凭据:

填写完成的凭据页面

2.3. 创建 SSH 用户名+私钥凭据

如果你更倾向于使用 SSH 凭据来访问 Git 仓库,可以创建 “SSH Username with private key” 类型的凭据。

步骤如下:

  1. 在 Jenkins 服务器上生成 SSH 密钥对:

    $ ssh-keygen
    
  2. 将公钥添加到 Git 托管平台(如 GitHub)账户中:

    GitHub 地址为:Settings > SSH and GPG Keys > New SSH Key

  3. 回到 Jenkins,重复上面的步骤进入添加凭据页面:

    • Kind:选择 “SSH Username with private key”
    • Scope:保持默认 “Global”
    • Username:填写 SSH 用户名(如 git)
    • ID:填写自定义 ID,便于后续引用
    • Description:可选
  4. 点击 “Enter directly” 并点击 “Add” 按钮:

    私钥字段

  5. 将生成的私钥内容粘贴进去(不带 passphrase 更方便):

    私钥输入框

  6. 最后点击 “Create” 完成创建:

    Passphrase 输入框与 Create 按钮

⚠️ 注意:使用 SSH 凭据时,需要确保 Jenkins 服务器已信任目标 Git 服务器的主机指纹。否则 git checkout 会失败。

3. 在 Jenkins Pipeline 中使用 Git 凭据进行 checkout

在使用 Git 凭据前,请确保已安装 Jenkins 的 Git 插件。

3.1. 使用用户名+密码凭据

#!/usr/bin/env groovy
pipeline {
    agent any
    stages {
        stage('Git Checkout') {
            steps {
                script {
                    git branch: 'main',
                        credentialsId: 'github-credentials',
                        url: 'https://github.com/username/repository.git'
                }
            }
        }
    }
}
  • credentialsId:填写之前创建的凭据 ID
  • url:填写 Git 仓库的 HTTP 地址
  • branch:可替换为你想 checkout 的分支名

3.2. 使用 SSH 凭据

#!/usr/bin/env groovy
pipeline {
    agent any
    stages {
        stage('Git Checkout') {
            steps {
                script {
                    git branch: 'main',
                        credentialsId: 'github-ssh-credentials',
                        url: '[email protected]/username/repository.git'
                }
            }
        }
    }
}
  • url:必须是 SSH 地址
  • Jenkins 服务器需配置好 known_hosts,或设置 Git 主机验证策略为 “Accept first connection”

⚠️ 踩坑提醒:如果使用 SSH 凭据时 Jenkins 报错 Host key verification failed,说明 Jenkins 无法验证远程 Git 服务器的主机指纹。解决方法:

  • 将 Git 服务器的公钥指纹添加到 Jenkins 的 known_hosts 文件中
  • 或在 Jenkins 的 Git 插件设置中选择 “Accept first connection”

4. 总结

本文介绍了如何在 Jenkins 中创建两种类型的 Git 凭据:

✅ 用户名+密码
✅ SSH 用户名+私钥

并展示了如何在 Jenkins Pipeline 中使用这些凭据进行 git checkout 操作。

⚠️ 注意事项

  • 使用 SSH 凭据时务必配置好 known_hosts 或 Git 主机验证策略
  • 凭据 ID 建议自定义,便于后续维护和引用

掌握这些操作后,你就可以在 Jenkins Pipeline 中安全地访问私有 Git 仓库了。


原始标题:Jenkins Pipeline – Git Checkout With Credentials