Скрипт Powershell в декларативном конвейере Дженкинса - PullRequest
0 голосов
/ 31 мая 2018

Я использую учетные данные среды, чтобы получить имя пользователя и пароль.Когда я повторяю их, они отлично печатаются как ****.

Далее следуют команды powershell, когда я запускаю их отдельно, все команды работают отлично.Но через конвейер Jenkins он выдает мне следующую ошибку:

groovy.lang.MissingPropertyException: Нет такого свойства: psw для класса: groovy.lang.Binding

Может кто-нибудьОбъясните, это правильный способ включить PowerShell в конвейер Jenkins?

environment {
   CREDENTIAL = credentials('Test')
}

stage('Deployment') {
        steps {
                echo "$CREDENTIAL_USR"
                echo "$CREDENTIAL_PSW"
                powershell """($psw = ConvertTo-SecureString -String $CREDENTIAL_PSW -AsPlainText -Force)"""
                powershell """($mySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $CREDENTIAL_USR, $psw -Verbose)"""
                powershell """(Set-Item WSMan:/localhost/Client/TrustedHosts -Value "*" -Force)"""
                powershell """($session = New-PSSession -ComputerName "192.111.111.111" -Credential $mySecureCreds)"""

Ответы [ 2 ]

0 голосов
/ 23 августа 2018

Вы можете легко запускать многострочные команды powershell в конвейере jenkins следующим образом.Например, если вы хотите войти в систему Azure с использованием субъекта-службы, вы сделаете что-то вроде следующего:

powershell '''
            $pass = ConvertTo-SecureString your_client_secret -AsPlainText –Force
            $cred = New-Object -TypeName pscredential –ArgumentList your_client_id, $pass
            Login-AzureRmAccount -Credential $cred -ServicePrincipal –TenantId your_tenant_id

-vaultName "eusdevmbe2keyvault" -name "normalizedcontainername"). SecretValueText '' '

Проверьте здесь для справки https://jenkins.io/blog/2017/07/26/powershell-pipeline/

0 голосов
/ 31 мая 2018

В данный момент вы запускаете каждую строку в своем собственном процессе powershell, поэтому результаты предыдущей строки недоступны для следующей команды.

Я думаю, вам просто нужно переместить скрипт вмногострочная строка:

powershell ("""
    $psw = ConvertTo-SecureString -String $CREDENTIAL_PSW -AsPlainText -Force
    $mySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $CREDENTIAL_USR, $psw -Verbose
    Set-Item WSMan:/localhost/Client/TrustedHosts -Value "*" -Force
    $session = New-PSSession -ComputerName "192.111.111.111" -Credential $mySecureCreds
""")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...