Jenkins 把 GitHub 项目做成 Docker 镜像
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
本文是《Jenkins 流水线(pipeline)实战》系列的第三篇,前面已对 Jenkins 流水线有了基本认识,也试过从 GitHub 下载 pipeline 脚本并执行,今天的实战是编写一段 pipeline 脚本,该脚本的作用是从 GitHub 下载一个 Java 项目(Maven 构建的),然后编辑构建此项目,并将构建结果制作成 Docker 镜像并且推送到私有镜像仓库;
系列文章地址
环境信息
为了快速完成 Jenkins 部署,本次实战用到了 Docker,请在实战前准备好以下环境:
操作系统:Ubuntu 18.04.2 LT
Jenkins:2.176.3
Docker:19.03.1
私有镜像仓库:Harbor 1.9.0
实战内容简介
今天的实战功能如下图所示:
关于 Docker 私有镜像仓库 Harbor
构建好的 Docker 镜像,会被推送到 Docker 镜像仓库 Harbor,此仓库是我自己在本地搭建的,详细搭建步骤请参考《CentOS部署Harbor镜像仓库》
如果您有 hub.docker.com 网站的账号,也可以直接将镜像推送到此网站,这样大家都能使用到您制作的镜像了。
关于本次用到的 GitHub 项目
本次实战会将一个 GitHub 上的项目先编译,再构建成 Docker 镜像,我这边准备了一个基于 Maven 构建的 SpringBoot 项目,这是个 Hello world 级别的工程,唯一特别之处是 pom.xml 中用到了 Jib 插件,用来将 SpringBoot 项目构建成 Docker 镜像。
该项目的源码可以从 GitHub 上下载,地址和链接信息如下表所示:
这个 git 项目中有多个文件夹,本章的应用在 hellojib 文件夹下,如下图所示:
来看看此工程的 pom.xml,重点是 Jib 插件部分,如下所示:
使用 Jib 将 SpringBoot 项目构建成 Docker 镜像的更多信息,请参考《Docker与Jib(maven插件版)实战》;
用私有的 GitHub 仓库来实战
考虑到实际工作中大多数源码都没有对外公开,因此我这里也建了个私有 GitHub 仓库,地址是:https://github.com/zq2599/pipeline.git ,将前面提到的的 hellojib 工程所有源码都放入此仓库;
pipeline 下载私有仓库的源码时需要身份验证,验证方式后面会说到。
这个私有仓库里面并不只有 hellojib 一个工程,仓库的根目录下的 hellojib 目录里面才是构建镜像会用到的 Maven 工程:
创建 Jenkins 任务
创建一个名为 build-image 流水线任务:
接来下我们要借助 Jenkins 提供的语法工具来生成下载 GitHub 的 pipeline 代码,如下图,在设置任务的页面点击红框中的 流水线语法 按钮:
现在进入的页面是 Jenkins 辅助我们编写 pipeline 脚本的地方,请按照下图操作:
在弹出的窗口配置一个保存了 GitHub 账号和密码的秘钥配置项,请按照下图的数字顺序操作:
如下图红框所示,在下拉菜单中选择刚才创建的秘钥配置:
此时可以发现之前的红色错误提示已经消失(因为鉴权通过了),点击下图红框中的按钮即可生成 pipeline 源码:
完整的 pipeline 脚本内容如下,其中 Checkout 阶段从 GitHub 下载的那段脚本,就是上图中自动生成的:
将上面的 pipeline 脚本填写到 build-image 任务的流水线脚本输入框中,如下图:
点击下图红框中的 立即构建 即可开始执行流水线任务:
如果配置无误的话任务可以执行成功,如下图,每个阶段的执行结果和耗时都展现出来了:
如果您的任务构架失败了,点击下图红框中的小圆球,会打开任务执行的详细日志,用来检查错误原因:
登录 Harbor 网站,可以看到推送过来的镜像:
把 pipeline 脚本放在 GitHub 上
今天的实战中,编写的 pipeline 脚本是保存在任务的设置中的,还记得 《让Jenkins执行GitHub上的pipeline脚本》一篇的内容么?您可以尝试将今天的 pipeline 脚本存放在 GitHub 上,这样从构建脚本到业务项目都实现了版本控制,在多人开发阶段更加实用。
至此,基于 pipeline 操作的 GitHub 项目的实战就完成了,如果您正在寻求容器化环境的 CI && CD 方案,愿本文能给您提供一些参考。
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/5e4e8067db17f1abad83ba991】。文章转载请联系作者。
评论