AWS CodePipeline отслеживает несколько хранилищ как один источник - PullRequest
0 голосов
/ 19 декабря 2018

Я расследую, будет ли CodePipeline работать для нашего варианта использования:

У нас есть несколько сотен репозиториев, все они размещены в CodeCommit.Процесс сборки / тестирования / выпуска для всех них идентичен, за исключением незначительной конфигурации.

Что я хотел бы сделать, это настроить конвейер, который будет собирать / тестировать / выпускать изменения, сделанные в любом из них.хранилища.Я не хочу создавать все репозитории, только тот, который изменился.

Я бы не хотел создавать 100 одинаковых конвейеров с разными исходными репозиториями ...

Возможно ли это?Если нет, есть ли обходные пути?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

CodePipeline разработан вокруг модели одного конвейера на проект / услугу.

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

Это также сделает некоторые функции, такие как история выпусков, гораздо менее полезными.

В вашем сценарии, вероятно, наилучшим подходом является 100 конвейеров.,Недавно CodePipeline поднял ограничение по умолчанию для конвейеров для каждой учетной записи на регион до 300, поэтому у вас не должно возникнуть проблем с ограничениями.

Вы можете использовать такие инструменты, как CloudFormation, чтобы упростить настройку и настройку многих похожих конвейеров.Также имейте в виду, что CodePipeline не взимает плату за конвейеры, у которых нет выпусков в течение данного месяца, поэтому, если у вас много конвейеров, но вы на самом деле делаете выпуски только в нескольких из них в месяц, тогда это не будет стоить вам слишком дорого.

0 голосов
/ 19 декабря 2018

Возможно, вам придется использовать сочетание правил CloudWatch + AWS Lambda + CodePipeline

Правила CloudWatch

  1. Изменения состояния CodeCommit -> Правила CloudWatch -> InvokeЛямбда (создайте файл, который содержит информацию о том, какие репозитории и филиалы и т. Д. (Например, state-change.json). -> загрузить файл в корзину S3 (например: pipe_source).

  2. События S3 (pipe_source) -> CloudWatch -> Триггерный конвейер

CodePipeline

[Source (S3 state-change.json, BuildSpec.yml и т. Д.)] -> [Построить (CodeBuild, пользовательский скрипт читает файл statechange.json, чтобы определить, что собирать и развертывать] ->
[Deploy (...)]

Подход № 2 Параллельныйвыполнение (одновременно обновляются различные репозитории)

Я не думаю, что можно подключить один конвейер для удовлетворения ваших потребностей из-за того, как конвейер выполняет ревизии. Альтернативой является замена codePipeline на шагфункция конечного автомата. Позволяетпараллельное исполнение.Вы можете связать пошаговую функцию с действиями, которые соответствуют вашим потребностям в CI / CD.Я быстро взглянул на интеграцию сервисов aws, но не многие из них поддерживаются.Вам нужно использовать лямбда-функцию для вызова других сервисов aws для ex: codebuild

Изменения состояния CodeCommit -> Правило CloudWatch -> Машина состояния функции шага вызова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...