AWS CodePipeline 不遵守 CodeBuild 设置
Posted
技术标签:
【中文标题】AWS CodePipeline 不遵守 CodeBuild 设置【英文标题】:AWS CodePipeline Not Respecting CodeBuild Settings 【发布时间】:2019-12-15 23:58:16 【问题描述】:我目前正在使用 codepipeline、codebuild、codedeploy 和 codecommit 创建一个管道。我在将 codebuild 构建工件上传到 s3 时遇到问题,因为它不遵循我在 buildspec.yml 中设置的工件名称:
artifacts:
files:
- '**/build/*'
name: build-$(date +%Y-%m-%d)
相反,它会随机创建一个构建名称。在我的代码构建设置中,我已经启用了语义版本控制,但它似乎被代码管道忽略了,因为我可以在日志中看到,如果我运行代码管道或仅运行代码构建,生成构建工件时会有所不同。
这是仅在代码构建的日志中显示的内容:
[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
这是代码管道日志中显示的内容:
[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
当我运行 codepipeline 时,您可以看到 Updating artifact name as build-2019-08-08 行不存在于日志中。
有人可以帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:当您在 CodePipeline 中将 CodeBuild 用作构建或测试步骤时,您的管道将控制工件命名。意思是,工件命名由 CodePipeline 管理,不能被覆盖。
您有一个 3 阶段管道,CodeCommit -> CodeBuild -> CodeDeploy。配置管道时,您可以配置作为下一阶段输入的输出工件名称。让这些工件名称由管道定义,可以使更改以版本化的方式流过。
【讨论】:
以上是关于AWS CodePipeline 不遵守 CodeBuild 设置的主要内容,如果未能解决你的问题,请参考以下文章
AWS:帮助在 Codepipeline 中设置 CodeDeploy
AWS CodePipeline 能否在不劫持 CodeBuild 的工件设置的情况下触发 AWS CodeBuild?
AWS CodePipeline 错误:不允许跨账户传递角色
在 AWS Codepipeline 中使用 pytest 时导入文件不匹配
AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”
AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk