Повторное использование скриптов в jenkins Декларативный файл конвейера - PullRequest
0 голосов
/ 03 апреля 2019

Есть ли способ повторно использовать Groovy-скрипт, загруженный один раз в Jenkinsfile.

Сейчас я делаю это

            steps {
                script {
                    def util = load("${env.WORKSPACE}/scripts/build_util.groovy")
                    util.runStep1()
                }
            }
            steps {
                script {
                    def util = load("${env.WORKSPACE}/scripts/build_util.groovy")
                    util.runStep2()
                }
            }
            steps {
                script {
                    def util = load("${env.WORKSPACE}/scripts/build_util.groovy")
                    util.runStep3()
                }
            }

Я делаю то же самое снова в пост-сборке с несколькимискрипт блокирует шаг для отправки почты.

Есть ли лучший способ сделать это?Я не могу использовать разделяемые библиотеки .

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Да, вам просто нужно загрузить сценарий только один раз.

def util = load("${env.WORKSPACE}/scripts/build_util.groovy")

Вы можете создать сцену, загрузить сценарий и сохранить ее в переменной, а затем сделать что-то вроде этого: -

stage('Environment') {
     agent  { node { label 'master' } }
        steps {
          script {
                def util = load("${env.WORKSPACE}/scripts/build_util.groovy")
               }
            }
         }
post {
        // Things that we want done regardless of pipeline's outcome
        //
        always {

            // Push the overall statistics from all the stages to InfluxDB
            //
            node (LINUX_BUILD_NODE){
                script{
                    //Mail sending function call
                    //
                    util.runStep1()
                    util.runStep2()
                    util.runStep3()                        
                }
            }
        }
    }

Вы можете использовать " util " на любом этапе для вызова различных функций.

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

Вы можете объявить переменную util на верхнем уровне, а затем присвоить ей значение на первом этапе, после чего вы сможете использовать ее на любом этапе.

def util;

pipeline {
   agent any
   stages {
      stage('one') {
        steps {
            script {
                util = load("${env.WORKSPACE}/scripts/build_util.groovy")
                util.runStep1()
            }
        }
      }
      post {
        util.xxxx
      }

      stage('two') {
        steps {
            script {
                util = load("${env.WORKSPACE}/scripts/build_util.groovy")
                util.runStep2()
            }
        }
      }
      post {
        util.xxxx
      }

   }

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