我的目标是什么:需要展示SonarQube项目|团体 |权限 我取得的成就:我可以使用组和权限显示我们的 SonarQube 实例中的每个项目,但我在解析 json 数据时遇到了问题。
输出:
SBI 项目:测试项目:任何人 | [[], [admin, codeviewer, issueadmin, securityhotspotadmin, user]]
SBI 项目:测试项目:G_ADMIN | [[], [admin, codeviewer, issueadmin, securityhotspotadmin, user]]
由于“任何人”组对此 SonarQube TestProject 没有任何权限,该值为空,这是我的期望,所以我想实现的是,我想显示唯一对以下 SonarQube 项目具有权限的组只有 G_ADMIN 旁边是显示
[admin, codeviewer, issueadmin, securityhotspotadmin, user]
这是我的管道脚本:
stage('Extract output') {
steps {
script {
// API Endpoint
//List all project in the instance
String project_url = base_url+"/api/projects/search"
String project_list = sh(script: 'curl -s -u $USR:$PSW -X GET '+project_url, returnStdout: true).trim()
if(project_list.contains('errors')) {
error "Request returned errors..."
}
//echo project_list
// Json filter
def jsonObj = readJSON text: project_list
projects = jsonObj.components.key
echo projects.toString()
// Page size max: 500
// Group API Endpoint
String group_url = base_url+"/api/permissions/groups"
// Get all groups in the instances
// for every project , display it's group rights
for(String project: projects){
String group_list = sh(script: 'curl -s -u $USR:$PSW -X GET -F "projectKey='+project+'" '+group_url, returnStdout: true).trim()
def jsonGroup = readJSON text: group_list
groupName = jsonGroup.groups.name
groupPermission = jsonGroup.groups.permissions
// iteration for groupName
for(String adGroup: groupName){
echo "SBI Project: ${project}: ${adGroup.toString()} | ${groupPermission.toString()}"
}
if(group_list.contains('errors')) {
error "Unable to extract permissions"
}
}
}
}
}
非常感谢!