测试与 CI/CD 流水线结合

前文已为您介绍如何使用 Sonar 漏洞扫描单元测试自动化测试,本文将指导如何将这些节点结合至现有的 CI/CD 流水线文件中。

新建 CI/CD 流水线

进入 DevOps 平台 > 我的项目 > 应用开发, 新建一个业务应用,使用系统内置仓库,通过 git clone https://github.com/bzdgn/docker-spring-boot-java-web-service-example.git 下载 Demo 代码至本地,随后再推送至内置仓库。

进入该应用的流水线页面,选择分支后新建默认流水线。关于如何图形化编辑流水线,请参见 流水线配置(图形)

测试与 CI-CD 流水线结合 - 图1

编辑后的 YML 结构如下所示。关于如何文本编辑流水线,请参见 流水线配置(文本)

  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}

完成流水线编辑后,点击 新建流水线,随后点击执行按钮。关于如何执行流水线,请参见 流水线运行

增加 Sonar 扫描节点

如图所示,点击图形界面的 + 图标添加 Sonar 节点,完成相应信息填写(其中 code_dirlanguage 为必填项)。填写 code_dir${git-checkout}git-checkout 即 git-checkout action 中 alias 声明的字段。

测试与 CI-CD 流水线结合 - 图2

此处以 Java 应用为例,因此 language 处填为 java,其他字段请按需配置。 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}

完成流水线执行后,进入 DevOps 平台 > 我的应用 > 代码质量 可查看质量报告和问题列表,具体请参见 Sonar 报告

增加单元测试节点

如图所示,点击图形界面的 + 图标添加单元测试节点,填写 context${git-checkout}git-checkout 即 git-checkout action 中 alias 声明的字段。若非 Golang 语言,可忽略其他选填字段。

测试与 CI-CD 流水线结合 - 图3

增加单元测试节点后的 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}

完成单元测试执行后,可进入 DevOps 平台 > 我的应用 > 代码质量 > 执行列表 查看单元测试结果,具体请参见 单元测试

增加自动化测试节点

如图所示,点击图形界面的 + 图标添加自动化场景执行或自动化计划执行节点,完成相应信息填写。测试空间、场景集、场景和参数配置的可选数据均来自于自动化测试。

测试与 CI-CD 流水线结合 - 图4

待服务启动后,该 Action 将根据已配置的参数自动执行对应的计划或场景。若接口用例未 100% 通过,则该节点执行失败,您也可以进入对应场景的执行历史查看执行结果。