Передача переменных между этапами PS на разных агентах в конвейере Дженкинса - PullRequest
0 голосов
/ 27 июня 2018

У меня есть конвейер jenkins с двумя этапами (powershell), каждый из которых работает на своем узле / подчиненном устройстве.

Я пытаюсь установить переменную на первом этапе (на узле 1) и впоследствии использовать ее на следующем этапе (на узле 2) - однако я не смог найти способ передать эту переменную между ними.

Стоит уточнить, что эта переменная динамически устанавливается на этапе 1, а это означает, что такие решения, как объявление env:var с использованием script или def или environment, не помогли (я пробовал много комбинаций) - значение может меняться каждый раз, когда я запускаю конвейер.

Я попытался установить новое значение для env var на этапе 1, но похоже, что оно влияет только на его значение в контексте рабочей стадии.

(да, он должен быть в powershell и на разных узлах)

это основная идея конвейера (который не работает)

pipeline {
agent { label 'Node1' }

stages{ 
    stage('Calculate'){
        steps {
            git changelog: false, credentialsId: 'user', poll: false, url: 'https://mygit.com/myrepo.git'

            powershell '''
            $currentVersion=[version]$(git describe --tags)
            $newVersion=New-Object -TypeName System.Version($currentVersion.Major, $currentVersion.Minor, $currentVersion.Build, ($currentVersion.Revision + 1))
            '''
        }
    }

    stage('Act'){
        agent { label 'Node2' }
        steps {
            powershell "Write-Host $env:newVersion"
        }
    }
  }
}

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 02 июля 2018

В моих скриптах я определяю переменную над тегом конвейера, а затем использую

returnValue = powershell returnStdout: true, script: '...'

для генерации моего вывода Powershell.

'returnStdout: true' 

- это ключ для получения выходных данных из сценария PowerShell.

На другом этапе я использую bat для вызова скрипта PowerShell и вставил в него свой var:

bat "powershell -File script.ps1 ${returnValue}"

Надеюсь, это поможет.

Привет

...