Завершить сборку спецификации на ранней основе в зависимости от условия, в частности, от тега git - PullRequest
0 голосов
/ 16 декабря 2018

Я бы хотел запустить свой конвейер сборки только тогда, когда мое репо помечено определенными определенными метками выпуска.Я могу получить значение тега из переменной среды CODEBUILD_WEBHOOK_TRIGGER и могу условно выполнить код на этапе BUILD с помощью некоторого bash kung fu:

build:
  commands:
    - echo ${CODEBUILD_WEBHOOK_TRIGGER##*/}
    - |
     if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then 
        git add *
        git commit -am "System commit"
        git push
        git tag ${CODEBUILD_WEBHOOK_TRIGGER##*/}
        git push origin ${CODEBUILD_WEBHOOK_TRIGGER##*/}
        echo Pushed the repo
     fi

Работает нормально, я нажимаю только тогда, когда тег выглядит определенным образом.

Оставляя в стороне хрупкость вышеописанного, я действительно хочу завершить весь процесс сборки на этапе INSTALL, если моя переменная CODEBUILD_WEBHOOK_TRIGGER не имеет определенного префикса.Я хотел бы пропустить все последующие шаги и выйти из конвейера без ошибок.

Есть ли способ сделать это?Было бы неплохо минимизировать ресурсы, которые я использую.

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

CodeBuild теперь изначально поддерживает фильтрацию тегов.Документация @ https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html#sample-github-pull-request-filter-webhook-events.

0 голосов
/ 21 августа 2019

Мне удалось использовать команду aws-cli для остановки сборки, используя предоставленную переменную среды CodeBuild $ {CODEBUILD_BUILD_ID}:

- aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}

Например:

- |
    if expr "${CODEBUILD_WEBHOOK_TRIGGER}" : '^tag/30' >/dev/null; then 
        . . .
    else
        aws codebuild stop-build --id ${CODEBUILD_BUILD_ID}
    fi
0 голосов
/ 16 декабря 2018

Отвечая на мой собственный вопрос, оказывается, что вы можете сделать это, указав фильтр ветвления в настройках источника.Регулярное выражение, кажется, соответствует всему, что возвращается из webhook:

^tag/30

Это работает для моего шаблона тега.

Вопрос стоит.Я все еще могу представить себе случаи использования, когда вы хотите замкнуть выполнение конвейера сборки по какой-то другой причине.

...