Конвейер кода для построения ветки по запросу - PullRequest
0 голосов
/ 31 января 2019

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

Ответы [ 3 ]

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

Мы вполне можем иметь поддержку динамического ветвления при следующем подходе.

Одним из ограничений в коде-конвейере AWS является то, что мы должны указывать имена ветвей при создании конвейера.Однако мы можем преодолеть эту проблему, используя архитектуру, показанную ниже.

блок-схема

Создайте функцию Lambda, которая принимает данные веб-хука GitHub в качестве входных данных, используя интеграцию boto3он с конвейером AWS (извлекает конвейер и обновляет), имеет API-шлюз, чтобы сделать вызов лямбда-функции в качестве вызова покоя и, наконец, создать веб-хук к репозиторию GitHub.

Внешние ссылки:

Тема по теме: Динамическое изменение веток на AWS CodePipeline

0 голосов
/ 21 апреля 2019

Недавно я реализовал подход, который использует поддержку WebHok CodeBuild GitHub для запуска начальных модульных тестов и сборки, а затем публикует исходный репозиторий и встроенные артефакты в виде архивированного архива на S3.

Затем можно использоватьАрхив S3 в качестве источника в CodePipeline, где вы можете затем передавать свои артефакты и код PR через интеграционное тестирование, промежуточные развертывания и т. Д. *

Это довольно мощный шаблон, хотя одна из ловушек здесь заключается в том, что если у вас естьпри большом количестве запросов извлечения, создаваемых за один раз, вы можете получить замену выполнений CodePipeline, если только одно выполнение может проходить через данный этап за раз (это на самом деле очень важное свойство, особенно если ваши интеграционные тесты работают с общими ресурсами)и вы не хотите, чтобы несколько экземпляров вашего приложения выполняли задачи настройки / удаления данных одновременно).Чтобы преодолеть это, я публикую уведомление S3 в очереди SQS FIFO, когда CodeBuild публикует артефакт S3, а затем опрашиваю очередь, копируя каждый артефакт в другое местоположение S3, которое вызывает CodePipeline, но только в том случае, если в настоящее время нет выполнений, ожидающихвыполнить после первого этапа CodePipeline.

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

Вы можете динамически создавать конвейеры каждый раз, когда создается новый pull-запрос.Ищите триггеры CodeCommit (в старом пользовательском интерфейсе CodePipeline), для этого вам нужна лямбда.

По сути, это работает так: Скопируйте существующий конвейер и обновите ветку источника.

Это не самый лучший, но на самом деле единственный способ сделать то, что вы хотите.

Я был там и не рекомендовал бы его по следующим причинам:

  • Я установил этот предел в 20 в своем регионе: «Максимальное количество конвейеров с обнаружением изменений, настроенным на периодическую проверку изменений источника» - но вам определенно нужна эта функция (https://docs.aws.amazon.com/codepipeline/latest/userguide/limits.html)
  • Триггер с удаленной веткой работает неправильно, поэтому вы не можете удалить созданный конвейер, когда ветвь была объединена с главной.

Я бы порекомендовал вам использовать Github.com, если вам нужен рабочий процесскак вы описали.Извините за это.

...