如何在脚本控制台中列出每个管道使用的 Jenkins 凭据?

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

继承遗留的 Jenkins 始终是一个挑战,人们早已离开,几乎没有任何文档。幸运的是,我们可以自动化一些流程,并向我们的好老朋友 Jenkins 询问哪个管道正在使用哪些凭证,在我的例子中,目标是循环凭证集并禁用那些不再使用的凭证并重新获得控制权。

jenkins jenkins-pipeline credentials
1个回答
0
投票

这是我用过的:

import jenkins.model.Jenkins
import hudson.model.Job
import com.cloudbees.hudson.plugins.folder.Folder
import com.cloudbees.plugins.credentials.CredentialsProvider
import com.cloudbees.plugins.credentials.Credentials
import java.nio.charset.StandardCharsets

// Define a method to fetch all credentials
def getCreds() {
    return CredentialsProvider.lookupCredentials(Credentials.class)
}

// Function to print credential details in CSV format
def printCredentialDetailsInCsvFormat(job, c) {
    def description = c.description ? c.description : ""
    println("\"${job.fullName}\",\"${c.id}\",\"${description}\"")
}

// Utility function to search for credentials in job configurations and print in CSV format
def searchCredentialsInConfig(job, creds) {
    def jobConfig = job.getConfigFile().asString()
    // Iterate over all credentials to find if they are referenced in this job config
    creds.each { c ->
        if (jobConfig.contains(c.id)) {
            printCredentialDetailsInCsvFormat(job, c)
        }
    }
}

// Recursive function to process all items including those in folders, now accepts creds as an argument
def processItem(item, creds) {
    if (item instanceof Folder) {
        item.getItems().each { subItem ->
            processItem(subItem, creds)
        }
    } else if (item instanceof Job) {
        searchCredentialsInConfig(item, creds)
    }
}

// Print CSV header
println("\"Pipeline Name\",\"Credential ID\",\"Description\"")

// Get all credentials before starting the item processing
def creds = getCreds()

// Start processing all items from Jenkins root, passing creds along
Jenkins.instance.items.each { item ->
    processItem(item, creds)
}

输出为:

"Pipeline Name","Credential ID","Description"
"Some credential","some UUID","Some Description"
...

请随时改进。

© www.soinside.com 2019 - 2024. All rights reserved.