如何通过 API 从 SonarQube 项目中检索分支信息?
How to retrieve branch information by the API from a SonarQube project?
我正在使用 SonarQube 分支插件 (1.0 (build 507)) 并想从分支检索信息。我的 SonarQube 版本是 6.7。
SonarQube项目(PC_civil-affairs
)有三个分支,master(主要),develop,feature_branch。这些都是长寿的分支。
接下来的调用从 master 分支检索信息
https://website.com/sonar/api/project_analyses/search?project=PC_civil-affairs
https://website.com/sonar/api/settings/values?component=PC_civil-affairs&keys=sonar.leak.period
https://website.com/sonar/api/qualitygates/project_status?projectKey=PC_civil-affairs
我应该如何调整上述调用以从开发和 feature_branch 检索相同的信息?
我在 SonarQube 7.1 上测试了以下解决方案。
project_analyses/search
您必须添加 branch
参数。示例:
https://website.com/sonar/api/project_analyses/search?project=PC_civil-affairs&branch=xyz
settings/values
所有分支机构的设置都相同,因此您的 URL 是正确的:
https://website.com/sonar/api/settings/values?component=PC_civil-affairs&keys=sonar.leak.period
qualitygates/project_status
遗憾的是,我没有找到获得质量门状态的任何方法。
存在 branches list
端点,每个分支都有质量门状态:
https://website.com/sonar/api/project_branches/list?project=$项目密钥。它给出了一个响应示例,例如:
{
"branches": [
{
"name": "feature/foo",
"isMain": false,
"type": "SHORT",
"mergeBranch": "master",
"status": {
"qualityGateStatus": "OK",
"bugs": 1,
"vulnerabilities": 0,
"codeSmells": 0
},
"analysisDate": "2017-04-03T13:37:00+0100"
},
{
"name": "master",
"isMain": true,
"type": "LONG",
"status": {
"qualityGateStatus": "ERROR"
},
"analysisDate": "2017-04-01T01:15:42+0100"
}
]
}
如果您正在寻找特定分支的状态,您可以将其通过管道传输到类似 jq 的工具中,并使用类似以下内容进行过滤:
| jq '.branches | .[] | {name: .name, status: .status.qualityGateStatus} | select(.name=="master") | .status'
这应该 return "ERROR" 主分支状态。
qualitygates/project_status
当您使用以下 URL 将 MyBranch 替换为您的分支机构名称时,您可以获得分支机构的质量门状态:
https://website.com/sonar/api/qualitygates/project_status?branch=MyBranch&projectKey=PC_civil-affairs
我正在使用 SonarQube 分支插件 (1.0 (build 507)) 并想从分支检索信息。我的 SonarQube 版本是 6.7。
SonarQube项目(PC_civil-affairs
)有三个分支,master(主要),develop,feature_branch。这些都是长寿的分支。
接下来的调用从 master 分支检索信息 https://website.com/sonar/api/project_analyses/search?project=PC_civil-affairs https://website.com/sonar/api/settings/values?component=PC_civil-affairs&keys=sonar.leak.period https://website.com/sonar/api/qualitygates/project_status?projectKey=PC_civil-affairs
我应该如何调整上述调用以从开发和 feature_branch 检索相同的信息?
我在 SonarQube 7.1 上测试了以下解决方案。
project_analyses/search
您必须添加 branch
参数。示例:
https://website.com/sonar/api/project_analyses/search?project=PC_civil-affairs&branch=xyz
settings/values
所有分支机构的设置都相同,因此您的 URL 是正确的:
https://website.com/sonar/api/settings/values?component=PC_civil-affairs&keys=sonar.leak.period
qualitygates/project_status
遗憾的是,我没有找到获得质量门状态的任何方法。
存在 branches list
端点,每个分支都有质量门状态:
https://website.com/sonar/api/project_branches/list?project=$项目密钥。它给出了一个响应示例,例如:
{
"branches": [
{
"name": "feature/foo",
"isMain": false,
"type": "SHORT",
"mergeBranch": "master",
"status": {
"qualityGateStatus": "OK",
"bugs": 1,
"vulnerabilities": 0,
"codeSmells": 0
},
"analysisDate": "2017-04-03T13:37:00+0100"
},
{
"name": "master",
"isMain": true,
"type": "LONG",
"status": {
"qualityGateStatus": "ERROR"
},
"analysisDate": "2017-04-01T01:15:42+0100"
}
]
}
如果您正在寻找特定分支的状态,您可以将其通过管道传输到类似 jq 的工具中,并使用类似以下内容进行过滤:
| jq '.branches | .[] | {name: .name, status: .status.qualityGateStatus} | select(.name=="master") | .status'
这应该 return "ERROR" 主分支状态。
qualitygates/project_status
当您使用以下 URL 将 MyBranch 替换为您的分支机构名称时,您可以获得分支机构的质量门状态:
https://website.com/sonar/api/qualitygates/project_status?branch=MyBranch&projectKey=PC_civil-affairs