使用特定文件夹的自定义buildstep文件的CodeBuild触发器

时间:2019-03-29 06:22:44

标签: amazon-web-services aws-codebuild

我一直在调用codebuild并像这样手动覆盖buildspec:

aws codebuild start-build --cli-input-json file://servicea/custom.json

,然后在custom.json

{
    "projectName": "myproject",
    "sourceVersion": "master",
    "buildspecOverride": "servicea/buildspec.yml"
}

现在,我想使用bitbucket触发器(如果不支持bitbucket,则使用github)在将其推送到主服务器后自动构建服务。

我一直在使用Google搜索,并找到了本教程https://docs.aws.amazon.com/codebuild/latest/userguide/sample-bitbucket-pull-request.html

但是,我遇到了一个障碍,即无法使用特定的buildspec构建特定的文件夹。

例如

  1. 对于servicea,如果我按下主键并以servicea作为构建规范更改servicea/buildspec.yaml文件夹中的任何文件,则构建应该运行。

  2. 对于serviceb,如果我按下主键并以serviceb作为构建规范更改serviceb/buildspec.yaml文件夹中的任何文件,则构建应该运行。

触发器中有一个FILE_PATH过滤器,但是我找不到设置自定义buildspec的方法。

有什么办法可以做到这一点?

注意: 我想为我的所有服务使用1个代码构建项目

1 个答案:

答案 0 :(得分:0)

与GitHub不同,Bitbucket的webhook有效负载没有更改文件列表。

解决方法: 在buildspec中将“ git-credential-helper”设置为“ yes”(或true)。 https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

中的详细信息

然后您可以使用https://community.atlassian.com/t5/Bitbucket-questions/Bitbucket-How-to-get-modified-files-of-a-commit-in-JSON-format/qaq-p/704126

中提到的调用来获取针对特定提交而更改的文件的列表。

您可以从环境变量CODEBUILD_RESOLVED_SOURCE_VERSION中获取提交,并从CODEBUILD_WEBHOOK_HEAD_REF中获取分支。 https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html

中的详细信息