Ответ
Bash-скрипт для CI/CD автоматизирует этапы сборки, тестирования и развертывания приложения. Его структура обычно включает следующие блоки:
-
Настройка окружения и установка зависимостей:
# Установка зависимостей для PHP и JavaScript проекта composer install --no-dev --prefer-dist npm ci -
Запуск статического анализа и тестов:
# Проверка синтаксиса и стиля кода php -l src/ vendor/bin/phpcs --standard=PSR12 src/ # Запуск юнит-тестов vendor/bin/phpunit --coverage-text npm run test -
Сборка проекта (build):
# Компиляция фронтенд-ассетов npm run production # Оптимизация автозагрузчика и кэша для Laravel/Symfony php artisan optimize composer dump-autoload -o -
Развертывание (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) для лучшей поддержки.