AWS CodePipeline 不尊重 CodeBuild 设置

Kar*_*ter 3 aws-codepipeline aws-codebuild

我目前正在使用 codepipeline、codebuild、codedeploy 和 codecommit 创建管道。当我将 codebuild 构建工件上传到 s3 时遇到问题,因为它不遵循我在 buildspec.yml 中设置的工件名称:

artifacts:
  files:
    - '**/build/*'
  name: build-$(date +%Y-%m-%d) 
Run Code Online (Sandbox Code Playgroud)

相反,它会随机创建一个构建名称。在我的 codebuild 设置中,我已经启用了语义版本控制,但它似乎被 codepipeline 忽略了,因为我可以在日志中看到,如果我运行 codepipeline 或仅运行 codebuild,则生成构建工件时存在差异。

这是仅在代码构建的日志中显示的内容:

[Container] 2019/08/08 09:28:07 Assembling file list 
[Container] 2019/08/08 09:28:07 Expanding **/build/* 
[Container] 2019/08/08 09:28:08 Found 144 file(s) 
[Container] 2019/08/08 09:28:08 Updating artifact name as  build-2019-08-08 
Run Code Online (Sandbox Code Playgroud)

这是 codepipeline 日志中显示的内容:

[Container] 2019/08/08 09:19:50 Assembling file list 
[Container] 2019/08/08 09:19:50 Expanding **/build/* 
[Container] 2019/08/08 09:19:50 Found 144 file(s) 
[Container] 2019/08/08 09:19:50 Phase complete: UPLOAD_ARTIFACTS State: SUCCEEDED 
Run Code Online (Sandbox Code Playgroud)

您可以看到,当我运行 codepipeline 时,日志中不存在更新工件名称为 build-2019-08-08行。

有人可以帮我弄这个吗?

Sub*_*hew 6

当您使用 CodeBuild 作为 CodePipeline 中的构建或测试步骤时,您的管道控制工件命名。这意味着,工件命名由 CodePipeline 管理并且不能被覆盖。

您有一个 3 阶段管道:CodeCommit -> CodeBuild -> CodeDeploy。配置管道时,您可以配置输出工件名称,该名称将用作下一阶段的输入。通过管道定义这些工件名称可以使更改以版本化方式流动。