Назад к блогу

Как использовать Bitbucket Pipelines для CI/CD в веб-разработке WordPress и Drupal

2023-12-026 мин чтения

В мире веб-разработки важно работать быстро и без ошибок. Непрерывная интеграция и непрерывное развертывание (CI/CD) помогают достичь этого, автоматизируя части нашей работы. В этой статье я продемонстрирую, как использовать Bitbucket Pipelines для автоматизации различных задач, таких как тестирование и развертывание проектов, созданных с использованием Drupal и WordPress, двух широко используемых систем управления контентом.

Введение в Bitbucket и Git

Прежде чем углубляться в тонкости Bitbucket Pipelines, важно понять сам Bitbucket. Bitbucket, часть пакета Atlassian, — это веб-сервис для хостинга репозиториев систем контроля версий. Он широко используется для управления репозиториями Git, предлагая как частные, так и общедоступные репозитории. Эта функция, особенно наличие частных репозиториев в бесплатном тарифе, делает Bitbucket предпочтительным выбором для команд и индивидуальных разработчиков. Это не просто хостинг кода; Bitbucket интегрируется с другими продуктами Atlassian, такими как Jira и Bamboo, создавая бесшовную экосистему для разработки программного обеспечения, от планирования до развертывания. Git, основа Bitbucket, — это распределенная система контроля версий, которая позволяет нескольким разработчикам эффективно сотрудничать над одной и той же кодовой базой.

Что такое Bitbucket Pipelines?

Представьте себе инструмент, который начинает действовать в тот момент, когда вы отправляете изменения в свой удаленный репозиторий. Это Bitbucket Pipelines. Интегрированный в ваш репозиторий Bitbucket, он автоматизирует различные задачи при каждом обновлении вашего кода. Эти задачи определяются в конфигурационном файле с именем bitbucket-pipelines.yml. Диапазон выполняемых автоматизированных шагов включает, но не ограничивается:

  1. Тестирование кода: Запуск модульных тестов, интеграционных тестов и других автоматизированных тестов для обеспечения качества кода.
  2. Сквозное тестирование: Запуск E2E-тестов для имитации сценариев реальных пользователей и проверки полной функциональности и пользовательского опыта приложения.
  3. Развертывание кода: Автоматическое развертывание кода в различных средах, таких как staging или production.
  4. Сборка артефактов: Компиляция кода или сборка приложений в развертываемые пакеты или исполняемые файлы.
  5. Выполнение скриптов: Выполнение пользовательских скриптов для различных целей, таких как миграция баз данных или задачи очистки.
  6. Линтинг и анализ кода: Проверка кода на наличие синтаксических ошибок, проблем с форматированием и потенциальных ошибок.
  7. Уведомления: Отправка уведомлений или оповещений на основе результатов шагов конвейера.
  8. Операции с Docker: Сборка, запуск и отправка образов Docker в реестры.
  9. Сканирование безопасности: Выполнение проверок безопасности для выявления уязвимостей в кодовой базе.
  10. Генерация документации: Автоматическая генерация и обновление документации на основе изменений кода.
  11. Тестирование производительности: Проведение нагрузочных тестов и тестов производительности для оценки поведения приложения под нагрузкой.

Благодаря этим возможностям Bitbucket Pipelines повышает эффективность, согласованность и надежность вашего процесса разработки программного обеспечения.

Настройка репозитория с помощью Bitbucket Pipelines

1. Создайте или выберите ваш репозиторий

  • Шаг 1: Войдите в свою учетную запись Bitbucket.
  • Шаг 2: Создайте новый репозиторий или выберите существующий, в котором вы хотите настроить Bitbucket Pipelines.

2. Инициализация Bitbucket Pipelines

  • Шаг 3: В вашем репозитории перейдите в раздел «Pipelines» в левой боковой панели.
Bitbucket Pipelines
  • Шаг 4: Нажмите «Create your first pipeline». Bitbucket отобразит различные шаблоны.
  • Шаг 5: Выберите шаблон, который лучше всего соответствует технологическому стеку вашего проекта. Например, выберите «Build PHP Application» для проекта на основе PHP.
  • Шаг 6: Bitbucket отобразит сгенерированный файл bitbucket-pipelines.yml на основе выбранного шаблона. Просмотрите конфигурацию конвейера, чтобы убедиться, что она соответствует требованиям вашего проекта. Этот файл включает предопределенные шаги для тестирования и линтинга вашего PHP-кода.
  • Шаг 7: Вы можете редактировать файл непосредственно в интерфейсе Bitbucket, чтобы настроить шаги конвейера в соответствии с потребностями вашего проекта. Убедитесь, что вы определили любые дополнительные шаги сборки, тестирования или развертывания, которые требуются вашему проекту.
  • Шаг 8: После того как вы просмотрели и при необходимости отредактировали конфигурацию, нажмите «Commit file», чтобы сохранить файл bitbucket-pipelines.yml в вашем репозитории.

