Передайте параметр bool в сценарий powershell в многострочном параметризованном конвейере Jenkinsfile - PullRequest
0 голосов
/ 28 ноября 2018

В моем 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

1 Ответ

0 голосов
/ 24 апреля 2019

Измените вход PowerShell на [string] вместо [boolean]

[string]$forceUpgrade = $false

. Вы по-прежнему сможете использовать переменную $forceUpgrade в качестве логического значения в условном выражении в PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...