Возвращаемое значение из powershell для конвейера внутри конвейера - PullRequest
0 голосов
/ 08 января 2019

В Jenkins Pipeline я хочу вернуть значение из powershell в конвейер, но я не знаю, как

Пример:

     pipeline {
        agent any 
        stages {
            stage('Return Value') { 
                steps {
                    parameters([
                        string(name: 'Value1'),
                    ])

                    powershell '''

                    parameters for conection ...
                    extra parameters ....

                    $resultQuery= Invoke-Sqlcmd @conection -QueryTimeout 0 -ErrorAction Stop
                    $value1 = $resultQuery.code <# 1000 #>
                    $message = $resultQuery.message <# Some message #>

                    ''')

                    }
                }
                stage('Another Step') { 
                steps {

                        //I want ... if ($value1 <= 1000)
                        // do something
                    }
                }
            }
        }
    }

Тогда я хочу вернуть из сценария powershell $ value1 для использования его на другом шаге.

я пытаюсь с $ ENV, но не работает

$ENV:Value1 = $resultQuery.code

любая идея ??

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я использовал это:

powershell('''                       
 "env.PACKAGE_VERSION='$newversion'" | Out-File packageVersion.properties -Encoding ASCII
''')

позже:

script {
  load('packageVersion.properties')}

используя значение:

echo("---- PACKAGE_VERSION: ${env.PACKAGE_VERSION} ----")
0 голосов
/ 09 января 2019

Я не знаком с Дженкинсом, но вы пытались использовать Write-output $value1 или return $value1?

Я обнаружил, что в некоторых моих сценариях powershell все, что я выводил, захватывается и возвращается в вызывающую функцию. Конечно, вам нужно каким-то образом сохранить значение на стороне Дженкинса, чтобы использовать его повторно.

Другим способом было бы сохранить значение в файл и прочитать его из файла. Вы можете сделать это, используя $value1 | out-file C:\temp\temp.txt, а затем прочитать его, используя Get-Content C:\temp\temp.txt в отдельном скрипте.

...