← Назад к вопросам

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

2.0 Middle🔥 141 комментариев
#Инфраструктура и DevOps

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Содержание Bash-скриптов в CI/CD

Bash-скрипты в контексте CI/CD (Continuous Integration/Continuous Deployment) выполняют роль автоматизированных исполнителей задач. Они содержат последовательность команд, которые описывают этапы процесса интеграции, тестирования и развертывания программного обеспечения. Основная цель таких скриптов — обеспечить надежность, повторяемость и скорость выполнения рутинных операций в среде разработки.

Ключевые компоненты Bash-скрипта CI/CD

Обычно такой скрипт включает следующие секции:

  1. Настройка окружения и переменных Определение переменных для пути к проекту, версий, конфигураций.

    PROJECT_DIR="/var/www/project"
    DEPLOY_ENV="production"
    ARTIFACT_NAME="build-$CI_COMMIT_SHA.tar.gz"
    
  2. Зависимости и подготовка Установка необходимых пакетов, библиотек, настройка сервисов.

    apt-get update && apt-get install -y php8.1-cli composer nginx
    composer install --no-dev --optimize-autoloader
    
  3. Тестирование Запуск юнит-тестов, интеграционных тестов, проверка стиля кода.

    php ./vendor/bin/phpunit --testsuite Unit
    php ./vendor/bin/phpcs --standard=PSR12 src/
    
  4. Сборка (Build) Компиляция кода, минификация ресурсов, создание артефакта.

    php artisan optimize
    npm run production
    tar -czf $ARTIFACT_NAME .
    
  5. Развертывание (Deployment) Копирование артефактов на целевые серверы, перезапуск сервисов.

    scp $ARTIFACT_NAME user@server:/tmp/
    ssh user@server "tar -xzf /tmp/$ARTIFACT_NAME -C /var/www/app && systemctl reload php-fpm"
    
  6. Валидация и мониторинг Проверка успешности деплоя, отправка уведомлений.

    curl -f http://server/health-check || exit 1
    echo "Deployment to $DEPLOY_ENV completed successfully" | send-notification
    

Пример полного скрипта для PHP проекта

#!/bin/bash
# CI/CD скрипт для деплоя PHP приложения

set -e # Завершить скрипт при любой ошибке

# Конфигурация
APP_NAME="my-api"
DEPLOY_PATH="/var/www/$APP_NAME"
BACKUP_PATH="/backup/$APP_NAME"

# 1. Установка зависимостей
echo "Installing dependencies..."
composer install --no-dev --prefer-dist

# 2. Тестирование
echo "Running tests..."
php vendor/bin/phpunit
php vendor/bin/phpcs src/

# 3. Создание бэкэпа
echo "Creating backup..."
tar -czf "$BACKUP_PATH/$(date +%Y%m%d).tar.gz" -C "$DEPLOY_PATH" .

# 4. Синхронизация кода
echo "Syncing code..."
rsync -av --delete ./ "$DEPLOY_PATH/" --exclude=.git

# 5. Применение изменений
echo "Applying changes..."
sudo systemctl reload php8.1-fpm
sudo service nginx reload

# 6. Проверка здоровья
echo "Health check..."
sleep 5
curl -f "http://localhost/health" > /dev/null

echo "Deployment successful!"

Преимущества использования Bash для CI/CD

  • Портретность: Bash работает почти во всех Unix-подобных системах.
  • Интеграция: легко сочетается с инструментами CI/CD (Jenkins, GitLab CI, GitHub Actions).
  • Прозрачность: команды явно описывают каждый шаг процесса.
  • Контроль: можно детально управлять логикой, условиями (if, case), обработкой ошибок.

Рекомендации по написанию

  • Используйте set -e для немедленного прекращения при ошибках.
  • Добавляйте подробное логирование (echo) для отслеживания прогресса.
  • Включайте обработку ошибок и откат (rollback) при неудачном деплое.
  • Храните секретные данные (ключи, пароли) в переменных окружения, не в скрипте.

Таким образом, Bash-скрипт в CI/CD представляет собой программируемый сценарий, который заменяет ручные операции разработчика, обеспечивая автоматизированный, контролируемый и надежный процесс доставки кода от репозитория до production-окружения.