跳到主要内容

Jenkins 凭证管理

Jenkins是一个广泛使用的持续集成和持续交付(CI/CD)工具,它允许开发团队自动化构建、测试和部署流程。在自动化流程中,Jenkins经常需要访问敏感信息,如密码、API密钥、SSH密钥等。为了安全地存储和使用这些信息,Jenkins提供了凭证管理功能。

本文将详细介绍Jenkins凭证管理的概念、使用方法以及实际应用场景,帮助初学者快速掌握这一重要功能。


什么是Jenkins凭证管理?

Jenkins凭证管理是一种机制,用于安全地存储和管理敏感信息。这些信息可以是:

  • 用户名和密码
  • API令牌
  • SSH私钥
  • 证书文件
  • 其他敏感数据

通过凭证管理,Jenkins可以在构建过程中安全地访问这些信息,而无需将它们硬编码在脚本或配置文件中。


Jenkins 凭证的类型

Jenkins支持多种类型的凭证,以下是常见的几种:

  1. 用户名和密码:用于存储用户名和密码组合。
  2. Secret文本:用于存储单个敏感字符串,如API密钥。
  3. SSH用户名和私钥:用于存储SSH连接的私钥和用户名。
  4. 证书文件:用于存储证书文件及其密码。
  5. Docker Hub凭证:用于存储Docker Hub的用户名和密码。

如何创建和管理凭证

1. 访问凭证管理页面

在Jenkins仪表板中,点击左侧菜单的Manage Jenkins,然后选择Manage Credentials。在这里,您可以查看、添加和删除凭证。

2. 添加新凭证

点击Add Credentials按钮,选择凭证类型并填写相关信息。例如,添加一个用户名和密码凭证:

  • Kind:选择“Username with password”。
  • Scope:选择凭证的作用范围(全局或特定项目)。
  • Username:输入用户名。
  • Password:输入密码。
  • ID:为凭证指定一个唯一ID(可选)。
  • Description:添加描述信息(可选)。

3. 在Pipeline中使用凭证

在Jenkins Pipeline中,您可以通过withCredentials块安全地使用凭证。以下是一个示例:

groovy
pipeline {
agent any
stages {
stage('Example') {
steps {
withCredentials([usernamePassword(credentialsId: 'my-username-password', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh 'echo "Username is $USERNAME"'
sh 'echo "Password is $PASSWORD"'
}
}
}
}
}

在这个示例中,my-username-password是凭证的ID,USERNAMEPASSWORD是环境变量,用于存储凭证中的用户名和密码。


实际应用场景

场景1:使用SSH密钥部署代码

假设您需要通过SSH将代码部署到远程服务器。您可以将SSH私钥存储在Jenkins凭证中,并在Pipeline中使用它:

groovy
pipeline {
agent any
stages {
stage('Deploy') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: 'my-ssh-key', keyFileVariable: 'SSH_KEY')]) {
sh 'scp -i $SSH_KEY target/myapp.jar user@remote-server:/opt/myapp/'
}
}
}
}
}

场景2:使用API密钥调用外部服务

如果您需要在构建过程中调用外部API,可以将API密钥存储为Secret文本凭证:

groovy
pipeline {
agent any
stages {
stage('Call API') {
steps {
withCredentials([string(credentialsId: 'my-api-key', variable: 'API_KEY')]) {
sh 'curl -H "Authorization: Bearer $API_KEY" https://api.example.com/data'
}
}
}
}
}

总结

Jenkins凭证管理是确保敏感信息安全的关键功能。通过合理使用凭证管理,您可以避免将敏感信息硬编码在脚本中,从而提高系统的安全性。本文介绍了凭证的类型、创建方法以及在Pipeline中的使用方式,并通过实际场景展示了其应用。


附加资源与练习

资源

练习

  1. 在Jenkins中创建一个SSH私钥凭证,并在Pipeline中使用它连接到远程服务器。
  2. 尝试将API密钥存储为Secret文本凭证,并在Pipeline中调用外部API。
  3. 探索其他凭证类型(如证书文件)的使用方法。

通过实践这些练习,您将更深入地理解Jenkins凭证管理的强大功能。