概述
持续集成是什么?
典型的工作流程包括以下几个步骤:开发-提交-编译-测试-发布持续集成是一个开发的实践,需要开发人员定期集成代码到共享存储库。持续集成要求开发人员有频繁的构建。最常见的做法是,每当一个代码提交时,构建应该被触发。Jenkins是什么?
是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的作用
Jenkins会自动运行你的编译脚本,编译成功后,再运行你的测试脚本,这一步成功后,接着它会帮你把新程序发布出去,特别的,在最后一步,你可以选择手动发布,或自动发布,毕竟发布这件事情,还是需要人为的确认一下比较好。简而言之:Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列工作。Jenkins的好处显而易见,它减少了你的重复劳动。更重要的是,一个团队的开发流程一开始是不一致的,不一致往往会带来各种各样的问题,最终体现在软件的质量或开发效率不够高,而Jenkins会帮你规范大家的行为,从而避免一系列的问题。 Jenkins的特点开源免费跨平台,支持所有的平台web形式的可视化的管理页面安装配置超级简单集成插件多jenkins的作用和它的图标表现出来的一样,就是为了做工作的时候,能够比较轻松,像一个绅士一样游刃有余Jenkins环境搭建
https://jenkins.io/ jenkins官网默认情况下,最新版本和长期支持版本可供下载,点击下载区长期支持版本选项卡点击链接下载Jenkins.war 文件安装jdk,配置环境变量(步骤省略)在命令提示符下,到下载Jenkins.war 文件的目录,输入: java -jar jenkins.war --httpPort=8080在浏览器中输入:http://localhost:8080 访问jenkins主页根据提示,打开:X:\Jenkins\secrets\initialAdminPassword 文件查看密码。将密码填写到输入框中,点击 “Continue” 按钮接下来,根据提示安装,Jenkins 会帮我们安装各种主流插件最后一步,创建管理员账号,一定要记住,jenkins安装配置就完成了启动Jenkins访问 Jenkins http://localhost:8080 登录jenkins管理员账号Jenkins配置
系统管理(只配置我们自动化测试规范需要用到的项)系统设置全局安全配置工具配置插件管理节点管理用户管理 系统设置执行者数量配置,主要用来设置每次构建执行最多可以执行多少个构建Jenkins URL: jenkins服务器访问的地址Extended E-mail Notification邮件服务的配置 全局安全配置是否允许用户注册 根据实际情况进行配置用户授权策略,使用安全矩阵,用户登录到jenkins中可以进行那些操作取消防止跨站点请求伪造 全局工具配置Maven、Jdk、Gradle、Groovy、Ant、Docker默认Git配置,输入自己系统git安装的目录:如:D:\Program Files\Git\bin\git.exe 插件管理安装、更新、卸载jenkins插件(所有需要到的插件都在这里下载) 节点管理如构建提示,没有找到XXX,节点中必需配置环境变量Jenkins目录说明
每次构建的代码(工作空间)目录:工作空间windows在:X:\jenkins\workspace在jenkins目录下的workspace中是不同任务的工作空间 每次构建配置、历史构建目录:构建配置、历史构建在:D:\jenkins\jobs在jenkins目录下的jobs中是不同任务的构建配置和构建历史 Jenkins账号目录:Jenkins账号在:D:\jenkins\users在jenkins目录下的users中是jenkins的账号信息 Jenkins插件目录:Jenkins插件在:D:\jenkins\plugins在jenkins目录下的plugins中是jenkins的插件 Jenkins日志目录:Jenkins日志在:D:\jenkins\plugins在jenkins目录下的logs中是jenkins的日志Jenkins构建
Jenkins部署自动化测试脚本思路gitlab->pull(其他操作)->webHook(监听到)->触发(jenkins构建操作)->jenkins构建->pull 指定项目->构建脚本->完成。 Jenkins的三种部署方式: jenkins触发式构建:开发人员push代码或者合并代码到gitlab项目的某个分支,jenkins就部署代码到对应服务器。 jenkins参数化构建:开发人员push代码或者合并代码到gitlab项目的某个分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。 jenkins定时构建:定时构建是在参数化构建的基础上添加的,设置定时构建指定的任务。Jenkins任务
新建任务(实例讲解)例:jenkins构建一个任务,实现gitlab有代码提交,jenkins自动进行构建,把gitlab最新代码拉取到jenkins服务器,并把最新代码同步到不同构建的工作空间,并自动配置测试和沙盒环境不同的配置变量。1、输入任务名称2、选择构建一个自由风格的软件项目3、点击确认任务就创建好了 配置任务1、general任务描述:选填丢弃旧的构建:设置所有构建保留的天数,最大构建的个数2、源码管理我们使用gitlab进行源码管理Repository URL:添写gitlab中自动化测试项目的地址http://git.comjia.com:8888/testteam/AutomationTest.gitCredentials:添加一个jenkins全局用户(全局用户创建)[email protected] Specifier (blank for ‘any‘):选择分支:*/development源码库浏览器:自动3、构建触发器需要下载插件:gitlab的插件:GitlabHook Plugin和gitlab 勾选:Build when a change is pushed to GitLab.GitLab webhook URL: http://101.200.57.228:8080/project/PullAutomationTestGitlab发生更改时将更改推送,GitlabWebhook网址Enabled GitLab triggers:已启用Gitlab触发器勾选:Push Events 推送事件勾选:Opened Merge Request Events打开的合并请求事件Rebuild open Merge Requests:重新生成打开的合并请求,选择neveron push to source branch(推到源分支时)on push to source or target branch(推到源分支或目标分支时)勾选:Approved Merge Requests (EE-only) 已批准的合并请求(仅限EE)勾选:Comments 注释Comment (regex) for triggering a build:用于触发生成的注释(regex)勾选:Enable [ci-skip]:启用[CI跳过]勾选:Ignore WIP Merge Requests:忽略WIP合并请求勾选:Set build description to build cause(eg. Merge request or Git Push ) 将生成描述设置为生成原因(例如合并请求或gitpush)Allowed branches 允许的分支选择:Allow all branches to trigger this job 允许所有分支触发此作业勾选:GitHub hook trigger for GITScm polling 用于gitscm轮询的github hook触发器在gitlab设置webhook打开gitlab,找到对应的project,打开Settings,进入到Web hooks,在URL处填写jenkins上的URL:http://101.200.57.228:8080/project/PullAutomationTest点击add webhook就可以啦 通过url去触发生成一个随机的token,可以用opensslrand -hex 12,直接生成,或者自己指定也行在jenkins上面配置,在构建触发器选择触发远程构建,然后把生成的token写上 4、构建环境可以不配置任何信息5、构建添加构建步骤-执行windows批处理执行windows批处理命令:D:cd D:\jenkins\workspace\PullAutomationTestxcopy *.* /e /yD:\jenkins\workspace\runFrontendTestStayPhone\xcopy *.* /e /yD:\jenkins\workspace\runJuliApiTestCase\xcopy *.* /e /yD:\jenkins\workspace\runFrontendSandboxStayPhone\pythonD:\jenkins\workspace\runFrontendSandboxStayPhone\testMethods\jenkinsEditFile.pycdD:\jenkins\workspace\runFrontendSandboxStayPhonexcopy *.* /e /yD:\jenkins\workspace\runJuliApiSandboxCase\cd ..保存,执行构建即可Jenkins执行UI自动化脚本
自动化测试处于Devops中的一环,自动化测试的职责主要是负责冒烟测试以及回归测试和功能测试,包括性能测试。Devops:DevOps:Development和Operations的组合可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。详细查看:https://baike.baidu.com/item/devops/2613029?fr=aladdin 新建任务(实例讲解)例:jenkins构建一个任务,实现在Jenkins中可视化执行指定工作空间的Web自动化测试脚本,脚本执行完成生成可视化测试报告,报告发送邮件、报告在每次构建中展示,每次构建完成显示每次构建的人员,并邮件、钉钉通知构建结果1、输入任务名称2、选择构建一个自由风格的软件项目3、点击确认任务就创建好了 配置任务1、general任务描述 选填丢弃旧的构建,设置所有构建保留的天数,最大构建的个数2、源码管理 选择无3、构建触发器选择:Build when job nodes start 在构建开始的时候触发(插件:Build User Vars Plugin),在下面就可以配置构建人的信息了Restricted node Label 受限节点标签 不输入Quiet period 当为0时停止4、构建环境勾选:Set jenkins user build variables 设置Jenkins用户构建变量5、构建添加构建步骤-执行windows批处理执行windows批处理命令:pythonD:\jenkins\workspace\runFrontendTestStayPhone\runFrontendTestStayPhone.py添加构建步骤-Update build name勾选:Read from file Build name file path默认version.txt勾选:Use macro 使用宏 Build name macro template 生成宏模板#${BUILD_NUMBER} - 本次构建人:${BUILD_USER} Variable Description变量描述BUILD_USER Full name (first name + lastname) BUILD_USER_FIRST_NAME First nameBUILD_USER_LAST_NAME Last nameBUILD_USER_ID Jenkins user IDBUILD_USER_EMAIL Email address添加构建步骤-执行windows批处理Execute system Groovy script 执行系统groovy脚本(添加:Groovy插件)groovy command Groovy命令Groovy Script:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")作用防止jenkins设置了一些安全策略,阻止css、js显示构建后操作增加构建后操作步骤-Publish HTML reportsPublish HTML reports 发布HTML报告HTML directory to archive 要存档的HTML目录report/frontend/ 工作空间-任务目录下的报告目录Index page[s] 索引页[S]report.html 报告名称Report title 报表标题HTML Report勾选:Keep past HTML reports保留过去的HTML报告勾选:Always link to last build始终链接到上一个生成勾选:Allow missing report允许丢失报告Include files 包含文件**/*所有文件勾选:Escape underscores in Report Title转义报表标题中的下划线增加构建后操作步骤-钉钉通知器配置(添加Dingding[钉钉] Plugin插件)jenkins URL:http://101.200.57.228:8080/钉钉access token:f7a0093d91ece584836edb92c79e630815d865fd85e4d082467e756020ff46d5勾选:构建成功时通知勾选:构建失败时通知 钉钉token获取钉钉群机器人中-webhook中可以查看钉钉机器人token 配置邮件通知使用Jenkins Email Extension Plugin这个jenkins邮件插件,这个插件的配置主要包含两个部分:全局配置和项目配置系统管理-系统设置-找到标题为“Extended E-mail Notification” SMTP server 邮箱服务器地址Default user E-mail suffix 默认邮件后缀Use SMTL Authentication 使用SMTP认证User name 用户名Password 密码Use SSL 默认端口Default content type 默认类型Default recipients 默认收件人邮箱,可以添加多人,中间用英文半角逗号隔开Default Subject:构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!Default Content:Jenkins任务操作
任务操作任务-查看修改记录 查看历史构建记录任务-查看工作空间 查看任务的工作空间任务-立即构建 构建任务任务-删除工程 删除任务任务-配置 配置任务任务-报告 查看报告任务-重命名 重命名任务Jenkins构建结果操作
构建结果操作构建结果-变更记录 查看构建是否有变化构建结果-控制台输出 查看构建输出日志构建结果-编辑编译信息 修改编辑信息构建结果-删除本次构建结果 删除构建构建结果-报告查看 查看构建生成的报告构建结果-构建历史 查看构建的历史记录Jenkins定时构建
定时构建的语法是cron的语法cron表达式,按顺序依次为:秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数)月(0~11) 天(星期)(1~7 1=SUN 或SUN,MON,TUE,WED,THU,FRI,SAT) 年份(1970-2099)*匹配范围内所有值M-N 匹配M~N范围内所有值M-N/X 或者 */X 在指定M~N范围内或整个有效区间内每隔X构建一次 A,B,...,Z 匹配多个值H 表示随机 举例:第一个是代表分钟 (0~59) H 表示随机12 * 每个小时的第12分钟都构建一次H/5 * 每隔5分钟构建一次H(1~23) 每个小时里的 1到23分钟的随机一个点触发第二个是代表小时(0~23)H 6-18/2 * 上午6点到下午六点期间的每隔2个小时 构建一次H H/2 *每隔2小时构建一次第三个是代表天**任意一天20 16 15 每个月的15号下午16点20分构建一次第四个是代表月份(1~12)H/3 12 H(1-6) * 1到6月里随机的某个月的12号每隔3小时构建一次第五个是代表星期(0~7) 0和7代表周日H/30 10-20/2 5-30 10 1-5 每10月份的5号到30号周一到周五的 10点到20点每隔2.5个小时触发一次任务-构建触发器-定时构建-日程表字段 |
* |
* |
* |
* |
* |
含义 |
分钟 |
小时 |
日期 |
月份 |
星期 |
取值范围 |
0-59 |
0-23 |
1-31 |
1-12 |
0-7 |
示例 |
|||||
每隔15分钟执行一次 |
H/15 |
* |
* |
* |
* |
每隔2个小时执行一次 |
H |
H/2 |
* |
* |
* |
每隔3天执行一次 |
H |
H |
H/3 |
* |
* |
每隔3天执行一次(每月的1-15号) |
H |
H |
1-15/3 |
* |
* |
每周1,3,5执行一次 |
H |
H |
* |
* |
1,3,5 |
规则 |
|||||
指定时间范围 |
a-b |
||||
指定时间间隔 |
/ |
||||
指定变量取值 |
a,b,c |