В моем Jenkinsfile у меня есть что-то вроде:
def addDollar(param) {
return "\$" + param
}
parameters {
booleanParam(
defaultValue: false,
name: 'FORCE_UPGRADE'
)
}
environment {
FORCE_UPGRADE = addDollar(params.FORCE_UPGRADE)
}
stages {
stage('Test') {
steps {
powershell script: ".\\test.ps1 -forceUpgrade ${env:FORCE_UPGRADE}"
}
}
stage('Test Multiline') {
steps {
powershell script: '''
.\\test.ps1 `
-forceUpgrade $env:FORCE_UPGRADE
'''
}
}
}
и сценарий powershell
param (
[Parameter(Mandatory=$true)][boolean]$forceUpgrade=$false
)
if($forceUpgrade) {
Write-Host "Forcing upgrade"
}
Эта стадия jenkins Test
работает, как и ожидалось, но Test Multiline
с ошибками ParameterBindingArgumentTransformationException
:
Cannot process argument transformation on parameter 'forceUpgrade'. Cannot convert value "System.String" to type "System.Boolean". Boolean parameters accept only Boolean values and
numbers, such as $True, $False, 1 or 0.
Я получаю ту же ошибку, если я запускаю
.\test.ps1 -forceUpgrade false
вместо .\test.ps1 -forceUpgrade $false
Есть идеи, как заставить работать сцену Jenkins Test Multiline
?У меня есть скрипт, где мне нужно передать несколько аргументов, было бы идеально, чтобы предотвратить горизонтальную прокрутку с помощью многострочного PowerShell