AWS CodePipeline 能否在不劫持 CodeBuild 的工件设置的情况下触发 AWS CodeBuild?

Posted

技术标签:

【中文标题】AWS CodePipeline 能否在不劫持 CodeBuild 的工件设置的情况下触发 AWS CodeBuild?【英文标题】:Can AWS CodePipeline trigger AWS CodeBuild without hijacking CodeBuild's artifact settings? 【发布时间】:2017-06-08 20:37:27 【问题描述】:

我设置 AWS CodeBuild 以将大量工件文件写入 S3。 CodeBuild yaml 文件定义了哪些文件和 CodeBuild 项目设置定义了 S3 存储桶。一切正常。

当您从 AWS CodePipeline 触发 AWS CodeBuild 时,CodePipeline 会忽略 AWS CodeBuild 的工件设置,而是将工件强制放入 codepipline S3 存储桶中的 zip 文件中。

有没有办法使用 CodePipeline 但它尊重 AWS CodeBuild 的工件设置?

【问题讨论】:

我也在寻找答案。如果你想出办法,请告诉我 虽然这是4个月前,服务变化很快,但当时的快速回答是no,做不到。必须添加到构建脚本 aws-cli 以将我们想要的文件直接推送到 S3 中——并在 CodeBuild 配置之外执行此操作。 好的。 aws-cli 是否可作为 codebuild 环境的一部分使用?即使我打算在构建步骤中使用休息 api 来推送到 S3。 aws-cli 会是更好的选择 我们走的是 docker 路线,所以这是一个额外的安装。虽然不知道 AWS 提供的容器 【参考方案1】:

CodeBuild 还允许您访问 aws-cli。

您可以编辑 buildspec.yaml 文件并将这些工件上传到 S3。您还可以创建一个 .sh 文件,为其赋予正确的执行权限,然后使用 shell 脚本将工件上传到 S3 存储桶。

您还需要通过 CodeBuild 的服务角色为 S3 存储桶授予正确的权限。

【讨论】:

以上是关于AWS CodePipeline 能否在不劫持 CodeBuild 的工件设置的情况下触发 AWS CodeBuild?的主要内容,如果未能解决你的问题,请参考以下文章

AWS:帮助在 Codepipeline 中设置 CodeDeploy

AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”

AWS CodePipeline - 使用现有 Dockerrun.aws.json 部署到 Elastic Beanstalk

如何停止 aws codepipeline 部署阶段

[AWS DA] AWS CICD: CodeCommit, CodePipeline, CodeBuild, CodeDeploy

使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数