Jenkins 凭证管理
我是陈皮,一个在互联网 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 凭证了。
本次分享到此结束啦~~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,您的支持就是我创作最大的动力!
- 点赞
- 收藏
- 关注作者
评论(0)