Как добавить функциональность отката в базовую версию S3 CodeBuild
Я следовал этой инструкции, чтобы получить очень простой рабочий процесс CI в AWS. Работает безупречно, но я хочу иметь дополнительный функционал, откат. Сначала я думал, что это будет работать "из коробки", но не в моем случае, если я выберу предыдущее задание в CodeBuild, к которому я хочу вернуться, и нажму "Повторить", я получаю это сообщение об ошибке: "Ошибка ArtifactsOverride должен быть установлен при использовании артефактов типа CodePipelines". Я также попытался перезапустить весь конвейер снова со страницей истории конвейера, но это просто список сборок без какой-либо функциональности.
Мои вопросы: как добавить функцию отката в мой рабочий процесс. Это не должно быть в том же конвейере и т. Д. Но это не должно касаться git.
1 ответ
AWS CloudFormation теперь поддерживает откат на основе сигнала тревоги CloudWatch.
Я бы поставил дистрибутив CloudFront перед вашей корзиной S3 с исходным путем, установленным для папки внутри этой корзины. Каждый раз, когда вы развертываете на S3 из CodeBuild, вы развертываете в случайную новую папку S3.
Затем вы передаете имя папки в файле JSON как выходной артефакт из вашего шага CodeBuild. Вы можете использовать этот артефакт в качестве параметра для шаблона CloudFormation, обновляемого действием CloudFormation в вашем конвейере.
Шаблон CloudFormation обновит поле OriginPath вашего дистрибутива CloudFront в папку, содержащую ваше новое развертывание.
Если сработает будильник, шаблон CloudFormation откроется и вернется к старой папке.
У этого подхода есть несколько преимуществ:
- Клиенты должны видеть только новую или старую версию во время развертывания, а не видеть потенциально смешанные файлы во время развертывания.
- Логика развертывания проще, потому что вы каждый раз загружаете новый набор файлов, а не выясняете, какие файлы новые, а какие нужно удалить.
- Откат довольно прост, потому что вы переворачиваете файлы, которые все еще там, а не повторно развертываете старые файлы.
Ваш конвейер должен содержать и CodeBuild, и последовательное действие CloudFormation.