CI/CD介绍
- CI(持续集成)/CD(持续交付/持续部署)
 

发布流程设计

基础环境准备
docker服务器 与 Harbor
1  | Jenkins服务器 172.17.70.243  | 
- docker 服务器 能够访问 Harbor仓库
 
1  | [root@Jenkins ~]# docker login 172.17.70.242  | 
- 每台服务器安装JAVA环境
 
1  | # 解压  | 
部署 Git 服务器
- 部署仓库
 
1  | 1. 安装Git  | 
- 部署本地git 提交solo项目到git仓库
 
1  | 1. Jenkins服务器上安装git,下载solo项目有到服务器上,模拟开发上传到git仓库再  | 
创建 自定义虚拟网络 solo
1  | # 在docker服务器上创建  | 
solo 部署 mysql服务器
1  | docker run -d \  | 
修改 solo 源码中的数据库连接配置
1  | # 使用mysql容器名访问  | 
部署 Harbor 镜像仓库
1  | 1. 如果不使用https,docker服务器上别忘记配置信任  | 

Jenkins 安装
1  | # 配置jenkins 服务器 与git服务器免交互  | 
1  | # 使用jenkins容器  | 

构建基础镜像
1  | [root@Docker solo]# mkdir -p /opt/solo/  | 
1  | # 构建  | 

Jenkins基本配置
全局工具配置 git jdk maven



系统配置
1  | # jenkins 安装ssh插件  | 



1  | 别忘记保存  | 
Jenkins创建项目
安装 Maven 插件
1  | Maven Integration  | 

创建sola项目
1  | 1. 配置好源码管理 jenkins到git 免交互访问  | 



立即构建 测试一次
1  | cd /var/jenkins_home/workspace/solo_blog/target  | 


增加构建后操作
- 把项目打包到镜像 推送到镜像仓库
 
1  | # 构建后 到当前目录 写dockerfile文件 构建镜像并推送到公共仓库  | 



项目镜像传给 docker服务器 运行
- 使用项目构建后操作
 
1  | # 远程登录docker服务器,然后拉取项目镜像 run  | 

构建后查看
1  | [root@Docker ~]# docker ps  | 

测试maven 构建 solo项目
1  | # 仅仅是测试  | 


使用 pipeline 构建项目
把整体工作放在流水线中


基础使用 阶段演示

1  | node {  | 

使用pipeline的优点
- 项目发布可视化,明确阶段,方便问题处理
 - jenkinsfile文件管理整个项目的生命周期
 - jenkinsfile可以放到整个项目代码中版本管理
 - 使用pipeline 是ci/cd 最佳实践
 
1  | 1. 构建过程更加清晰可见  | 

配置 solo pipeline
丢弃旧的构建

代码版本参数

maven的配置
1  | 1. 我这个jenkins是容器启动的 挂载了本地的maven环境  | 
流水线脚本
1  | # 这里我发现 我的jenkins是容器安装的...没法指定node也没办法远程 我就吧docker先部署到本地了 ,后面我在想办法改回来  | 
1  | node { // 指定Slave标签 我这用的master 上面有git和maven环境  | 
1  | # 查看git配置  | 
模拟版本发布
1  | # 创建个文件 形成新版本代码  | 
开始构建



1  | # 容器启动  | 
1  | # 进入容器 查看是否存在新版本文件  | 
Consul 容器服务自动注册与发现
安装与部署
1  | 1、介绍  | 
1  | [root@Jenkins opt]# ls -l consul_0.9.2_linux_amd64.zip  | 
1  | # 后台启动 端口8500  | 
基础使用
1  | 查看集群信息:  | 
实现容器服务自动加入Nginx集群 Docker + Registrator + Consul
- consul-template:一个守护程序,用于实时查询consul集群数据,并更新文件系统上的任意数量的指定模板,生成配置文件,更新完成后可以选择运行任何Shell命令。
- 让它生成nginx配置文件 从集群中拿去 再去放入nginx里 执行重载
 
 - gliderlabs/registrator:检查容器运行状态自动注册和注销Docker容器的服务到服务配置中心。目前支持Consul、etcd和SkyDNS2。
- 检查容器服务状态、注销和配置服务中心 运行在docker主机,如果创建新的docker就捕捉出来,注册到Consul
 
 
1  | https://github.com/hashicorp/consul-template  | 
模拟在一台docker主机上跑多个nginx服务
让他们自动加入一个nginx LB上

registrator 容器部署
1  | # Docker主机启动注册器  | 
1  | [root@Docker ~]# docker run -d --name=registrator --net=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://172.17.70.243:8500  | 

- 他会自动将本地的容器 注册到 consul中
 
安装 nginx
1  | # 172.17.70.243  | 

安装 consul-template
- 需要与nginx同一台机器
 
1  | [root@Jenkins opt]# unzip consul-template_0.19.3_linux_amd64.zip  | 
生成配置文件 并 reload nginx
1  | [root@Jenkins consul_nginx]# cd /opt/consul_nginx  | 

