Этот пост - первая в серии

После недавнего приобретения моей бывшей компании 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 предлагает следующие функции прямо из коробки и с простой конфигурацией:

  1. Обнаружение ветвей с использованием регулярного выражения
  2. Просматривайте результаты тестов напрямую в консоли Amplify.
  3. Простая настройка домена, особенно при использовании Route53.
  4. Приложение развернуто в AWS CloudFront CDN и доступно по всему миру.
  5. Предварительный просмотр приложения для каждого настроенного филиала с использованием определенного поддомена или уникального URL-адреса, созданного автоматически.
  6. Защита паролем для предварительного просмотра приложения.
  7. Настройте будильники и уведомления с помощью облачных часов и консоли усиления.

Результаты теста 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 г.