【测试】持续集成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就会增加一条
相关推荐
{⌐■_■}19 小时前
【gitlab】认识 持续集成与部署
ci/cd·log4j·gitlab
Karoku06621 小时前
【CI/CD】Jenkinsfile管理+参数化构建+邮件通知以及Jenkins + SonarQube 代码审查
运维·ci/cd·容器·kubernetes·jenkins·rancher
Incredibuild2 天前
深入了解 DevOps 基础架构:可追溯性的关键作用
ci/cd·devops
Karoku0662 天前
【CI/CD】持续集成及 Jenkins
运维·ci/cd·docker·云原生·容器·kubernetes·jenkins
drebander3 天前
Docker 与 CI/CD:自动化构建和部署
ci/cd·docker·自动化
躬身入世,以生证道3 天前
Java技术栈 —— CI/CD工具之Jenkins
java·ci/cd·jenkins
计算机毕设定制辅导-无忧学长4 天前
Docker 与持续集成 / 持续部署(CI/CD)的集成(一)
ci/cd·docker·容器
Long_poem4 天前
【自学笔记】版本控制与持续集成基础知识点总览-持续更新
笔记·ci/cd
小奏技术4 天前
github如何基于workflow实现自动集成测试提升代码质量
后端·ci/cd·开源
Yuanymoon5 天前
人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
ci/cd·docker·ai·jenkins