今天了解到一个名为Configuration as Code (JcasC)的插件可以来创建Jenkins,这个插件允许你用 YAML 文件来定义 Jenkins 配置。一般我们在使用 Jenkins 的时候多少知道我们需要哪些插件或者其他配置来配合我们的 CI/CD 工作,使用 JcasC 插件,我们就可以将这些信息配置在可读性更高的 YAML 文件中。在本文中,我们会为大家演示如何使用Configuration as Code插件来创建 Jenkins,然后使用 Git、Maven 等工具来编写一个声明式的 Pipeline 去构建一个 Java 应用,另外还会展示如何使用Vault来管理一些私密数据。
![28011b12a97470c5edb0e2fb7b44c385.png](https://i-blog.csdnimg.cn/blog_migrate/bcfcf83b1f601b838edfe001facaaa02.jpeg)
使用 Vault
vault是一个密码/证书集中式管理工具,通过 HTTP-API 对外提供统一的密码访问入口,并且提供权限控制以及详细的日志审计功能。
一个系统可能需要访问多个带密码的后端:例如数据库、通过 API keys 对外部系统进行调用,面向服务的架构通信等等。要将众多系统中的用户和权限对应起来已经非常困难,加上提供密钥滚动功能、安全的存储后端还要有详细的审计日志,自定义解决方案几乎不太可能。这也就是 vault 存在的意义。
为了方便我们直接本地使用 Docker 镜像来运行:
$ docker run -d --name=vault --cap-add=IPC_LOCK -p 8200:8200 vault:1.1.3
我们这里使用的是最新版的 vault,需要我们使用 KV(Key-Value Secrets Engine)HTTP API V2 版本来访问数据,因为新版本的Configuration as Code插件使用的就在 V2 版本,运行容器后,我们可以从控制台日志中获取到用于对 Vault 进行身份验证的令牌:
$ docker logs -f vault==> Vault server configuration: Api Address: http://0.0.0.0:8200 Cgo: disabled Cluster Address: https://0.0.0.0:8201 Listener 1: tcp (addr: "0.0.0.0:8200