Jenkins 凭证管理

举报
陈皮的JavaLib 发表于 2022/04/25 22:43:17 2022/04/25
【摘要】 在持续集成环境中,Jenkins 一般会和 Gitlab,Docker 等集成使用,和这些第三方应用交互需要密码,密钥,证书等凭证。

我是陈皮,一个在互联网 Coding 的 ITer,个人微信公众号「陈皮的JavaLib」关注第一时间阅读最新技术文章。

背景

在持续集成环境中,Jenkins 一般会和 Gitlab,Docker 等集成使用,和这些第三方应用交互需要密码,密钥,证书等凭证。

我们可以在 Jenkins 中安装用于管理凭证的插件,来管理这些需要密文保护的密码,例如 Gitlab 密码,Docker 私有仓库密码,证书等,这样可以方便 Jenkins 和这些第三方应用进行交互。

Credentials Binding 插件

Credentials Binding 插件允许将凭据绑定到环境变量,以便在各种构建步骤中使用。因为我安装 Jenkins 初始化时选择了安装推荐的插件,所以已经默认安装了此插件。

安装好插件,我们随便打开一个项目的配置,就可以在源码管理这里可以看到添加凭证的按钮了。

打开添加页面,如下所示:

凭证类型

支持添加5种类型的凭证,一般使用 Username with password 和 SSH Username with password 比较多。

  • Username with password:用户名和密码。
  • GitHub App:Github 相关。
  • SSH Username with password:SSH 账号和密钥,免密登录的方式。
  • Secret file:密钥文件。使用时 Jenkins 会将密钥文件复制到一个临时目录下,并且将文件路径赋值给一个变量,构建结束后,复制的文件会被删除。
  • Secret text:加密文本串,一般是 token 类型加密文本串,例如 Github 的 Api Token。
  • Certificate:证书文件形式。

账号密码方式拉取 Git 代码

首先需要在 Jenkins 上安装 Git 插件,然后在部署 Jenkins 的服务器上安装 Git 工具,因为我是使用 Docker 安装的 Jenkins,所以默认安装了 Git,如下所示:

[root@chenpihost ~]# docker exec -it 538de1b1b1f5 /bin/bash
bash-5.1$ git --version
git version 2.34.1

如果你的服务器上没有安装 Git,可以使用如下命令进行安装:

yum install -y git

Git 插件如下所示:

我们首先新建一个凭证,存储的是 Gitee 的账号和密码,如下所示:

保存好之后,我们就可以选择创建好的凭证,配置 Gitee 仓库项目地址,构建时就会自动拉取代码了。

SSH 密钥方式拉取 Gitee 代码

使用 SSH 密钥方式拉取 Gitee 上的代码,我们只需要在服务器上使用 root 用户生成公钥和私钥,将公钥配置到 Gitee 中,将私钥配置到 Jenkins 中。这样 Jenkins 就可以免密从 Gitee 上拉取代码了。

首先在 Jenkins 服务器上/root/.ssh目录下使用命令生成公钥和私钥,输入命令后一直按回车即可。

[root@chenpihost .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kvpxSqKCNgi6gH0b3y5AsC/ZG17KeuD7lxKLatqB21w root@chenpihost
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|  .              |
|   o             |
|  . .  .         |
|   =  o S        |
|oo+ *...         |
|O.o*EOo..        |
|*Oo=OB+=         |
|O+O=oo+oo        |
+----[SHA256]-----+

生成的公钥和私钥文件如下:

[root@chenpihost .ssh]# ls -l
total 8
-rw-------. 1 root root 1675 Apr 24 23:45 id_rsa
-rw-r--r--. 1 root root  397 Apr 24 23:45 id_rsa.pub

然后登录 Gitee,通过点击头像中的设置选项,进入后台,配置刚才生成的公钥文件里面的内容。

在 Jenkins 中新建 SSH 凭证,我们刚才使用 root 用户来生成公钥私钥,所以用户名填 root,私钥填我们生成的私钥文件中的内容。

这样我们就可以在 Jenkins 中的项目配置 SSH 凭证了,注意这时需要使用项目的 SSH 地址了,如下所示:

最后,我们构建项目时,可以在控制台输出中看到使用刚才配置的 SSH 凭证了。


本次分享到此结束啦~~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,您的支持就是我创作最大的动力!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。