软件工程
- 互联网软件的开发、测试和发布,软件工程已经形成了一套标准流程,把工作流程分为以下几个阶段
CI/CD介绍
- 持续集成(Continuous integration,简称CI)
- 持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现错误。
- 持续交付(Continuous delivery):
- 持续交付指的是频繁地将软件的新版本,交付给软件测试团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
- 持续部署(continuous deployment,简称为CD)
- 是持续交付的下一步,指的是代码通过评审以后自动部署到生产环境
Jenkins
- Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。
- 功能:允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
Jenkins特性
- 开源的java语言开发持续集成工具,支持CI,CD;
- 易于安装部署配置
- 消息通知及测试报告
- 分布式构建
- 文件识别
- 丰富的插件支持
Jenkins安装
- 安装最低配置:不少于256M内存,不低于1G磁盘,JDK版本>=1.8。
- 在windows系统上搭建jenkins持续集成有两种方法: (前提是我们已经配置好了jdk环境)
- war文件,可以用tomcat或者java命令直接运行
- msi安装,作为系统服务后台运行
- war文件:
Jdk安装配置
- Jdk 1.8官网下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html - 默认安装后,配置环境变量
- JAVA_HOME设置为:C:\Program Files\Java\jdk1.8.0_281
- Path中追加:C:\Program Files\Java\jdk1.8.0_281\bin;C:\Program Files\Java\jdk1.8.0_281\jre\bin;
启动Jenkins服务
-
修改jenkins的工作目录:
- 在系统环境变量里面配置JENKINS_HOME变量,将该变量指向目标工作空间。
- 在系统环境变量里面配置JENKINS_HOME变量,将该变量指向目标工作空间。
-
用命令 java -jar jenkins.war来启动服务
- 出现:Jenkins is fully up and running
-
Jenkins默认端口是8080
访问Jenkins
- 打开浏览器,访问http://ip:8080进行安装,ip为服务器ip。
- 首次使用:
- 第一次登录的时候需要设置用户名、密码(初始密码会有提示在D:\jenkins_workspace\secrets\initialAdminPassword文件里保存)、安装插件等,插件建议”安装推荐的插件”就行。
- 注意事项:
- 如果用tomcat来启动Jenkins,需要禁用jenkins作为windows 服务,在"服务"管理工具找到jenkins,点击"右键"->属性->"启动类型"改为"禁用"->点击确认,
首次使用配置
- 权限验证,安装推荐的插件
配置管理员账号
- 输入你要配置的用户名和密码、全名、邮箱(都是自定义信息,需要记住此处配置的用户名和密码),保存并完成,可修改URL
配置系统设置
- 配置Jenkins URL和系统管理员邮件地址
- Manage Jenkins→Config System→Jenkins Location
- Manage Jenkins→Config System→Jenkins Location
- 全局工具配置(Global Tool Configuration)
- Manage Jenkins→Global Tool Configuration→JDK→新增JDK→别名:JDK→取消“Install automatically”→填写JAVA_HOME的值为C:\Program Files\Java\jdk1.8.0_281
- Manage Jenkins→Global Tool Configuration→JDK→新增JDK→别名:JDK→取消“Install automatically”→填写JAVA_HOME的值为C:\Program Files\Java\jdk1.8.0_281
新建Item
- 新建Item:用于定时执行Python自动化测试框架里的脚本。
- 在左侧菜单栏找到新建任务(或新建Item,或新建Job)
- 输入任务名称:比如mypro1
- 构建一个自由风格的项目(freestyle item,或freestyle project)
- general配置:JDK
新建项目-源码管理
- 配置源代码:源码管理,选择Git
- 输入远程仓库URL,添加权限配置,使用Username with password(输入gitee的用户名和密码),选择它
- 输入远程仓库URL,添加权限配置,使用Username with password(输入gitee的用户名和密码),选择它
常用的构建触发器
- 定时构建(Build periodically,隔一段时间build一次,不管版本库代码是否发生变化)
- 周期性构建(Poll SCM,按照设定的时间规则时如果发生变更,就构建,否则不构建。)
日程表参数
- 第一个参数代表的是分钟 minute,取值 0~59;
- 第二个参数代表的是小时 hour,取值 0~23;
- 第三个参数代表的是天 day,取值 1~31;
- 第四个参数代表的是月 month,取值 1~12;
- 最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
日程表示例
- 每10分钟构建一次:H/10 * * * * 或*/10 * * * *
- 每天8点构建一次:0 8 * * *
- 每天8点~17点,两小时构建一次:0 8-17/2 * * *
- 周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5
- 1-6月中每月1号、30号各构建一次:H H 1,30 1-6 *
构建项配置
- 构建项配置:选择的是执行windows脚本命令
- cd testsuite
- python testsuite10001.py
手动构建
- 在Jenkins里进入项目里,点击Build Now
查看构建日志
- 点击Build History里最新的构建编号,查看“控制台输出”
构建结果
- 如果提示:SUCCESS
- 代表构建成功。
常见问题
- 使用pycharm编辑器启动pyhon项目时可以启动,但使用cmd启动时报错:no module named “xxx”的错误,有两种情况:
解决方案
- no module named “xxx”里的“xxx”是python的库名;
此时说明引用库没成功,可能是因为电脑里有多个版本的python,
解决方法:在cmd中激活你所使用的python版本 - no module named “xxx”里的“xxx”是本地的文件名;
此时说明系统没有找到该文件夹
解决方法:在执行的testsuite文件里引入包语句前面加上如下几行代码,把路径添加到系统的环境变量,或把该路径的文件夹放进已经添加到系统环境变量的路径内。
import sys,os
sys.path.append(os.path.dirname(os.getcwd()))
修改testsuite
- 增加相对路径地址
提交到Git服务器
- 修改代码后,提交到Git服务器,然后再次在Jenkins里构建。