Groovy скрипт для удаления глобальных учетных данных пользователя Jenkins по ID (не по имени пользователя) - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь удалить учетные данные, хранящиеся в хранилище Global Credentials, с помощью скрипта .groovy. Я хочу найти и удалить по значению ID, а не по имени пользователя.

Вот мой код:

import hudson.model.User

def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
    Jenkins.instance,
    null,
    null
)


//ID I intend on deleting
id_name ='test-id-name'


//here we cycle through all the credentials until we find the intended id
for (c in creds) {
  if (c.id == id_name){
    println("Found existing ID")
    //here we attempt to delete  by id
    User u = User.get(id_name)
    u.delete()
  }
}

Когда я запускаю код, он печатает строку, сообщающую, что он нашел идентификатор, но фактически не удаляет. Я не получаю сообщение об ошибке.

1 Ответ

0 голосов
/ 02 апреля 2019

Используя этот код в качестве примера: https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/deleteAllGlobalCredentials.groovy

Следующий код сработал.

import com.cloudbees.plugins.credentials.domains.Domain

def credentialsStore = jenkins.model.Jenkins.instance.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0].getStore()
allCreds = credentialsStore.getCredentials(Domain.global())

//ID we intend on deleting
id_name ='test-id-name'

//here we cycle through all the credentials until we find the intended id
allCreds.each{

  //if we find the intended ID, delete it
  if (it.id == id_name){
    println ("Found ID")
    credentialsStore.removeCredentials(Domain.global(), it)
  }
}

Я определенно открыт для предложений, если кто-то считает, что этот код можно оптимизировать лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...