Summary
- 新增环境无关的自定义步骤,以新增sonarqube代码扫描为例子
新增代码扫描自定义步骤
- 以新增sonarqube代码扫描为例子,让DORY支持在执行编译构建前先进行代码扫描
- 所谓环境无关是指不依赖于应用的发布环境,例如代码扫描,不同发布环境代码扫描的参数没有区别
- 所谓环境相关是指依赖于应用的发布环境,例如自动化接口测试,不同发布环境测试的参数会有所不同
任务演示视频
- 演示如何让DORY支持在编译构建前执行sonarqube代码扫描
部署sonarqube服务
- 把sonarqube部署到kubernetes中,sonarqube需要部署sonarqube-web和sonarqube-db两个服务
- 样例部署文件如下:
|
|
|
|
- sonarqube启动后,默认的管理员账号密码为admin/admin
- 需要手工修改admin的密码。
制作sonar-scanner镜像
DORY自定义步骤的输入参数与输出参数:
输入参数文件
:输入参数文件
由DORY自动创建。DORY执行自定义步骤过程中会自动把运行以及步骤的执行参数(内置参数)以及用户输入的参数自动保存到步骤执行容器的输入参数文件
中,输入参数文件
默认保存在/tmp/dory-param-input.json
或者/tmp/dory-param-input.yaml
文件中(注意,输入参数文件路径可以配置,请根据实际配置进行相关设置)
输入参数文件
支持保存成json格式或者yaml格式,步骤执行容器中的代码可以读取输入参数文件作为输入参数,执行相关的步骤脚本输出参数文件
:输出参数文件
由步骤执行容器在步骤执行过程中的步骤脚本创建。DORY执行自定义步骤结束的时候,会读取步骤执行容器中的输出参数文件
,输出参数文件
默认保存在/tmp/dory-param-output.json
或者/tmp/dory-param-output.yaml
文件中(注意,输出参数文件路径可以配置,请根据实际配置进行相关设置)
输出参数文件
支持保存成json格式或者yaml格式,DORY在步骤执行结束后会读取输出参数文件
,用于控制步骤执行结果、输出文件以及需要保存到步骤执行记录中的所有参数输出参数文件
的doryStepFail
参数: 用于控制步骤执行结果是否失败,假如设置为true,即使步骤执行过程没有错误,步骤也会被标记为失败输出参数文件
的doryOutputFiles
参数: 用于控制步骤执行结果是否有文件需要输出,例如自动化测试的测试报告,如果需要保存出来,那么需要把测试报告的文件路径设置到doryOutputFiles
参数中输出参数文件
的其他参数: 将会保存到步骤执行记录的输出参数中,用于后续执行结果检索用途
- 制作sonar-scanner镜像,DORY使用sonar-scanner镜像把代码推送到sonarqube进行扫描
|
|
-
sonar-scanner镜像包含python3的运行环境,需要编写两个python3步骤执行脚本:
-
create_sonar_project_properties.py
脚本,读取DORY的输入参数文件,生并自动创建sonar-scanner运行配置文件sonar-project.properties
- 读取DORY的输入参数文件
/tmp/dory-param-input.json
,格式例如:
1 2 3 4 5 6 7 8
{ "projectName": "test-project1", "moduleName": "tp1-gin-demo", "path": "Codes/Backend/tp1-gin-demo", "sonarExtraProperties": [ "sonar.sourceEncoding=UTF-8" ] }
- 并自动创建sonar-scanner运行配置文件
sonar-project.properties
,格式例如:
1 2 3 4 5
sonar.host.url=http://example.com:8080 sonar.login=xxxx sonar.projectKey=test-project1_tp1-gin-demo sonar.projectName=test-project1_tp1-gin-demo sonar.sources=.
- 读取DORY的输入参数文件
-
get_scan_result.py
脚本,从sonarqube接口获取扫描结果,并根据扫描结果设置步骤执行成功还是失败,并生成DORY的输出参数文件- 从sonarqube的
api/qualitygates/project_status
接口获取扫描结果 - 判断
projectStatus.status
状态是否为OK,如果不为OK,设置输出参数文件的doryStepFail
参数为true,把本步骤状态设置为FAIL
- 从sonarqube的
-
-
create_sonar_project_properties.py
脚本文件:
|
|
get_scan_result.py
脚本文件:
|
|
- sonar-scanner镜像的Dockerfile
|
|
- 制作sonar-scanner镜像
|
|
设置自定义步骤配置
- 为安全考虑设置sonarqube项目默认可见性为私有
- 设置地址: ${SONARQUBE_URL}/admin/projects_management
- 创建sonarqube管理员token,用于sonar-scanner访问sonarqube
- 设置地址: ${SONARQUBE_URL}/account/security/
- 在dory-dashboard的
管理控制台
-自定义步骤
中新增代码扫描的自定义步骤配置
,样例如下图:
- 详细配置参见下边定义:
|
|
在项目定义中设置代码扫描的模块定义
- 在dory-dashboard的
项目定义
中新增scanCode
自定义步骤的自定义步骤模块定义
,样例如下图:
- 详细配置参见下边定义:
|
|
在流水线定义中插入代码扫描步骤
- 在dory-dashboard的
项目定义
的流水线定义
中createRunFiles
步骤后边插入自定义步骤scanCode
,样例如下图:
- 详细配置参见下边定义:
|
|
执行流水线,在编译构建前进行代码扫描
- 在编译构建前插入了代码扫描步骤
检查sonarqube代码扫描结果
- 打开sonarqube新增了
test-project1_tp1-gin-demo
项目,并可以查看详细扫描结果