Как сохранить нестроковые объекты на разных этапах в декларативном Jenkinsfile? - PullRequest
1 голос
/ 17 января 2020

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

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

1 Ответ

0 голосов
/ 17 января 2020

Чтобы сохранить значение переменной по стадиям, определите переменную вне конвейера с помощью аннотации @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')
           }
       }
    }
}

переменная не сохранится при перезапуске.

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

...