在 Jenkins 的 Powershell 脚本中调用参数
Call parameters in Powershell script in Jenkins
我需要在 Jenkins 调用的函数中 运行 一个 powershell 脚本。调用此函数时,还包括另外两个 parameters/variables。这是我的代码示例:
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
这引发了 'Bad Response' 错误。请注意,如果我对变量中的值进行硬编码,则脚本会起作用。
我也尝试用 withEnv 包装脚本,但我遇到了同样的问题:
withEnv(["varOne=${params.varOne}, varTwo=${params.varTwo}"]) {
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
}
最后,我知道如果我使用双引号而不是单引号,我可以成功调用这些变量
powershell """
some ps1 script
"""
但是,当我这样做时它说:
groovy.lang.MissingPropertyException: No such property: Headers
如果你要模板化变量,你需要 """
正如我在你删除的问题中所说,但你需要在非模板化变量上转义 $
powershell """
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
"""
我需要在 Jenkins 调用的函数中 运行 一个 powershell 脚本。调用此函数时,还包括另外两个 parameters/variables。这是我的代码示例:
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
这引发了 'Bad Response' 错误。请注意,如果我对变量中的值进行硬编码,则脚本会起作用。 我也尝试用 withEnv 包装脚本,但我遇到了同样的问题:
withEnv(["varOne=${params.varOne}, varTwo=${params.varTwo}"]) {
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
}
最后,我知道如果我使用双引号而不是单引号,我可以成功调用这些变量
powershell """
some ps1 script
"""
但是,当我这样做时它说:
groovy.lang.MissingPropertyException: No such property: Headers
如果你要模板化变量,你需要 """
正如我在你删除的问题中所说,但你需要在非模板化变量上转义 $
powershell """
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
"""