AWS CodePipeline:GitHub > CodePipeline (CodeBuild - Maven Java .WAR) > S3/CodeArtifact > Elastic Beanstalk (Apache Tomcat)

问题描述 投票:0回答:1

我觉得好像我已经搜索了整个互联网和之前的问题,并测试了每种组合和排列,以尝试使其正常工作,但我尝试的任何方法都不起作用。我似乎无法找到可靠的指南来遵循此和/或体面的日志记录。

.war 文件的本地 Maven 构建以及将 .war 文件手动上传到 Elastic Beanstalk 工作得非常好。

但我真的不想这样做。

我在指南中尝试过的许多选项最终都使 CodeBuild 流程正常工作,并且显然将输出保存到 S3 - 但当我单击指向 S3 对象的链接时,它不在那里。

这是最新的 buildspec.yml 文件的价值。

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11

  build:
    commands:
      - mvn clean
      - mvn install
      
post_build:
    commands:
      - mv target/MyApp-1.0.war ROOT.war
      
artifacts:
  files:
      - ROOT.war

我不确定是否需要 mv 命令,因为当我检查 CodeBuild 日志时,我可以看到这一点;

[INFO] Building war: /codebuild/output/src1021125740/src/target/MyApp-1.0.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

对于接下来要尝试的步骤有什么想法吗?如果我至少可以在 S3 或 CodeArtifact 上生成并访问 war 文件,或者将其直接传递到 CodeDeploy 的下一步,那么我应该能够弄清楚其余的事情。

amazon-web-services maven amazon-elastic-beanstalk aws-codebuild
1个回答
0
投票

buildspec.yml 中的工件部分至关重要,因为它指导 CodeBuild 在构建过程完成后将哪些文件上传到 S3。为了确保文件上传到S3中的根路径,您可以在配置中包含discard-paths: yes:

artifacts:
  files:
    - ROOT.war
  discard-paths: yes

此外,为构建阶段定义输出工件(例如 MyBuildArtifact)以跟踪生成的文件也很重要。如果您使用的是独立的 CodeBuild 项目,请确保为其配置了正确的 S3 存储桶名称和文件夹路径,并且向构建角色授予了所需的权限。如果 CodeBuild 是 CodePipeline 的一部分,请确保将这些配置应用于管道的构建阶段,并具有 codepipeline 角色所需的权限。设置完成后,您将在指定的 S3 位置找到工件。

© www.soinside.com 2019 - 2024. All rights reserved.