Как сохранить нестроковые объекты на разных этапах декларативного файла Jenkins?

В файле Jenkins с декларативным конвейером кажется, что изменения свойств переменной env сохраняются на всех этапах и при перезапусках конвейера независимо от этапа. Однако кажется, что все на env должно быть строкой. Есть ли способ сохранить нестроковый контент на разных этапах - без использования env или записи в файл?

В частности, я подумал, что могу использовать для этого params, но кажется, что значения в params нельзя изменить. Есть другие идеи?


person Patrick Szalapski    schedule 17.01.2020    source источник


Ответы (1)


Чтобы сохранить значение переменной на разных этапах, определите переменную вне конвейера с помощью аннотации @Field.

import groovy.transform.Field

@Field def toto

pipeline {
    agent none
    stages {
       stage('stage1') {
           steps {
               toto = { name -> println name }  
           }
       }
       stage('stage2') {
           steps {
               println toto('toto')
           }
       }
    }
}

переменная не выдержит перезапуска.

Чтобы пережить перезапуск, вы можете сериализовать и сохранить значение вашей переменной в файл и десериализовать его на первом этапе, если файл присутствует.

person fredericrous    schedule 17.01.2020