Повысьте качество развертывания с помощью веб-перехватчиков

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

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

К счастью, выход есть. И нам не нужно покидать Netlify. Вместо этого мы подключим CircleCI, чтобы настроить процесс тестирования на свой вкус. Остальное возьмет на себя Netlify. Давайте создадим новый проект, чтобы начать с нуля.

Настройка нашего проекта

Чтобы проверить, можем ли мы предотвратить процесс развертывания из CircleCI, нам понадобится какой-то тест, который мы можем целенаправленно провалить. Для этого воспользуюсь Cypress. Создайте новый проект и установите его с помощью npm i cypress --save-dev. Я также добавил сценарий в package.json файл, чтобы упростить его запуск.

Если вы запустите npm run cypress, он должен теперь открыть Cypress для вас. Если это ваш первый раз, он сгенерирует cypress.jon файл конфигурации в корне вашего проекта, а также в папке cypress.

Вы можете избавиться от всего, что находится в папке cypress/integration, и создать новый test.js файл. Поскольку написание тестов выходит за рамки этого руководства, у нас будет одна единственная спецификация:

Чтобы выполнить это на CI, добавьте еще один сценарий в ваш package.json файл. Мы назовем это в нашем файле конфигурации CircleCI. После этого вы можете отправить свои изменения на GitHub.

Интеграция CircleCI

Наш следующий шаг - интегрировать CircleCI в наше приложение. Перейдите в CircleCI и войдите в свою учетную запись GitHub. Вы увидите список репозиториев. Нажмите кнопку Настроить проект.

Он сгенерирует для вас файл конфигурации. Но прежде чем добавлять это в свою кодовую базу, убедитесь, что вы добавили сценарий E2E в качестве последнего шага.

Теперь вы должны увидеть, что ваш конвейер работает. Если ваши сборки не работают из-за похожей ошибки, подобной этой…

Вам нужно добавить дополнительный шаг в ваш config.yml файл:

Это заранее установит недостающие библиотеки. Теперь, когда у нас есть CircleCI, мы также можем настроить Netlify.

Развертывание сайта через Netlify

Следующий шаг - запустить сайт через Netlify. Перейдите на домашнюю страницу Netlify и создайте новую учетную запись, если у вас ее еще нет. Затем на панели инструментов создайте новый сайт из Git.

Если вы не видите свой репозиторий после подключения Git к Netlify, вам необходимо добавить доступ для чтения к вашему репо, настроив приложение Netlify на GitHub.

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

К сожалению, вы получите сообщение «Страница не найдена». Это потому, что мы не добавили ни одного HTML-файла, который мог бы появиться. Так что давай исправим это быстро. Добавьте следующее в корневую папку вашего проекта и зафиксируйте изменения.

Это запустит сборку CircleCI, а также развернет изменения на Netlify. Проблема только в том, что эти шаги выполняются отдельно. Даже если тесты не пройдут, сайт все равно будет развернут. А мы этого не хотим. Итак, в качестве последнего шага давайте наконец соединим их вместе и запустим развертывание Netlify через CircleCI.

Подключение CircleCI к Netlify

Наконец, нам нужно подключить CircleCI к Netlify. На самом деле это проще, чем вы думаете. Сначала перейдите на вкладку «Сборка и развертывание» в Netlify и настройте хук сборки.

Назовите его как хотите. После сохранения вы получите конечную точку API. Если мы отправим запрос POST на этот URL-адрес, Netlify запустит сборку. Итак, давайте перейдем к конфигурационному файлу CircleCI и добавим его в качестве последней команды.

Не рекомендуется передавать конфиденциальную информацию о вашем приложении в систему управления версиями. Вместо этого мы настроим его как переменную окружения под названием «hook». Поэтому, прежде чем фиксировать изменения, откройте свою панель управления на CircleCI и перейдите к настройкам проекта на вкладке «Работа».

В разделе «Переменные среды» добавьте новый ключ с именем «hook», где значение - это конечная точка, которую Netlify предоставил нам для привязки сборки.

Если мы зафиксируем изменения, внесенные в файл конфигурации, мы увидим, что в конце задания запускается развертывание. Но все же, как только мы отправляем изменения в репозиторий, он также запускает развертывание на Netlify. Это означает, что даже если предыдущие шаги завершились неудачно, сайт все равно будет развернут.

К сожалению, есть только обходной путь. Перейдите в настройки «Сборка и развертывание» и установите производственную ветку на то, чего никогда не будет. Таким образом, Netlify не сможет развернуть ветку, и только ловушка может запустить развертывание.

Если мы нарушим тесты, CircleCI никогда не отправит запрос на публикацию в Netlify, и сайт не будет развернут, пока мы не исправим проблему.

Резюме

Теперь, когда вы вносите свои локальные изменения, это всего лишь вопрос секунд, чтобы начать работу. Преимущество Netlify в том, что даже если ваши тесты не обнаруживают критических проблем, вы все равно можете вернуться к предыдущей сборке одним нажатием кнопки.

Спасибо, что нашли время прочитать эту статью. Удачного развертывания!