Как вы изменяете конфигурацию Jenkins из разделяемой библиотеки? - PullRequest
1 голос
/ 09 ноября 2019

Дженкинс позволяет нам захватить Сингелтон запущенного экземпляра с помощью Дженкинса. get () . Я пытаюсь создать класс в моей разделяемой библиотеке, в которой CRUD является облачным провайдером. Мой код выглядит следующим образом.

@NonCPS
def create(){
  Jenkins jenkins = Jenkins.getInstance()
  // logic to create cloud
  jenkins.clouds.add(tmpCloud)
  jenkins.save()
}

@NonCPS
def delete(){
  Jenkins jenkins = Jenkins.getInstance()
  def newlist = jenkins.clouds.findAll{ it.getDisplayName() != cloud }
  if(newlist){
     jenkins.clouds.clear()
  }
  for ( int i = 0; i < newlist.size; i++ ) {
    jenkins.clouds.add(newlist[i])
  }
  jenkins.save()
}

Если я запускаю только функцию create (), код работает как положено, то же самое, если я запускаю только delete (), но если я запускаю оба в одной и той же работе, какthis.

cloud.create()
cloud.delete()

Тогда будет работать только создание, ошибка удаления не будет, но она тоже ничего не сделает. Можно ли повторно инициализировать синглтон? Я чувствую, что это то, что мне нужно сделать. Я попытался сохранить экземпляр jenkins как поле моего класса, но это привело к ошибке сериализуемой Hudson. Я не вижу способа передать синглтон Дженкинса из-за проблем с CPS.

...