Я не могу понять, почему я получаю синтаксическую ошибку в моем Jenkinsfile - PullRequest
0 голосов
/ 18 декабря 2018
node('linux') { 
    stage('Create Test Stack') {
        withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'cfcfed3e-bb3b-4b78-97a1-0ca1e7b9226e', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
            sh 'aws cloudformation create-stack --stack-name final-test --template-url https://s3.amazonaws.com/rcooper-bucket-bucket/docker-single-server.json --region us-east-1 --parameters ParameterKey=KeyName,ParameterValue=MyKeyPair2 ParameterKey=YourIp,ParameterValue=xxx.xx.xxx.xx/32'
            sh 'aws cloudformation wait stack-create-complete --stack-name stack-test --region us-east-1'
            sh 'aws cloudformation describe-stacks --stack-name stack-test --region us-east-1'       
            sh """
            docker1_ip=\$(aws cloudformation describe-stacks --stack-name stock-test --region us-east-1 --query \'Stacks[].Outputs[?OutputKey==`manager1PublicIp`].OutputValue[]\' --output text)
            sshagent (credentials: ['c8a72a93-6041-4983-973e-c4f7f3d10ebb']) {
                ssh -o StrictHostKeyChecking=no ubuntu@\${docker1_ip} \'uptime\'
                   }
            """
}
}
}

Я получаю эту ошибку:

/workspace/final@tmp/durable-56b16501/script.sh: строка 4: синтаксическая ошибка: неожиданное слово (ожидание ")")

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вы можете получить значение docker1_ip из оболочки, выполнить return. Затем использовать docker1_ip в sshagent.

node('linux') { 
    stage('Create Test Stack') {
        withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'cfcfed3e-bb3b-4b78-97a1-0ca1e7b9226e', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
            sh 'aws cloudformation create-stack --stack-name final-test --template-url https://s3.amazonaws.com/rcooper-bucket-bucket/docker-single-server.json --region us-east-1 --parameters ParameterKey=KeyName,ParameterValue=MyKeyPair2 ParameterKey=YourIp,ParameterValue=xxx.xx.xxx.xx/32'
            sh 'aws cloudformation wait stack-create-complete --stack-name stack-test --region us-east-1'
            sh 'aws cloudformation describe-stacks --stack-name stack-test --region us-east-1' 

            docker1_ip = sh(
                returnStdout: true,
                script: "aws cloudformation describe-stacks --stack-name stock-test --region us-east-1 --query \'Stacks[].Outputs[?OutputKey==`manager1PublicIp`].OutputValue[]\' --output text"
            ).trim()


            sshagent (credentials: ['c8a72a93-6041-4983-973e-c4f7f3d10ebb']) {
                sh "ssh -o StrictHostKeyChecking=no ubuntu@${docker1_ip} uptime"
            }
        }
    }
}
0 голосов
/ 18 декабря 2018

Я решил проблему.По какой-то причине эта строка ssh в паре "" "не будет работать должным образом.

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