# 测试与 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}
完成流水线编辑后,点击 新建流水线,随后点击执行按钮。关于如何执行流水线,请参见 流水线运行。
# 增加 Sonar 扫描节点
如图所示,点击图形界面的 + 图标添加 Sonar 节点,完成相应信息填写(其中 code_dir
和 language
为必填项)。填写 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}
完成流水线执行后,进入 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}
完成单元测试执行后,可进入 DevOps 平台 > 我的应用 > 代码质量 > 执行列表 查看单元测试结果,具体请参见 单元测试。
# 增加自动化测试节点
如图所示,点击图形界面的 + 图标添加自动化场景执行或自动化计划执行节点,完成相应信息填写。测试空间、场景集、场景和参数配置的可选数据均来自于自动化测试。
待服务启动后,该 Action 将根据已配置的参数自动执行对应的计划或场景。若接口用例未 100% 通过,则该节点执行失败,您也可以进入对应场景的执行历史查看执行结果。