项目要求:
在公司内部署一套CI/CD平台,用来实现自动化发版到不同环境
要求:
● 两套环境,一套做开发环境,一套做测试环境
● 结合docker,实现容器化,并实现统一编排
● 开发者只负责提交源码
● 实现半自动上线到正式环境过渡到全自动上线
● 不同环境使用不同的域名,准备不同的配置文件
● 同种开发语言使用一套部署脚本
● 开发人员绑定hosts或使用内部DNS来自动解析
● 部署脚本模块化
● 因项目不同,会有定时任务和守护进程
项目结果
● 准备两台虚拟机并安装docker。开始着手准备Dockerfile来构建基础镜像,在制作完成镜像之后上传到内网镜像仓库。公司项目分为php、nodejs、go三种语言。按照每种语言开始编写脚本.
● 脚本实现功能:自动判断部署环境获取不同配置文件后对项目进行构建编译
● 镜像保存之后开始调用部署脚本,通过执行docker-compose拉取相应的镜像,将项目运行起来
● 项目运行后会有定时任务和项目守护进程同时存在
在gitlab中使用webhook钩子将分支PUSH信息发送给jenkins;jenkins收到POST信息之后开始根据规则进行过滤,对于符合条件的请求调用pipeline程序执行Jenkinsfile,每一个环境都有一个Jenkinsfile