Дженкинс и Пауэршелл - Управление IIS - PullRequest
0 голосов
/ 08 мая 2019

У меня есть развертывание от Jenkins, которому нужно перезапустить IIS.У меня есть следующие работы в проекте Freestyle в Дженкинс, но я не могу заставить его работать в декларативном конвейере.Сценарий использует PowerShell для запуска / остановки / перезапуска IIS.Я получаю сообщение об ошибке:

groovy.lang.MissingPropertyException: No such property: SecurePassword for class: WorkflowScript
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)

Вот мой сценарий.Я подозреваю, что это связано с интерполяцией строк, но мне не очень повезло, что я смог это выяснить.

Любая помощь приветствуется.

pipeline {
    agent none
    options { skipDefaultCheckout() }

    parameters {
        string(name: 'IIS_SERVER', defaultValue: 'xxxxxxxx', description: 'Server to Restart IIS')
        string(name: 'USER_NAME', defaultValue: 'xxxxxxxx', description: 'Username')        
        string(name: 'PASSWORD', defaultValue: 'xxxxxxxx', description: 'Password')
        choice(name: 'IIS_ACTION', choices: ['Start', 'Stop', 'Restart'], description: 'IIS Server Action',)
    }

    stages {
        stage ('Restart IIS') {
            agent { node { label "win2"} }
            steps {
                script {
                    powershell(returnStdout: false, script: """
                            $SecurePassword = ${PASSWORD} | ConvertTo-SecureString -AsPlainText -Force
                            $cred = New-Object System.Management.Automation.PSCredential -ArgumentList ${USER_NAME}, $SecurePassword

                            invoke-command -computername ${IIS_SERVER} -Credential $cred {cd C:\\Windows\\System32\\; ./cmd.exe /c "iisreset /noforce /${IIS_ACTION}" }
                        """
                    )
                }
            }
        }

        stage ('Validate Restart') {
            agent { node { label "win2"} }
            steps {
                script {
                    def httpStatus = bat(script: "c:\\curl\\bin\\curl.exe -s -o /dev/null -w \"%%{http_code}\" http://xxxxxxxx", returnStdout: true)
                    echo "HTTP Status Code: ${httpStatus}"
                }
            }
        }
    }
}
...