Return 从 powershell 到管道内部管道的值
Return Value from powershell to pipeline inside pipeline
在 Jenkins 管道中,我想要 return 从 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
}
}
}
}
}
然后我想 return 从 powershell 脚本中获取 $value1 以便在另一个步骤中使用它。
我尝试使用 $ENV 但不起作用
$ENV:Value1 = $resultQuery.code
有什么想法吗??
我不熟悉 Jenkins,但您尝试过使用 Write-output $value1
或 return $value1
吗?
我发现在我的一些 powershell 脚本中,我输出的任何内容都会被捕获并返回给调用函数。
当然,您需要以某种方式在 Jenkins 端保存该值以重用它。
另一种方法是将值保存到文件中并从文件中读取。您可以使用 $value1 | out-file C:\temp\temp.txt
完成它,然后在单独的脚本中使用 Get-Content C:\temp\temp.txt
读取它。
我用过这个:
powershell('''
"env.PACKAGE_VERSION='$newversion'" | Out-File packageVersion.properties -Encoding ASCII
''')
以后:
script {
load('packageVersion.properties')}
使用值:
echo("---- PACKAGE_VERSION: ${env.PACKAGE_VERSION} ----")
如果您有一个只输出您想要的单段文本的 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/
在 Jenkins 管道中,我想要 return 从 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
}
}
}
}
}
然后我想 return 从 powershell 脚本中获取 $value1 以便在另一个步骤中使用它。
我尝试使用 $ENV 但不起作用
$ENV:Value1 = $resultQuery.code
有什么想法吗??
我不熟悉 Jenkins,但您尝试过使用 Write-output $value1
或 return $value1
吗?
我发现在我的一些 powershell 脚本中,我输出的任何内容都会被捕获并返回给调用函数。 当然,您需要以某种方式在 Jenkins 端保存该值以重用它。
另一种方法是将值保存到文件中并从文件中读取。您可以使用 $value1 | out-file C:\temp\temp.txt
完成它,然后在单独的脚本中使用 Get-Content C:\temp\temp.txt
读取它。
我用过这个:
powershell('''
"env.PACKAGE_VERSION='$newversion'" | Out-File packageVersion.properties -Encoding ASCII
''')
以后:
script {
load('packageVersion.properties')}
使用值:
echo("---- PACKAGE_VERSION: ${env.PACKAGE_VERSION} ----")
如果您有一个只输出您想要的单段文本的 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/