如何使用Jenkins Pipeline将Web应用部署到AWS Elastic Beanstalk
Jenkins 实现 AWS EBS 自动部署方案
前置准备
- 首先创建有权限操作EBS的IAM用户,权限最小化配置,至少包含
elasticbeanstalk:CreateApplicationVersion、elasticbeanstalk:UpdateEnvironment、s3:PutObject权限,将生成的AK/SK存入Jenkins凭证管理,类型选择AWS Credentials,记录对应的凭证ID后续使用。 - Jenkins节点安装必要依赖:可以选择安装「AWS Elastic Beanstalk Deployment Plugin」,也可以直接使用AWS CLI,使用CLI的话需要提前在Jenkins节点完成awscli的安装。
- 确认你原有的Jenkins构建流程可以正常生成可用的war包,原有
mvn构建逻辑无需调整。
方案1:使用EBS部署插件实现(配置简单,适合标准场景)
- 原有Pipeline中构建war包的步骤保持不变
- 新增EBS部署步骤,选择之前存储的AWS凭证,依次填写AWS区域、EBS应用名称、EBS环境名称
- 部署文件路径选择构建生成的war包路径
- 可以自定义版本号规则,比如使用
${BUILD_NUMBER}关联Jenkins构建号,方便后续版本回溯和问题排查。
方案2:使用AWS CLI在Pipeline中实现(灵活度高,支持自定义流程)
Pipeline参考代码如下:
pipeline { agent any environment { AWS_REGION = "替换为你的AWS区域,例如cn-north-1" EBS_APP_NAME = "替换为你的EBS应用名称" EBS_ENV_NAME = "替换为你的EBS环境名称" // EBS对应的S3存储桶可以在EBS控制台的应用版本页面查询 S3_BUCKET = "替换为EBS关联的S3存储桶名称" VERSION_LABEL = "v${BUILD_NUMBER}-${env.GIT_COMMIT.take(7)}" WAR_PATH = "target/替换为你的应用生成的war包名称.war" AWS_CREDENTIALS = credentials('替换为你之前存入Jenkins的AWS凭证ID') } stages { // 原有构建war包的步骤保留 stage('构建WAR包') { steps { sh 'mvn clean package -DskipTests' } } stage('部署到AWS EBS') { steps { // 上传war包到S3 sh 'aws s3 cp ${WAR_PATH} s3://${S3_BUCKET}/${VERSION_LABEL}.war --region ${AWS_REGION}' // 创建EBS应用版本 sh 'aws elasticbeanstalk create-application-version --application-name ${EBS_APP_NAME} --version-label ${VERSION_LABEL} --source-bundle S3Bucket=${S3_BUCKET},S3Key=${VERSION_LABEL}.war --region ${AWS_REGION}' // 部署新版本到EBS环境 sh 'aws elasticbeanstalk update-environment --environment-name ${EBS_ENV_NAME} --version-label ${VERSION_LABEL} --region ${AWS_REGION}' // 可选:等待部署完成验证环境状态 sh 'aws elasticbeanstalk wait environment-updated --environment-name ${EBS_ENV_NAME} --region ${AWS_REGION}' } } } }
注意:如果你的EBS环境使用的是官方Tomcat平台,直接上传war包即可正常运行,建议保持EBS的Tomcat大版本和你之前使用的Tomcat版本一致,避免出现兼容性问题。
内容的提问来源于stack exchange,提问作者Steve Green
相关产品推荐
相关产品推荐

