Можно ли передать переменную из сценария задания конвейера Jenkins в загруженный сценарий jenkinsfile? - PullRequest
0 голосов
/ 10 ноября 2018

Я хотел бы знать, возможно ли передать определение переменной в конвейерном задании jenkins как загруженный скрипт.Загруженный скрипт

Конвейерное задание

node {

     // Some declaration and code

    stage('Prepare deploy') {
        // Create a talbe for the servers lists
        def servers = [:]

        // For each server know, if deployment is enabled
        // deploy resources
        params.each { srv, value ->
        if ("$value" == "true"){
            // add the current current to the enabled servers
            servers["Server ${srv}"] = {

                // Define specific variable
                String SERVER=props."SRV_${srv}"
                String CONF=env.DEPLOY_HOME + "/${srv}"

               // Install server - the SERVER and CONF variable need to be propagate to the others scripts
               load env.JENKINSFILES_DIRECTORY + "/server-configuration"
               load env.JENKINSFILES_DIRECTORY + "/server-deploiement"
               load env.JENKINSFILES_DIRECTORY + "/server-postconfig"
               load env.JENKINSFILES_DIRECTORY + "/server-start"
            }
        }
    }
    parallel servers
    }

}

файл конфигурации сервера

#!/usr/bin/env groovy​
node{
     // Some declaration
     stage('configure serveur'){
          // The variable SERVER and CONF must be visible here
          // is it possible ?
          sh "ssh -X " + env.USER +"@${SERVER} 'sh echo \"${CONF}\"'"
     }
}

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2018

withEnv - это то, что вы ищете

node {

 // Some declaration and code

stage('Prepare deploy') {
    // Create a talbe for the servers lists
    def servers = [:]

    // For each server know, if deployment is enabled
    // deploy resources
    params.each { srv, value ->
    if ("$value" == "true"){
        // add the current current to the enabled servers
        servers["Server ${srv}"] = {

           // Install server - the SERVER and CONF variable need to be propagate to the others scripts
withEnv(["SERVER=props.SRV_${srv}","CONF=env.DEPLOY_HOME + ${srv}"]){
           load env.JENKINSFILES_DIRECTORY + "/server-configuration"
           load env.JENKINSFILES_DIRECTORY + "/server-deploiement"
           load env.JENKINSFILES_DIRECTORY + "/server-postconfig"
           load env.JENKINSFILES_DIRECTORY + "/server-start"
        }
}
    }
}
parallel servers
}
}

Сервер-конфигурации

#!/usr/bin/env groovy​
node{
 // Some declaration
 stage('configure serveur'){
      // The variable SERVER and CONF must be visible here
      // is it possible ?
      sh "ssh -X " + env.USER +"@${env.SERVER} 'sh echo \"${env.CONF}\"'"
 }
}
...