получить доступ к привязкам учетных данных jenkins из скрипта jenkins job dsl

Я не создаю новую работу

Я хочу получить доступ к привязке секретной строки jenkins из внутри сценария задания dsl. Я не смог найти примеры этого

Если у меня есть привязка секретной строки в Jenkins с именем «my-secret-string», как мне получить ее значение в сценарии dsl? Я хочу, чтобы DSL выполнял вызовы для отдыха и другие вещи, используя секреты, которые я надежно храню в jenkins.

Я не могу использовать credentials('<idCredentials>'), потому что я не создаю новое задание или что-то еще, я хочу использовать эти секретные значения в самом сценарии dsl


person red888    schedule 25.10.2019    source источник


Ответы (1)


Я не понимаю сценария. Вы не создаете новую работу, но все еще находитесь внутри нее? Что это обозначает? Я так понял, что вы определили секретный текст учетных данных в Jenkinks и хотите получить к нему доступ с работы? Это стандартный сценарий:

withCredentials([string(credentialsId: 'my-secret-string', variable: 'mySecretStringVar')]){
    println mySecretStringVar
}

Из консоли Jenkins или скрипта groovy в зависимости от того, где находятся учетные данные:

def getFolderCredsScript(def pipelineFolder, def credId){
    def credentialsStore =
    jenkins.model.Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals(pipelineFolder)}
    .each{
        com.cloudbees.hudson.plugins.folder.AbstractFolder<?> folderAbs = com.cloudbees.hudson.plugins.folder.AbstractFolder.class.cast(it)
        com.cloudbees.hudson.plugins.folder.properties.FolderCredentialsProvider.FolderCredentialsProperty property = folderAbs.getProperties().get(com.cloudbees.hudson.plugins.folder.properties.FolderCredentialsProvider.FolderCredentialsProperty.class)
        if(property != null){
            for (cred in property.getCredentials()){
                if ( cred.id == credId ) {
                    return "${cred.username}:${cred.password}"
                }
            }
        }
    }
}

def getGlobalCredsScript(def credId){
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, Jenkins.instance, null, null);
    for (cred in creds) {     
        if (cred.id == credId){
            return "${cred.username}:${cred.password}"
        }
    }
}
person Marat    schedule 26.10.2019
comment
Нет, это работа DSL. Я хочу получить доступ к его значению в сценарии задания dsl - person red888; 29.10.2019
comment
Я добавил два метода, которые я использую. Однако второй я не стал тестировать некоторое время и скопировал из черновика. - person Marat; 29.10.2019