遍历 json 对象的管道脚本

问题描述 投票:0回答:0

我的目标是什么:需要展示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"
                    }
                }
                
            }
        }
    }

非常感谢!

json groovy sonarqube pipeline
© www.soinside.com 2019 - 2024. All rights reserved.