如何通过CodePipeline将单Zip包内多WAR部署到Elastic Beanstalk
解决CodePipeline部署两个WAR到Elastic Beanstalk的方法
核心思路是在Build阶段把两个WAR文件打包进同一个Zip包,这样部署阶段只需选择这个单一工件即可,具体步骤如下:
1. 修改buildspec.yml,合并两个WAR为单个Zip
放弃生成次级工件,改为在构建阶段将两个WAR文件复制到同一目录并打包。替换你当前的buildspec.yml为以下内容:
version: 0.2 phases: build: commands: # 创建临时目录用于存放要合并的WAR文件 - mkdir -p ./combined-war # 从Src1复制ROOT.war到临时目录 - cp $CODEBUILD_SRC_DIR_source1/ROOT.war ./combined-war/ # 从Src2复制Support.war到临时目录 - cp $CODEBUILD_SRC_DIR_source2/Support.war ./combined-war/ # 将临时目录打包成部署用的Zip文件 - zip -r combined-deployment.zip ./combined-war/ artifacts: files: - combined-deployment.zip
2. 配置CodePipeline部署阶段
- 在CodePipeline的Build阶段,输出工件设置为上述生成的
combined-deployment.zip。 - 进入Deploy阶段,选择Elastic Beanstalk作为部署提供商,直接选择这个Zip工件即可。
Elastic Beanstalk会自动解压Zip包,将里面的ROOT.war部署为根应用,Support.war部署为对应/Support路径的应用,满足你同时部署两个WAR的需求。
注意:确保你的CodeBuild运行环境(比如Amazon Linux 2镜像)自带
zip命令,若没有可在build阶段添加yum install -y zip命令提前安装。
内容的提问来源于stack exchange,提问作者Jalandar R
相关产品推荐
相关产品推荐

