使用 aws codeartifact 和 MVN 构建规范

Jit*_*r S 2 amazon-web-services aws-codebuild aws-codeartifact

我一直在寻找一个示例构建规范,其中将 codeartifacts 与 mvn 集成。

这是我的buildpsec,以下是我的疑惑。

  1. 由于我们无法创建一个setting.xml,其中aws告诉我们提及服务器、镜像、配置文件和令牌,因此我们如何将依赖项上传到工件存储库。
  2. 我的目标是仅将生成的 jar 而不是 .m2/* 所有依赖项放入 artefact 存储库中,而且这是一个好方法吗?

buildspec file

version: 0.2 
phases: 
  install: 
    runtime-versions: 
      java: openjdk8 
    commands: 
      - pip3 install awscli --upgrade --user 
      - export CODEARTIFACT_TOKEN=`aws codeartifact get-authorization-token --domain $DOMAIN --domain-owner $ACCOUNT_ID --query authorizationToken --output text` 
  build: 
    commands: 
      - echo Build started on `date` 
      - mvn package 
artifacts: 
  type: zip 
  files: 
    - '/target/launcher-0.0.1-SNAPSHOT.jar' 
cache: 
  paths: 
    - '/root/.m2/**/*'.
Run Code Online (Sandbox Code Playgroud)

Sil*_*ier 7

由于我们无法创建一个setting.xml,其中aws告诉我们提及服务器、镜像、配置文件和令牌,因此我们如何将依赖项上传到工件存储库。

事实上,你可以。你走在正确的轨道上。 mvn直到该阶段才会执行build,因此install您可以编辑其设置,包括settings.xml. 最简单的方法是将它们完全替换:

phases:
  install:
    commands:
      - cp ./codebuild-maven-settings.xml /root/.m2/settings.xml 
Run Code Online (Sandbox Code Playgroud)

然后,您可以在自定义文件中使用CODEARTIFACT_TOKEN环境变量settings.xml

为了使该解决方案发挥作用,您需要将该codebuild-maven-settings.xml文件放在存储库的根目录下。这可能不是最优雅的,如果您想真正使其尽可能顺利,我建议将文件放在 S3 上并首先下载。