hlwz 2019-12-25
深入浅出Dubbo实战,一份文档让你玩转Dubbo框架
阿里架构师分享面试文档:Dubbo+Kafka+MyBatis+redis+Spring
自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
目标:
另外:也可以根据需要加入gitlab自动触发构建、自动化测试、钉钉通知、邮箱通知等需求
一键发布
一键回滚
----jenkins-exjenkins构建时使用到的目录------softwareJenkins安装目录--------master--------slave------backupjenkins备份目录--------master------module功能模块,每一类功能相关的文件放在对应的子文件夹中--------common----------script各模块公用的脚本------publish发布功能--------settings----------config 构建时配置文件。Eg: jenkins_profile.pubxml、项目配置文件等------------test-publish-template-app-config.json项目映射配置表----------scriptJenkinsjob构件时调用的脚本(方法封装)------source-code拉取的源代码存放目录--------test----------系统标识------------应用名------build-result构建产物(编译后的结果)--------test----------系统标识----------应用名------temp-file临时文件,job执行过程中产生的文件--------builder-history构建历史记录文件--------job-params构建过程中传递参数的文件------app-config应用对应的环境配置文件--------test----------系统标识------------应用名------other-sub-module……
jenkins job命名
Jenkins job中的脚本命名(eg:powershell)
规范约定
CICD过程主要在两个局域网中执行:构建服务器(开发内网)和部署服务器(生产内网)
想要实现使用一个job,通过下拉来” 发布|回滚”不同的项目,我们需要一个灵活的项目配置映射文件,类似如下:
配置文件选项含义从命名上可以识别,主要包括:环境、代码分支、部署路径、拷贝排除文件列表、项目信息(项目唯一标识、目录文件夹名、源代码路径、开发语言、集群节点信息…)等等
“一键发布”主要经历的阶段有:组合项目相关参数>>获取最新代码>>编译打包>>推送应用文件到服务器>>应用备份>>拷贝到Temp文件夹>>发布到部署目录
为了更好的实现和控制”一键发布”这些阶段,设计了如下输入参数:
实现思路:在”一键发布”时,将发布记录存到文件中,存储key为:p_app_key#2019-1219-1503。执行回滚时,选择要回滚的历史项目,先解析出p_app_key再获取项目配置信息,再回滚此项目的特定历史版本。
设计的输入参数如图:
一般软件公司对于软件的开发、测试、发布都有好几个环境,所以针对各个环境都会有对应的CICD流程,这边设计了一个简易的多环境CICD流程图,如下:
自动触发CICD还是手动触发CICD???,我认为: