Я впервые пытаюсь автоматизировать развертывание с Jenkins на экземпляре EC2.
Я установил tomcat8
в экземпляре EC2 и изменил разрешения для папки tomcat8/webapps
на 777 ($ chmod 777 webapps
).
.ssh
из EC2 находится в known_hosts
file.
Я могу подключиться и скопировать файл .war
в папку сервера, используя scp
из моей консоли, но он не работает во время автоматизации.
$ scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/webapp.war ec2-user@35.158.118.56:/var/lib/tomcat8/webapps
== copies the *.war file to tomcat8/webapps ==
В Jenkins я получаю:
[Deploy to Staging] + scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/webapp.war ec2-user@35.158.118.56:/var/lib/tomcat8/webapps
[Deploy to Staging] Host key verification failed.
[Deploy to Staging] lost connection
Команда из консоли и из файла Groovy Jenkins точно такая же.Почему это будет работать с моей машины, а не с Jenkins?
Jenkinsfile:
pipeline {
agent any
tools {
maven 'localMaven'
}
parameters {
string(name: 'production', defaultValue: '54.93.78.130', description: 'Staging server')
string(name: 'staging', defaultValue: '35.158.118.56', description: 'Production server')
}
triggers {
pollSCM('* * * * *')
}
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
post {
success {
echo 'Now Archiving...'
archiveArtifacts artifacts: '**/target/*.war'
}
}
}
stage('Deployments') {
parallel {
stage('Deploy to Staging') {
steps {
sh "scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/*.war ec2-user@${params.staging}:/var/lib/tomcat8/webapps"
}
}
stage('Deploy to Production') {
steps {
sh "scp -i /Users/Shared/Jenkins/aws.pem /Users/Shared/Jenkins/Home/jobs/fully-automated/builds/28/archive/webapp/target/*.war ec2-user@${params.production}:/var/lib/tomcat8/webapps"
}
}
}
}
}
}
Спасибо за вашу помощь!