我一直在调用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构建特定的文件夹。
例如
对于servicea
,如果我按下主键并以servicea
作为构建规范更改servicea/buildspec.yaml
文件夹中的任何文件,则构建应该运行。
对于serviceb
,如果我按下主键并以serviceb
作为构建规范更改serviceb/buildspec.yaml
文件夹中的任何文件,则构建应该运行。
触发器中有一个FILE_PATH
过滤器,但是我找不到设置自定义buildspec的方法。
有什么办法可以做到这一点?
注意: 我想为我的所有服务使用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
中的详细信息 中提到的调用来获取针对特定提交而更改的文件的列表。您可以从环境变量CODEBUILD_RESOLVED_SOURCE_VERSION中获取提交,并从CODEBUILD_WEBHOOK_HEAD_REF中获取分支。 https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
中的详细信息