3. Добавьте SSH-ключ для доступа к серверу (необязательно)

  • Шаг 9: Перейдите в «Repository settings», затем в «SSH keys» в разделе «Pipelines», если ваш процесс развертывания требует SSH-доступа к вашему серверу.
  • Шаг 10: Здесь вы можете либо сгенерировать новую пару SSH-ключей, либо добавить существующую, нажав «Use my own keys».
  • Шаг 11: Если вы добавляете существующий ключ, введите закрытый ключ в предоставленное поле и присвойте ему метку (например, «Deployment Server»).
  • Шаг 12: Чтобы SSH-ключ работал, вам также необходимо добавить информацию о хосте сервера в раздел «Known hosts». Введите адрес хоста и получите отпечаток хоста, чтобы обеспечить безопасные соединения.
  • Шаг 13: Сохраните детали SSH-ключа и известных хостов.

4. Определите переменные репозитория

  • Шаг 14: Перейдите в «Repository settings» и нажмите «Repository variables» в разделе «Pipelines».
  • Шаг 15: Нажмите кнопку «Add», чтобы создать новую переменную.
  • Шаг 16: Введите «Name» для переменной, например DEV_SERVER, и соответствующее ей «Value».
  • Шаг 17: Если переменная является конфиденциальной, убедитесь, что установлен флажок «Secured», чтобы скрыть значение в журналах.
  • Шаг 18: Нажмите «Add», чтобы сохранить переменную.

5. Определите среды развертывания

  • Шаг 19: В «Repository settings» перейдите в «Deployments» в разделе «Pipelines».
  • Шаг 20: Определите свои среды развертывания. Bitbucket поддерживает до ста сред развертывания в категориях: Test, Staging и Production.
  • Шаг 21: Для каждой среды вы можете указать различные конфигурации. Введите специфичные для среды данные, такие как URL-адреса, пути к серверам или любые другие соответствующие данные в качестве переменных репозитория, предваряя их именем среды, например TEST_, STAGE_ и PROD_ для ясности.
  • Шаг 22: Убедитесь, что любая конфиденциальная информация для каждой среды защищена. Bitbucket будет маскировать защищенные переменные в журналах и пользовательском интерфейсе.

6. Завершите настройку

  • Шаг 23: Зафиксируйте любые изменения в файле bitbucket-pipelines.yml.
  • Шаг 24: Отправьте изменения в ваш репозиторий, чтобы запустить конвейер.
  • Шаг 25: Используйте ignorelist.txt в вашем процессе развертывания. В рамках шага развертывания, особенно при синхронизации файлов с помощью rsync, важно управлять тем, какие файлы передаются в производственную среду. Для этого мы используем специальный файл под названием ignorelist.txt. Этот файл содержит список всех файлов и каталогов, которые должны быть исключены в процессе rsync, чтобы предотвратить перезапись или ненужную передачу файлов.

Практические примеры конфигураций bitbucket-pipelines.yml можно найти в этом репозитории: Примеры Bitbucket Pipelines. Примечательно, что этот пример, ориентированный на Drupal, иллюстрирует выполнение composer install в облаке для проектов Drupal. Эти примеры служат полезной отправной точкой для настройки ваших собственных конвейеров.

7. Отслеживайте ваш конвейер

Шаг 26: Проверяйте раздел «Pipelines» после каждого push, чтобы отслеживать выполнение и просматривать журналы.

Заключительные мысли

Подводя итог, Bitbucket Pipelines привносит много удобства и эффективности в веб-разработку. Он упрощает командную работу, тестирование и развертывание, делая нашу работу более гладкой.

Помните, что мир CI/CD постоянно развивается. То, что я осветил, — это только начало. По мере того как вы будете больше использовать Bitbucket Pipelines, вы будете находить новые способы сделать его лучше соответствующим вашим потребностям. Продолжайте исследовать и совершенствовать свой процесс разработки. Удачного отладки!