思路 {#思路}
整体思路很简单,拿虚机和容器做举例,这两种环境的思路都是一致的 服务部署在虚机或物理机上时:
- 开发提交代码
- Jenkins选择指定分支拉取代码
- Jenkins进行maven打包
- Jenkins将打包好的jar包传到目标服务器上
- Jenkins通过ansible去启动目标服务器上的服务
- 完成发版
服务部署在容器中时:
- 开发提交代码
- Jenkins选择分支拉取代码
- Jenkins进行maven打包
- Jenkins上进行docker镜像构建,把打好的jar包打进镜像里
- Jenkins将构建好的docker镜像推送到私有仓库
- Jenkins通过ansible在目标主机上执行docker-compose.yml或者在k8s主机上执行yaml文件完成发版
当然,上面还有回滚的功能,完整的一个图如下:
虚机完成部署 {#虚机完成部署}
说明: Jenkins、nexus、gitlab如何部署不再讲诉
创建一个pipeline风格的任务 {#创建一个pipeline风格的任务}
下面会使用到参数化构建,会用到几个插件,包括:choice parameter,Active Choices Parameter,Active Choices Reactive Parameter,Extended Choice Parameter等插件