Запуск сборки кода с использованием пользовательского файла пошаговой сборки для определенных папок

#amazon-web-services #aws-codebuild

#amazon-веб-сервисы #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 trigger (или github, если bitbucket не поддерживается) для автоматической сборки сервиса после его отправки в master.

Я погуглил и нашел это руководствоhttps://docs.aws.amazon.com/codebuild/latest/userguide/sample-bitbucket-pull-request.html

Однако я столкнулся с препятствием, из-за которого я не смог создать определенную папку с определенной спецификацией сборки.

например

  1. для servicea сборка должна выполняться, если я нажимаю на master и изменяю любые файлы в servicea папке с servicea/buildspec.yaml в качестве buildspec

  2. для serviceb сборка должна выполняться, если я нажимаю на master и изменяю любые файлы в serviceb папке с serviceb/buildspec.yaml в качестве buildspec

В триггере есть FILE_PATH фильтр, однако я не смог найти способ установить пользовательскую спецификацию сборки.

Есть ли какой-либо способ добиться этого?

Примечание: Я хочу использовать 1 проект сборки кода для всех моих сервисов

Ответ №1:

В полезной нагрузке Bitbucket webhook список файлов в них не изменен, в отличие от GitHub.

Обходной путь: установите для «git-credential-helper» значение «да» (или 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