Чтобы продолжить это: Этапы конвейера Jenkins - передача всего файла

Я застрял в том, что мне нужно установить число как часть имени узла, где это число содержится в файле на другом узле.

Например, если файл свойств содержит число 6, мне нужно запустить задание на узле с именем DEV-SME-6.

Есть ли у меня способ: на этапе 1 прочитать номер из файла на главном узле, примерно так:

Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'

Затем на этапе 2, внутри имени узла, используйте этот номер, чтобы указать часть имени узла следующим образом:

node('DEV-SME-$Env_number')

??

Это не работает с stash (попытка спрятать перед указанием имени узла на этапе дает мне ошибку: FilePath.hudson отсутствует

Мой текущий код после некоторых попыток выглядит примерно так:

stage "first stage"
   node ('master'){
      try{
         env.Env_number = sh ' echo DEV$(cat file_containing_an_integer_between_2_and_7.txt '
      catch(error)
         echo "failed to set variable Env_number "
            }}

stage "second stage"
   node('${Env_number}') {
      try{
         command1
         command2 
            }}

Это дает мне «нет узлов с меткой 'null'»

1
Nahshon paz 27 Ноя 2016 в 12:25

2 ответа

Лучший ответ

Успех! без скриптов sh, с readFile:

stage "first stage"
   node ('master'){
      try{
         env.Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'
      catch(error)
         echo "failed to set variable Env_number "
            }}

stage "second stage"
   node("DEV${Env_number}") {
      try{
         command1
         command2 
            }}
1
Nahshon paz 29 Ноя 2016 в 10:51

Вы не можете использовать stash вне узла, так как это предназначено для копирования «спрятанных» файлов с управляющего мастера на узел, на котором выполняется код.

Для этого вы должны использовать переменную env, которая будет сериализована во время выполнения. Используйте его для информации, которая должна сохраняться на разных узлах.

Вы допустили одну ошибку в приведенном выше коде.

stage "second stage"
   node("${Env_number}") {

Должно быть:"

stage "second stage"
   node("${env.Env_number}") {
1
Nahshon paz 29 Ноя 2016 в 14:09