Можно ли объединить AWS CodeBuild и CodePipeline для создания описанного рабочего процесса CI?

Я пытаюсь создать следующий поток CI со стандартными инструментами AWS: запустить сборку коммита при создании или обновлении Pull-запроса в Github. Или запустить сборку любой ветки по моей команде. Очень похоже на то, что предлагают Codeship, Travis и многие другие сервисы CI.

Возможно ли это с CodeBuild + CodePipeline? Я заметил, что мне нужно указать точную ветку в CodePipeline и, к сожалению, не смог найти, как интегрировать в него запросы Github Pull. Может быть, я упустил это из виду?

4 ответа

Решение

Похоже, что это можно сделать вручную, используя Lambda и S3 - https://aws.amazon.com/blogs/devops/integrating-git-with-aws-codepipeline/

Webhooks уведомляют удаленную службу, выдавая HTTP POST, когда фиксация передается в хранилище. AWS Lambda получает HTTP POST через Amazon API Gateway, а затем загружает копию хранилища. Он помещает заархивированную копию хранилища в версионную корзину S3. AWS CodePipeline может затем использовать zip-файл в S3 в качестве источника; конвейер будет запускаться всякий раз, когда обновляется Git-репозиторий.

CodeBuild теперь напрямую поддерживает создание запросов на GitHub (без промежуточного шага Lambda), если вы хотите просто запустить сборку как часть PR. Чтобы выполнить больше шагов с CodePipeline как частью PR, вам все равно нужно будет настроить некоторые леса, как предлагают другие ответы. https://aws.amazon.com/about-aws/whats-new/2017/09/aws-codebuild-now-supports-building-github-pull-requests/

CodePipeline поддерживает базовые, полностью управляемые интеграции с GitHub и CodeBuild, как указано в разделе "Интеграция продуктов и услуг с AWS CodePipeline". С этими интеграциями можно использовать CodeBuild с CodePipeline для запуска сборки коммита, когда коммит передается в ветку на GitHub. Подробности об интеграции CodeBuild с CodePipeline см. В разделе Использование AWS CodePipeline с AWS CodeBuild для запуска сборок. Build провайдера действий, и ознакомьтесь с Руководством по четырехэтапному конвейеру для получения подробной информации об интеграции Github с CodePipeline как Source поставщик действий.

В настоящее время функция Pull Request в Github не поддерживается в официальной интеграции CodePipeline, вы ничего не пропустили. Для интересного проекта с открытым исходным кодом AWS-экосистемы (еще не v1.0), который поддерживает интеграцию GitHub Pull Request (хотя еще не CodePipeline), вы можете попробовать LambCI.

Вы можете попробовать https://www.deploytoproduction.com/ для интеграции состояния сборки Github Pull Request с AWS CodeBuild. Это бесплатно для одного репозитория Github с планом подписки, доступным для нескольких репозиториев. В настоящее время сервис не интегрируется с CodePipeline, но это скоро произойдет.

PR Build прошел скриншот

Если вы хотите создать что-то самостоятельно, вы можете создать новую интеграцию в GitHub, которая использует функциональность webhook для запуска лямбда-функции, которая, в свою очередь, запускает ваши задания CodeBuild или отправляет артефакт на S3, чтобы запустить CodePipeline.

Полное раскрытие Я являюсь автором этой услуги

Другие вопросы по тегам