Дженкинс, глобальные перемены - PullRequest
0 голосов
/ 05 апреля 2020

Существует следующий код, который работает правильно (успешно добавляет глобальную переменную), но результат выполнения этого кода в конвейере всегда НЕИСПРАВЕН. Я не могу поймать ошибку, используя try-catch - на консоль конвейера ничего не выводится. Если я создаю код с def (строки закомментированы), FAILED не происходит (конвейер зеленый), но код не работает (переменная не добавляется. Как найти ошибку или убедиться, что конвейер не НЕ УДАЛ?

import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.*

try {
  /*
  Jenkins instance = Jenkins.getInstance()
  //jenkins = Jenkins.instance //this need script approve
  def globalNodeProperties = instance.getGlobalNodeProperties()
  def envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
  def newEnvVarsNodeProperty = null
  def envVars = null    
   */

  instance = Jenkins.getInstance()
  globalNodeProperties = instance.getGlobalNodeProperties()
  envVarsNodePropertyList = globalNodeProperties.getAll(EnvironmentVariablesNodeProperty.class)

  newEnvVarsNodeProperty = null
  envVars = null

  if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
    newEnvVarsNodeProperty = new EnvironmentVariablesNodeProperty();
    globalNodeProperties.add(newEnvVarsNodeProperty)
    envVars = newEnvVarsNodeProperty.getEnvVars()
  } else {
    envVars = envVarsNodePropertyList.get(0).getEnvVars()
  }
} catch(Exception ex) {
  println("Exception error: ${ex}")
}


envVars.put("sample_var", "Sample Groovy Global Var")
instance.save()

1 Ответ

0 голосов
/ 05 апреля 2020

Пожалуйста, проверьте с помощью этого (функционального) кода (он также не работает):

import hudson.slaves.EnvironmentVariablesNodeProperty
import jenkins.model.*

@NonCPS
def add_global_var() {

instance = Jenkins.getInstance()
globalNodeProperties = instance.getGlobalNodeProperties()
envVarsNodePropertyList = globalNodeProperties.getAll(EnvironmentVariablesNodeProperty.class)

newEnvVarsNodeProperty = null
envVars = null

if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
  newEnvVarsNodeProperty = new EnvironmentVariablesNodeProperty();
  globalNodeProperties.add(newEnvVarsNodeProperty)
  envVars = newEnvVarsNodeProperty.getEnvVars()
} else {
  envVars = envVarsNodePropertyList.get(0).getEnvVars()
}

envVars.put("snapshot_id", "Sample Groovy Global Var 4")
instance.save()

}


pipeline {
    agent { node { label 'slave' } }

    stages {

        stage('Check global var') {

            steps {

                add_global_var()

            }

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