【测试】持续集成CI/CD

近期更新完毕,建议关注收藏点赞~


目录

概括

CI/CD stands for Continuous Integration and Continuous Deployment

  • 定义
    团队成果持续集成到公共平台。一天可以集成1次or多次
    本地代码管理 git
    远程代码管理 gitee(国内),github,gitlib(公司私有服务器)
    持续集成 jenkins

git

  • git配置用户名和邮箱
    本地管理代码
bash 复制代码
git config --global user.email "xx@email.com"
git config --global user.name "username(可任意写,不可用中文)"
#设置成功后没有成功信息提示

git安装目录

  • gitee
    线上集成平台
    • pull下来线上项目
      pycharm->最顶部tab栏VCS(如果是Git则表示该项目正在被git管理中)->get from/check out version control->

      仓库名直接决定了这个目录项目名叫什么。
    • push上去 项目
      VCS->share project on gitee
      如果打开了两个项目,只推排第一个项目,应保持只打开一个项目
      log in to gitee授予pycharm权限登陆gitee
  • 更新push到远程仓库
    前提:是Git项目
    整体流程为add->commit->push
    右键点击项目名->git->先添加后提交->必填描述->提交完成后同样的地方点击推送
  • 仓库更新的代码pull到本地
    指的是相同的项目,线上代码做了更新。
    右键点击项目名->git->拉取
  • 解决冲突
    本地和线上的某一处代码各有不同的更新,不同步。

    点击merge->merge->讨论到底选谁的版本

    出现上述的提示,先拉取远端版本,重新提交之前更新内容。
    • 如何避免冲突:先pull,(更新代码),再push

Jenkins

  • java编写的,必须安装JDK (JAVA SE8)自动装下面两个环境
    jdk java开发环境
    jre java运行环境
bash 复制代码
java -version

Windows需要配置环境变量

系统变量->java\jdk1.8.x_xx\bin

  • 安装Jenkins
    注意必须安装到用户主目录下,且只有一个.jenkins/目录,不允许两层.jenkins嵌套
    创建一个层级不深的目录,放入jenkins.war,便于启动方便
bash 复制代码
java -jar jenkins.war
#注意不要用鼠标点击终端内部;使用jenkins过程中不能关闭终端,否则服务终止
java -jar jenkins.war --httpPort=8889

浏览器中输入http://localhost:8080 不要勾选保持登陆状态

默认用户名密码是admin 123456

如果长时间访问失效,关闭终端,更换端口重新启动服务。

jenkins左边菜单栏->manage jenkins->manage plugins->可选插件->插件名称html publisher 这个必须安装

  • 配置系统邮箱
    登陆163邮箱->设置->POP3/SMTP/IMAP->开启
    启动jenkins服务器,http://localhost:8080进入,
    左侧边栏->manage jenkins->configure system进入系统配置界面->Jenkins location将邮箱地址改成自己的163邮箱
    ->下拉页面,找到extended email notification->高级->username填邮箱,password写163邮箱授权码
    ->下拉到底部,邮箱通知->高级->同样填入用户名和密码(依然是授权码)->保存

postman集成jenkins

  1. 打开已完成且测试无误的postman项目,再次执行测试
  2. 导出测试用例集、环境变量两个文件,不支持中文,需要全部改成英文
  3. 终端打开,执行无误,查看newman生成的测试报告文件
bash 复制代码
#注意是htmlextra 不是html 多年之前已经停止维护了
newman run 测试集文件 -e 环境变量文件 -d 测试数据文件 -r htmlextra --reporter-htmlextra-export report.html
#run xx.json 执行测试集文件
#-r 生成测试报告类型
#--reporter-html-export path存放路径
# -d -e是非必需的
  • 使用jenkins管理 手动构建
    jenkins->新建item->freestyle project->创建成功,
    进入该项目->构建->增加构建步骤->windows选execute windows batch command,mac选execute shell->在这框中加入刚刚能成功运行的newman命令
    ->增加"构建后操作"->选publish html reports->新增reports,这里面的index pages中的.html文件命名应当与newman命令中生成的.html名一致->应用+保存

进入该项目,左侧边栏出现build now点击就可以出现测试报告,如果有失败测试用例,本次build最前面的图标为红色

点击构建好的结果,进入页面->控制台输出,可以看到execute设置的命令(这里就是newman run)执行过程的调试信息

如何找到这个生成的测试报告?点击工程项目页左边边栏会出现生成的测试报告title

  • 使用jenkins管理 自动构建
    设置定时,时间到则jenkins自动执行测试用例+build。
    配置-> 构建触发器 ->build periodically-> 日程表【格式:分 时 日 月 年,不指定的就用*代替,如40 16 * * *表示每天16:40执行】
  • 报告显示不正常的原因
    jenkins避免受到恶意攻击,设置安全策略CSP,只允许加载jenkins服务器上托管的css文件和图片文件。如果不担心被恶意攻击,可以绕过安全策略。
bash 复制代码
#启动时添加一个参数即可
java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar Jenkins.war
#启动之后之前生成的报告还是原样,新生成的报告会有变化

代码集成jenkins

  • 前提:将无问题的项目代码上传到gitee/github
    -手动构建
    步骤:跟之前的步骤差不多,这里只提不同的地方:
    构建->源码管理->Git->添加仓库URL
    构建->增加构建步骤->命令改成python run_suite.py (项目全局执行入口文件)
    ->"构建后操作"增加,同样index pages里面.html名称要跟run_suite.py里的.html命名相同;项目代码中要求报告放在/report目录下,则HTML directory to archive 填写report(目录名)
    ->继续增加构建后操作步骤,editable email notification。project recipient list直接在默认后面加逗号分隔符,放收件人的邮箱;content-type选择邮件内容类型;default content设置邮件内容样式,可参考html格式模版;
    ->advanced settings,triggers如果默认设置不采用点击右上角红叉❌,add trigger->always成功失败都发送

后续同理,点击build now就完成了手动构建

  • 自动构建
    • 生成报告触发器 :同样,配置->构建触发器 build periodically
    • 另一种触发器,检查gitee上的代码是否有更新
      配置->构建触发器->poll SCM->也是5个*的设置多久检查一次,数字前面加'/'表示隔多久检查一次,如*/1 * * * *表示每1分钟检查一次
      只要代码发生变化,到时间build history就会增加一条
相关推荐
smart_ljh2 小时前
Jenkins持续集成与交付安装配置
运维·ci/cd·jenkins
风车带走过往7 小时前
CI/CD 流水线
ci/cd
JZC_xiaozhong1 天前
制造业该怎么做数据治理?
大数据·安全·ci/cd·容器·数据挖掘·数据分析·云计算
明明跟你说过2 天前
基于Jenkins + Ansible 构建CD持续部署流水线的详细指南
运维·ci/cd·ansible·jenkins
鲁子狄2 天前
[笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server
java·windows·笔记·ci/cd·ssh·gitlab·jenkins
45度看我3 天前
Jenkins-持续集成、交付、构建、部署、测试
ci/cd·jenkins
测试者家园3 天前
用Portainer实现对Docker容器的管理(四)
软件测试·测试开发·ci/cd·portainer·性能监控·容器管理·质量效能
小蜗牛爱远行4 天前
软件开发为什么要用CI/CD方法
linux·运维·ci/cd
天天进步20154 天前
Travis CI/CD 功能详解
ci/cd