Что обычно находится в Bash-скрипте для CI/CD?

«Что обычно находится в Bash-скрипте для CI/CD?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Bash-скрипт для CI/CD автоматизирует этапы сборки, тестирования и развертывания приложения. Его структура обычно включает следующие блоки:

  1. Настройка окружения и установка зависимостей:

    # Установка зависимостей для PHP и JavaScript проекта
    composer install --no-dev --prefer-dist
    npm ci
  2. Запуск статического анализа и тестов:

    # Проверка синтаксиса и стиля кода
    php -l src/
    vendor/bin/phpcs --standard=PSR12 src/
    # Запуск юнит-тестов
    vendor/bin/phpunit --coverage-text
    npm run test
  3. Сборка проекта (build):

    # Компиляция фронтенд-ассетов
    npm run production
    # Оптимизация автозагрузчика и кэша для Laravel/Symfony
    php artisan optimize
    composer dump-autoload -o
  4. Развертывание (deploy):

    # Копирование файлов на сервер
    rsync -avz --delete ./build/ user@production-server:/var/www/app/
    # Выполнение миграций и команд на сервере
    ssh user@production-server "cd /var/www/app && php artisan migrate --force"

Ключевые практики:

  • Использование переменных окружения ($CI_COMMIT_SHA, $DEPLOY_PATH) для конфигурации.
  • Проверка кодов возврата команд (set -e) для немедленного прекращения скрипта при ошибке.
  • Логирование и отправка уведомлений (например, в Slack) о результатах сборки.
  • Разделение на отдельные скрипты или этапы (build, test, deploy) для лучшей поддержки.