1.Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
(1)什么是持续集成
- 自动检查源代码
- 自动编译打包
- 自动发布
- 自动测试
(2)为什么要持续集成
- 节约成本
- 减少人为出错概率
- 尽早发现问题
- 降低缺陷进入下一环节的几率
2.Jenkins+Git
和git工具进行集成,对源代码进行静态扫描
过程:
CI1 预编译
触发条件:提交PR后自动触发,任何PR都会触发—>git主动通知jenkins做自动编译
PR自动编译的命名规则:Gitkey+扩展名+PR_FOR_ALL
内容:单元测试,编译
用途:merge代码的参考依据,检查待提交代码是否编译通过
CI2 主干代码有变动触发
触发条件:提交到master的PR合并后,自动触发
内容:单元测试,编译,源代码静态检查
CI3 测试前置
触发条件:在Master分支中,由测试人员和研发经理一起判断是否提前转测,再由测试人员手动触发
内容:编译,打包,部署测试环境
可以做到单个功能测试,即测试前置
CI4 回归测试
提交到Release/SIT的PR合并后,由测试人员检查提交的数据库和配置文件是否准备完成并手动触发
内容:单元测试,编译,打包,部署测试环境
3.预处理操作步骤:
①在jenkins中,选择相应项目——New Item,输入名字(命名规则同上)——构建一个自由风格的项目——点击“OK”
②进入配置界面,【General】选择相应的JDK版本——源码管理:Git(要做的相应配置如下图)——点击“保存”——测试一下:点击Jenkins左侧栏的“立即构建”,构建完成后,点击“工作空间”可以看到拉下来的代码
③继续对编译做配置,点击Jenkins左侧栏的“配置”——【构建】点击”增加构建步骤“(因为是maven项目,增加maven构建插件),选择Invoke top-level Maven targets,maven版本选择maven-linux,Goals输入“-U clean compile”(-U检查是否有最新的包,clean删除历史构建,compile只做编译不做打包)——点击“保存”——点击Jenkins左侧栏的“立即构建”测试一下效果
④对自动触发以及构建结果通知到Git做配置,点击“配置”——【源码管理】在Branches to build,去掉master分支(可以达到Git库任意分支的代码的PR都会触发构建)——【构建触发器】选择Poll SCM,日程表置空——【构建后操作】点击“增加构建后操作步骤”,选择Notify Stash Instance(通知存储实例),目的:将构建结果通知到Git——点击“保存”
4.单元测试
- 在Jeninks创建一个单元测试的任务,【新建item】,命名规则同上,构建一个自由风格的项目,点击“OK”
- JDK和Git库配置同上
- 【构建】点击“增加构建步骤”,选择Invoke top-level Maven targets,maven版本选择maven-linux,Goals输入“-U clean test”(执行单元测试)——测试一下:点击“立即构建”,构建完成后,点击“工作空间”——target-surefire-reports里面是单元测试的结果
- 为了测试覆盖率:【构建】点击“增加构建步骤”,修改Goals输入“-U clean test”为“-U clean c obertura:c obertura -Dc obertura.report.format=xml”(后面命令要求输出格式为xml)——测试一下:点击“立即构建”,构建完成后,点击“工作空间”——target-site/c obertura-coverage.xml里面是覆盖率测试的结果
- 为了展示测试结果,需要用到插件:【构建后操作】点击“增加构建后操作步骤”,选择Publish JUnit test result report,路径 target/surefire/reports*.xml 和 Publish cobertura Coverage Report,路径 **/target/site/c obertura-coverage.xml(从下面复制来的),点击“保存”——测试一下:点击“立即构建”
5.Sonar源代码静态检测
无需配置(Jenkins默认配置好了),一提交到master分支(其他分支不会),就会触发源代码静态检查。
6.自动打包与部署
打包前先确定对哪个工程、哪个GIT库打包,自动部署要知道部署到哪个服务器以及路径。
打包:点击Jenkins左侧栏的“配置”——【构建】点击”增加构建步骤“(因为是maven项目,增加maven构建插件),选择Invoke top-level Maven targets,maven版本选择maven-linux,Goals输入“-U clean package”。点击“立即构建”即可以打包。
部署:先停止相关脚本,再启动脚本(也可以用Secure Shell 或 xshell 操作)
自动部署的配置:jenkins中,配置【增加构建步骤】,选择send files or execute commands over SSH——SSH Server中NAME默认选择第一个SSH-SERVE-1——指定服务器IP即要部署包的服务器——指定工作空间,即服务器下的目录——选择高级,勾选Credentials,填写用户名和密码——然后部署在Transfers下,Source files(war包路径:target/jirareport.war)、Remove profix(去掉文件头,输入:target/)、Remote directory(要部署的目录,比如webapps)、Exec commands中输入脚本:停止脚本
cd ******/shutdown.sh
sleep 5(五秒钟)
启动脚本
cd ******/startup.sh
以上,即完成了自动打包、自动部署的配置。