# 测试与 CI/CD 流水线结合

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

# 新建 CI/CD 流水线

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

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

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

version: "1.1"
stages:
  - stage:
      - git-checkout:
          alias: git-checkout
  - stage:
      - buildpack:
          alias: backend
          params:
            context: ${git-checkout}
            modules:
              - name: java-demo
                path: .
  - stage:
      - release:
          alias: release
          version: "1.0"
          params:
            dice_yml: ${git-checkout}/dice.yml
            replacement_images:
              - ${backend}/pack-result
  - stage:
      - dice:
          alias: dice
          params:
            release_id: ${release:OUTPUT:releaseID}
Copied!

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

# 增加 Sonar 扫描节点

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

此处以 Java 应用为例,因此 language 处填为 java,其他字段请按需配置。 use_platform_quality_gate 默认为 true,代表使用 Erda 平台的扫描规则。更多规则配置相关内容,请参见 Sonar 门禁规则

增加 Sonar 扫描节点后的 YML 结构如下所示:

version: "1.1"
stages:
  - stage:
      - git-checkout:
          alias: git-checkout
  - stage:
      - sonar:
          alias: sonar
          version: "1.0"
          params:
            code_dir: ${git-checkout}
            delete_project: true
            language: java
  - stage:
      - buildpack:
          alias: backend
          params:
            context: ${git-checkout}
            modules:
              - name: java-demo
                path: .
  - stage:
      - release:
          alias: release
          version: "1.0"
          params:
            dice_yml: ${git-checkout}/dice.yml
            replacement_images:
              - ${backend}/pack-result
  - stage:
      - dice:
          alias: dice
          params:
            release_id: ${release:OUTPUT:releaseID}
Copied!

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

# 增加单元测试节点

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

增加单元测试节点后的 YML 结构如下所示:

version: "1.1"
stages:
  - stage:
      - git-checkout:
          alias: git-checkout
  - stage:
      - sonar:
          alias: sonar
          version: "1.0"
          params:
            code_dir: ${git-checkout}
            delete_project: true
            language: java
  - stage:
      - unit-test:
          alias: unit-test
          version: "1.0"
          params:
            context: ${git-checkout}
  - stage:
      - buildpack:
          alias: backend
          params:
            context: ${git-checkout}
            modules:
              - name: java-demo
                path: .
  - stage:
      - release:
          alias: release
          version: "1.0"
          params:
            dice_yml: ${git-checkout}/dice.yml
            replacement_images:
              - ${backend}/pack-result
  - stage:
      - dice:
          alias: dice
          params:
            release_id: ${release:OUTPUT:releaseID}
Copied!

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

# 增加自动化测试节点

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

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