在詹金斯管道中,我想从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
任何想法?
答案 0 :(得分:0)
我对詹金斯不熟悉,但是您是否尝试过使用Write-output $value1
或return $value1
?
我发现在某些Powershell脚本中,我输出的所有内容都被捕获并返回给调用函数。 当然,您将需要以某种方式保存Jenkins端的值以重用它。
另一种方法是将值保存到文件并从文件中读取。您可以使用$value1 | out-file C:\temp\temp.txt
进行操作,然后在单独的脚本中使用Get-Content C:\temp\temp.txt
进行阅读。
答案 1 :(得分:0)
我用过这个:
powershell('''
"env.PACKAGE_VERSION='$newversion'" | Out-File packageVersion.properties -Encoding ASCII
''')
稍后:
script {
load('packageVersion.properties')}
使用值:
echo("---- PACKAGE_VERSION: ${env.PACKAGE_VERSION} ----")
答案 2 :(得分:0)
如果您有一个Powershell脚本仅输出所需的单个文本,则可以使用returnStdout
参数将该值返回给管道脚本:
steps {
script {
env.MY_RESULT = powershell(returnStdout: true, script:'echo hi')
}
echo "${env.MY_RESULT}" // prints "hi"
}
更多信息:https://www.jenkins.io/blog/2017/07/26/powershell-pipeline/