我对 Jenkins 和 DevOps 总体来说是新手。我正在尝试学习将 war 文件部署到在亚马逊 EC2 实例上运行的 Tomcat 9.xx 上。 Tomcat 可以通过浏览器访问
我有以下 Jenkinsfile:
pipeline {
agent any
parameters {
string(name: 'tomcat_dev', defaultValue: 'VALID_IP_HIDDEN', description: 'Staging 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 /home/user/.ssh/tomcatdeployment.pem **/target/*.war ec2-user@${params.tomcat_dev}:/opt/tomcat/apache-tomcat-9.0.83/webapps"
}
}
}
}
}
}
我可以使用上述身份文件连接到我的 ec2 实例,但是当我运行 Jenkins Pipeliine 时,我不断收到此错误:
scp -i /home/user/.ssh/tomcatdeployment.pem webapp/target/webapp.war ec2-user@IP_VALUE_HIDDEN:/opt/tomcat/apache-tomcat-9.0.83/webapps 警告:身份文件 /home/user/.ssh/tomcatdeployment.pem 无法访问:权限被拒绝。 主机密钥验证失败。
我尝试将 Jenkins 添加到 root 用户列表,并使其能够使用 sudo 而无需密码 - 如何在 Jenkins 中以 root 身份运行脚本?
但我仍然遇到同样的错误。有人可以帮忙或提供一些指导吗?
您可以设置正确的凭据以通过 Jenkins 服务器进行身份验证。 主机密钥验证问题:
ssh -i /home/user/.ssh/tomcatdeployment.pem ec2-user@IP_VALUE_HIDDEN