代码扫描
创建代码扫描
请求
POST /openapi/quality/codescan
body 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
project_key | 项目标识 | string | 是 |
name | 代码扫描名称 | string | 是 |
description | 代码扫描简介 | string | 否 |
scanner_type | 代码扫描工具,有如下两种扫描工具:sonarQube 、other | string | 是 |
image_name | 扫描环境的镜像名称 | string | 是 |
sonar_system | SonarQube 系统的标识 | string | scanner_type = sonarQube 时必填 |
repo_info | 代码库信息 | []RepoInfo | 是 |
addons | 依赖的软件包信息,不需要时填写空数组即可 | []AddOn | 是 |
sonar_parameter | 代码扫描脚本 | string | 否 |
script | 代码扫描脚本 | string | 否 |
enable_quality_gate | 是否开启质量门禁检查 | bool | 是 |
advanced_settings | 高级配置 | AdvancedSettings | 是 |
RepoInfo 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
codehost_name | 代码源标识 | string | 是 |
repo_namespace | 代码库所属命名空间(组织/个人) | string | 是 |
repo_name | 代码库名称 | string | 是 |
branch | 分支信息 | string | 是 |
AddOn 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
name | 软件包名称 | string | 是 |
version | 软件包版本 | string | 是 |
AdvancedSettings 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
cluster_name | 资源配置中的集群名称 | string | 是 |
timeout | 策略配置中的超时时间 | int | 是 |
resource_spec | 资源配置 | ResourceSpec | 是 |
webhooks | 触发器配置 | Webhooks | 否 |
ResourceSpec 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
cpu_limit | 最大 CPU 资源,单位 m | int | 是 |
memory_limit | 最大内存资源,单位 Mi | int | 是 |
cpu_request | 最小 CPU 资源,单位 m | int | 是 |
memory_request | 最小内存资源,单位 Mi | int | 是 |
Webhooks 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
enabled | 是否启用触发器 | bool | 是 |
hook_list | 触发器配置详情 | []Hook | enabled = true 时必填 |
Hook 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
codehost_name | 代码源标识 | string | 是 |
repo_namespace | 代码库所属命名空间(组织/个人) | string | 是 |
repo_name | 代码库名称 | string | 是 |
branch | 目标分支信息 | string | 是 |
events | 触发事件类型,可选项:push 、pull_request 、tag | []string | 是 |
match_folders | 文件目录 | []string | 是 |
body 参数示例
{
"project_key": "demo",
"name": "codescan-demo",
"description": "code scan demo description",
"scanner_type": "sonarQube",
"sonar_system": "my-sonar",
"image_name": "sonar:v1",
"repo_info": [
{
"codehost_name": "github-demo",
"repo_namespace": "kr-test-org",
"repo_name": "zadig",
"branch": "main"
}
],
"sonar_parameter": "sonar.projectKey=zadig\nsonar.projectName=zadig\nsonar.sources=./cmd/aslan",
"enable_quality_gate": true,
"advanced_settings": {
"cluster_name": "dev-cluster",
"timeout": 60,
"resource_spec": {
"cpu_limit": 1000,
"memory_limit": 1000,
"cpu_request": 500,
"memory_request": 500
}
}
}
返回
{
"message": "success"
}
执行代码扫描任务
请求
POST /openapi/quality/codescan/:scanName/task?projectKey=<项目标识>
Query 参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
projectKey | string | 项目标识 | 是 |
路径参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
scanName | string | 代码扫描名称 | 是 |
Body 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
scan_repos | 代码库信息 | []Repo | 是 |
Repo 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
branch | 分支名 | string | 是 |
repo_name | 代码库名称 | string | 是 |
repo_owner | 组织名/用户名 | string | 是 |
source | 支持的代码仓库来源:github 、gitlab 、gerrit 、codehub 、gitee 、gitee-enterprise 、other | string | 是 |
prs | PR 号列表 | []int | 否 |
body 参数示例
{
"scan_repos":[
{
"branch":"master",
"repo_name":"voting-app",
"repo_owner":"kr-test-org1",
"source":"gitlab",
"prs":[]
}
]
}
成功返回
参数名 | 类型 | 描述 |
---|---|---|
task_id | int | 代码扫描任务 ID |
{
"task_id": 27
}
失败返回
{
"code": 500,
"description": "mongo: no documents in result",
"message": "Internal Error: "
}
获取代码扫描任务详情
请求
GET /openapi/quality/codescan/:scanName/task/:taskID?projectKey=<项目标识>
路径参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
scanName | string | 代码扫描名称 | 是 |
taskID | int | 代码扫描任务 ID | 是 |
Query 参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
projectKey | string | 项目标识 | 是 |
成功返回
参数名 | 类型 | 描述 |
---|---|---|
scan_name | string | 代码扫描名称 |
creator | string | 任务创建者 |
create_time | int | 任务创建时间 |
end_time | int | 任务执行结束时间 |
task_id | int | 代码扫描任务 ID |
status | string | 执行结果 |
result_link | string | 执行结果详情链接 |
repo_info | []Repo | 代码库信息 |
Repo 参数说明
参数名 | 说明 | 类型 |
---|---|---|
branch | 分支名 | string |
repo_name | 代码库名称 | string |
repo_owner | 组织名/用户名 | string |
source | 支持的代码仓库来源:github 、gitlab 、gerrit 、codehub 、gitee 、gitee-enterprise 、other | string |
返回示例
{
"scan_name": "test",
"creator": "admin",
"task_id": 10,
"status": "running",
"create_time": 1689898942,
"end_time": 1689898944,
"result_link": "http://124.23.**.196:9009",
"repo_info": [
{
"repo_owner": "kr-test-org1",
"source": "gitlab",
"address": "https://gitlab.com",
"branch": "main",
"repo_name": "microservice-demo",
}
]
}
失败返回
{
"code": 500,
"description": "mongo: no documents in result",
"message": "Internal Error: "
}