Jenkins + Harbor 容器化持续集成

Photo by Rory McKeever on Unsplash

使用 Jenkins + Harbor 持续集成方案可以在代码仓库有提交时自动对代码进行编译并打包成容器,上传到本地 Harbor,之后 Jenkins 执行 SSH 命令远程控制生产环境从 Harbor 拉取最新容器并运行。

安装 Jenkins 与 Harbor

两者安装文档比较详细。目前主流都是通过 docker 进行部署。

流水线配置

Jenkins 流水线是将一系列动作放在一个配置中完成。在我的场景中我希望做到两点。一是流水线能够由 Git 仓库自动触发动作,自动完成代码的编译和镜像的制作上传。二是在流水线脚本中能够使用 SSH 命令远程访问生产环境主机做拉取容器镜像的操作。

自动触发

首先配置 Github 项目地址,然后构建触发器,采用 crontab 语法进行定时轮询。这里每分钟轮询一次。

流水线脚本

在流水线中使用 SSH 执行某些操作需要使用到 SSH-STEPS-PIPELINE 插件。在插件管理中安装完毕之后,就可以在流水线脚本中使用它。

基于安全考虑,我们在根据一般的 SSH 免密流程复制 Jenkins 主机的公钥到生产环境主机。

然后使用 Jenkins p凭据管理配置好 SSH 免密登陆所需的私钥。这边凭据 ID 为 test。

最后在流水线脚本中可以采用如下方式使用这个配置好的凭据(SSH-STEPS-PIPELINE 插件提供的函数)。credentialsId 为上面指定的 test。

拉取镜像

完成前面两步之后,拉取镜像就会显得容易很多。我们只要在流水线脚本中远程执行登录和拉取指令即可。

完整的流水线脚本可以在 gist 上查看。

(完)

发表评论

电子邮件地址不会被公开。 必填项已用*标注