目录
- 一、今天想干啥?
- 二、今天干点啥?
- 三、今天怎么干?
- 3.1、常规打法
- 3.2、不走寻常路
- 四、开干吧!
- 4.3.1、GitLab
- 4.3.2、Jenkins
- 4.3.3、Harbor
- 4.1、工具链部署
- 4.2、网络配置
- 4.3、验证工具链部署结果
- 4.4、流水线配置
- 4.5、验证流水线配置结果
- 五、总结
请注意这里的关键词:快速(有多快呢?我希望这个时间是5分钟 。)
我知道你想要一条闪闪亮的工具链来支撑你的应用 CICD 流程,你想要“最佳实践” , 你想要既灵活又简单还易维护 , 你有一肚子的既要,又要,还要……
行,今天我就给你一个“既有,又有,还有”的《GitLab + Jenkins + Harbor 落地方案》 。
二、今天干点啥?今天我们要搭建一条怎样的工具链呢?且看效果图:

文章插图
- 首先我们需要完成 GitLab、Jenkins 和 Harbor 三个工具的部署;
- 接着我们需要在 GitLab 上创建一个代码库,并且在 Jenkins 上创建相应的流水线,这个流程最好也自动化(确实可以自动化);
- 然后适当地配置这三个工具,实现如下 CI 流程:
- 当用户推送代码到 GitLab,也就是 GitLab 上相应代码库产生 push 或者 merge 事件的时候,这个事件能够自动触发 Jenkins 上的流水线执行;
- Jenkins 上流水线执行的结果能够回显到 GitLab;
- Jenkins 上完成了编译、构建等等流程后,最终制品是一个容器镜像 , 这个镜像可以被推送到 Harbor 上 。
当然我也知道多数情况下你并不需要考虑 GitLab 如何部署,因为95% 的概率你们公司已经有可用的 GitLab 了,或者你们考虑使用 SaaS 版的 GitLab 。外加 Kubernetes 上部署 GitLab 的复杂度不低,运维成本高,所以 , GitLab 的“高可用部署”不是本文重点,我们把重点放在如何部署和配置好 Jenkins + Harbor,然后对接 GitLab,走通一个 CI 流程 。
综上,今天我准备 sale 的部署模式是:
- GitLab:Docker
- Jenkins:Helm(Kubernetes)
- Harbor:Helm(Kubernetes)
听起来就复杂 。
这个流程不应该让所有人都重头体验一遍,被折磨一遍 。假如有人已经研究了一遍这些工具的部署模式 , 并且将这个流程代码化,做一个工具出来,并且开源免费,让大家“开箱即用”,那该多好!
3.2、不走寻常路没错,你已经猜到了 , 我不打算按常理出牌,我要找一个能够管理 DevOps 工具链的工具!
有这种工具?还真有!
DevStream 就干这事 。DevStream 是啥?一句话:一个 DevOps 工具链管理器 。
我们看下 DevStream 如何完成这三个工具的落地:

文章插图
DevStream 官网里有这么一个图 。所以,这个花里胡哨的 DevStream 做了啥?
从上面的流程图,结合官方文档和源码,大致我可以猜到它的工作流和原理:
- DevStream 首先将 GitLab、Jenkins、Harbor 等工具的部署流程代码化 , 通过插件的形式支持这些工具的安装部署;
- 工具部署完成后 , DevStream 会从 SCM(GitHub 或者 GitLab 都可以)下载一个项目脚手架模板,模板源码在这里;这个模板支持高度自定义,本质就是将一些需要自定义的内容抽离成变量,供用户自由渲染,然后批量生产项目脚手架;
- 接着 DevStream 根据用户给定的配置文件渲染模板库,然后将其上传到 SCM(GitHub 或者 GitLab 都可以);
- 然后 DevStream 会配置 Jenkins , 安装一些必要的插件等,用户支持最终的 Pipeline 顺利执行;
推荐阅读