测试与 CI/CD Pipeline 结合

上述文章中描述了如何使用 sonar 漏洞扫描, 单元测试自动化测试,下面我们看下如何将这些节点都结合到现有的 CICD 流水线文件中

CI/CD Pipeline

进入应用列表,创建一个业务应用,仓库模式使用 系统内置仓库, git clone https://github.com/bzdgn/docker-spring-boot-java-web-service-example.git 把 demo 代码下载到本地再推送到内置仓库上(空项目会提示你如何推送)

然后到流水线栏目,选中分支后,新建默认流水线,如何图形界面编辑流水线可跳转 pipeline图形编辑

测试与 CI-CD Pipeline 结合 - 图1

图形界面编辑后的 yml 结构如下,流水线如何文本编辑可跳转 pipeline文本编辑

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. alias: git-checkout
  6. - stage:
  7. - buildpack:
  8. alias: backend
  9. params:
  10. context: ${git-checkout}
  11. modules:
  12. - name: java-demo
  13. path: .
  14. - stage:
  15. - release:
  16. alias: release
  17. version: "1.0"
  18. params:
  19. dice_yml: ${git-checkout}/dice.yml
  20. replacement_images:
  21. - ${backend}/pack-result
  22. - stage:
  23. - dice:
  24. alias: dice
  25. params:
  26. release_id: ${release:OUTPUT:releaseID}

pipeline 编辑好后就可以点击新建流水线然后点击执行,如何执行 pipeline 可跳转: pipeline执行

增加 sonar 扫描节点

测试与 CI-CD Pipeline 结合 - 图2

如图所示,点击图形界面的 + 号然后搜索 sonar 节点,填写好必填的字段 code_dirlanguagecode_dir 填写为 ${git-checkout}git-checkoutgit-checkout action 的 alias 声明的字段, 我这里是 java 项目 所以 language 这里填写 java, 其他的一些字段可以根据自己是否熟悉 sonar 进行配置,最后有个 use_platform_quality_gate 字段默认值是 true,代表使用 erda 平台的扫描规则, 具体规则配置可以到项目的 项目设置 下进行设置,具体文档可以跳转 sonar项目规则配置

增加了 sonar 扫描节点后的 yml 结构如下

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. alias: git-checkout
  6. - stage:
  7. - sonar:
  8. alias: sonar
  9. version: "1.0"
  10. params:
  11. code_dir: ${git-checkout}
  12. delete_project: true
  13. language: java
  14. - stage:
  15. - buildpack:
  16. alias: backend
  17. params:
  18. context: ${git-checkout}
  19. modules:
  20. - name: java-demo
  21. path: .
  22. - stage:
  23. - release:
  24. alias: release
  25. version: "1.0"
  26. params:
  27. dice_yml: ${git-checkout}/dice.yml
  28. replacement_images:
  29. - ${backend}/pack-result
  30. - stage:
  31. - dice:
  32. alias: dice
  33. params:
  34. release_id: ${release:OUTPUT:releaseID}

执行后在 应用 > 代码质量 > 质量报告 中将会看到代码扫描后的报告, sonar 节点详细使用和上报可跳转 质量报告

执行后在 应用 > 代码质量 > 问题列表 中查看代码异味的报告工单, sonar 节点详细使用和上报可跳转 问题列表

增加单元测试节点

测试与 CI-CD Pipeline 结合 - 图3

同上,点击 + 号搜索并选中 unit-test, 然后填写关键字段 contextcontext 填写为 ${git-checkout}, git-checkoutgit-checkout action 的 alias 声明的字段,如果不是 golang 语言其他非必填字段可以忽略

增加了 unit-test 单元测试节点后的 yml 结构如下

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. alias: git-checkout
  6. - stage:
  7. - sonar:
  8. alias: sonar
  9. version: "1.0"
  10. params:
  11. code_dir: ${git-checkout}
  12. delete_project: true
  13. language: java
  14. - stage:
  15. - unit-test:
  16. alias: unit-test
  17. version: "1.0"
  18. params:
  19. context: ${git-checkout}
  20. - stage:
  21. - buildpack:
  22. alias: backend
  23. params:
  24. context: ${git-checkout}
  25. modules:
  26. - name: java-demo
  27. path: .
  28. - stage:
  29. - release:
  30. alias: release
  31. version: "1.0"
  32. params:
  33. dice_yml: ${git-checkout}/dice.yml
  34. replacement_images:
  35. - ${backend}/pack-result
  36. - stage:
  37. - dice:
  38. alias: dice
  39. params:
  40. release_id: ${release:OUTPUT:releaseID}

unit-test 执行完后,可以在 应用 -> 代码质量->执行列表 中查看单侧的结果, 单元测试节点详细使用和上报可跳转 单元测试

构建成功后增加自动化测试执行的节点

如果不了解自动化测试可以先去了解下自动化测试的文档 自动化测试

testscene-run(自动化测试场景执行)

testplan-run (自动化测试计划执行)

这2个节点可以让流水线去执行对应的场景和计划,从而可以打通接口测试流程。

测试与 CI-CD Pipeline 结合 - 图4

选中 testscene-run(场景)或者 testplan-run(计划), 填写必填字段,下拉框选中对应的空间,场景集,场景,参数配置,下拉框中的数据都是自动化测试中的数据

填好自动化测试执行的 Action 后,等待服务启动完成后,这个 Action 会自动帮你使用填写好的参数配置去执行对应的计划或者场景,当接口用例没有 100% 执行通过,该节点就会失败,执行结果也可以到对应的场景的 执行历史 中查看