目录
Jenkins简介
Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。
使用Maven(Ant)等来实现lava项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。
在未使用jenkins作为持续集成之前,我是如何部署的了:
拉去相应分支代码到本地,并且需安装(nodejs,jdk,manve,idea,vs)等环境
前端打包 -第一步:安装环境(npm install,npm run build:prod),第二步:备份已发布的dist到相应备份分件 第三步:上传打包好的dist文件到部署路径.
后端打包-第一步:拉取代码并修改application-prod.yml文件(毕竟安全起见数据库等线上连接信息不让所以开发人员可见),第二步:执行数据库语句同步,第三步:执行 mvn clean package -P prod -DskipTests 第四步:上传*.jar或*.war或*.zip包到指定部署目录,然后执行
ps -ef|grep *.jar
kill -9 1111
nohup java -jar *.jar >aa.log 2>&1 &
如此的体力活,就这样周而复始的重复着,最终干不动.....
目标及愿景
解放重复体力劳动
解放重复的体力劳动(自动化部署可以解放集成、备份、搭建环境等重复性工作,减少人为疏忽带来的一些错误(如:少执行了一行sql同步语句。忘记备份上一个已部署的包,导致上线无法回滚,造成服务长时间宕机,用户等待。部署的清单难以管理等核心及重要的问题得以解决。
早部署、早测试、早交付
尽快的获取代码的变更,更早的进行测试,就能更快及更早的修复问题,而不是等到所有问题及开发完成。水滴石川,而不是一刀切开
减少人为的错误
可能出错的,终究会出错。人与机器的比较是,人是有感情的,而机器是按预定义的指令运行(不考虑机房火灾等非正常情况),人容易犯错误,而机器较少的几率犯错。故此,我们还不如把部署的重复工作,用工具及编写相应的脚本来代理实现。
减少测试及市场干巴巴的等待
测试及市场问到的时候,不是那句-稍等一会,马上就好,快了。而是这句-某的,某个bug及问题已处理,已集成,可以测试。
更健壮的代码
搭配一些代码检测插件,有助于代码的Code review.对不规范的代码进行持续的改进,而不是等改不了的时候,干脆不改,操翻从干。