Этот пост - первая в серии
После недавнего приобретения моей бывшей компании Over.ai компанией Vonage возникло множество изменений и требований, некоторые из которых касались лучшей автоматизации, другие - использования облачного провайдера компании (aws), лучшей безопасности и мониторинга.
Затем я решил создать окончательный, проверенный в боевых условиях конвейер CI / CD на основе aws для всех наших интерфейсных приложений. Давайте начнем с методологии, с которой я решил работать.
Git Flow
Git-flow - это модель ветвления и стратегия управления выпусками для Git. Он определяет хорошо сформулированный путь жизненного цикла разработки проекта и гарантирует, что команда разработчиков придерживается процессов. Он предлагает набор расширений над Git для обеспечения работы репозитория высокого уровня.
Местный
Использование git pre commit hook с хаски для запуска нескольких инструментов, чтобы убедиться, что база кода выровнена таким же образом, сообщения фиксации используют стандарт обычных коммитов и удаляют неиспользуемый и недоступный код.
Например. использование tslint для линтинга, commitizen для обычных коммитов и т. д.
Мастер
Содержит производственный код. Каждая фиксация в мастере будет иметь специальный процесс изменения версии приложения, автоматического создания журнала изменений и добавления тега в фиксацию с использованием семантического релиза.
Развивать
Содержит последние изменения в разработке, которые будут включены в следующий выпуск.
Характерная черта/*
Для каждой новой функции, над которой мы работаем, создается новая ветка.
Если мы начинаем с разработки, а когда закончим, снова сливаемся с ней.
Релиз / QA
Начинается с разработки и означает, что будет новый выпуск, как только мы объединим эту ветку с мастером.
Исправление / *
Начинается с мастера и объединяется с мастером и разработкой.
Используется, когда нам нужно внести срочные изменения в наше производственное приложение, но разработка еще не готова для создания ветки выпуска.
Все следующие ветки будут запускать автоматические тесты, а ветвь выпуска будет проверяться и проверяться вручную.
Ветви Master, Release и Develop будут заблокированы для прямых коммитов кода, и только запросы на вытягивание будут объединены в них после проверки кода и проверки прохождения всех модульных и e2e-тестов.
Каждая из этих веток запускает приложение предварительного просмотра с уникальным URL-адресом, и это, конечно же, происходит автоматически с использованием AWS Amplify.
Консоль AWS Amplify
Консоль AWS Amplify предоставляет рабочий процесс на основе Git для развертывания и размещения полнофункциональных бессерверных веб-приложений. Полнофункциональное бессерверное приложение состоит из серверной части, построенной с использованием облачных ресурсов, таких как GraphQL или REST API, хранилища файлов и данных, и интерфейса, созданного с использованием фреймворков одностраничных приложений, таких как React, Angular, Vue или Gatsby.
Amplify предлагает следующие функции прямо из коробки и с простой конфигурацией:
- Обнаружение ветвей с использованием регулярного выражения
- Просматривайте результаты тестов напрямую в консоли Amplify.
- Простая настройка домена, особенно при использовании Route53.
- Приложение развернуто в AWS CloudFront CDN и доступно по всему миру.
- Предварительный просмотр приложения для каждого настроенного филиала с использованием определенного поддомена или уникального URL-адреса, созданного автоматически.
- Защита паролем для предварительного просмотра приложения.
- Настройте будильники и уведомления с помощью облачных часов и консоли усиления.
Результаты теста Cypress отображаются на консоли усилителя со ссылками на записанные видео e2e для каждого теста.
Конфигурация Amplify может быть обработана в самом проекте с помощью файла amplify.yml
, с помощью интерфейса командной строки или непосредственно на консоли.
Использованная литература:
Https://nvie.com/posts/a-successful-git-branching-model/
https://aws.amazon.com/amplify/console/
Рекомендуемые пакеты:
Https://www.npmjs.com/package/husky
https://github.com/conventional-changelog/commitlint#readme
https://github.com/commitizen / cz-cli
https://github.com/palantir/tslint / https://github.com/eslint/eslint
Большое спасибо за то, что прочитали этот пост. В следующих постах я покажу, как добавить снимки визуальной регрессии как часть нашего набора для тестирования и snyk для отслеживания зависимостей в нашем производственном приложении и тестирования каждый запрос на перенос.
Первоначально опубликовано на https://dev.to 21 ноября 2019 г.