Урок 20

Непрерывная интеграция (CI/CD)

18 мин

CI/CD (Continuous Integration / Continuous Deployment) — это практика автоматизации сборки, тестирования и деплоя кода.

Что такое CI/CD?

  • Continuous Integration: Автоматический запуск тестов при каждом коммите
  • Continuous Delivery: Автоматическая подготовка к деплою
  • Continuous Deployment: Автоматический деплой на продакшн
Преимущества CI/CD:
- Быстрое обнаружение ошибок
- Уверенность в качестве кода
- Ускорение релизов
- Меньше ручной работы

GitHub Actions

Самый популярный CI/CD инструмент. Бесплатен для публичных репозиториев.

Структура workflow:

# .github/workflows/tests.yml
name: Tests

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    
    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: \"8.2\"
        extensions: mbstring, pdo_mysql
        
    - name: Install dependencies
      run: composer install --prefer-dist --no-progress
      
    - name: Run tests
      run: ./vendor/bin/phpunit

Пример полного пайплайна

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run tests
        run: |
          composer install
          ./vendor/bin/phpunit
          
  deploy:
    needs: test  # Запускается только после успешных тестов
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: \${{ secrets.HOST }}
          username: \${{ secrets.USERNAME }}
          key: \${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/mysite
            git pull origin main
            composer install --no-dev
            php artisan migrate --force

Secrets и переменные

Пароли и ключи хранятся в Settings → Secrets:

# Использование в workflow
env:
  DB_PASSWORD: \${{ secrets.DB_PASSWORD }}
  
# или в шаге
- name: Deploy
  env:
    SSH_KEY: \${{ secrets.SSH_KEY }}

Badges

Добавьте бейдж статуса в README:

![Tests](https://github.com/user/repo/workflows/Tests/badge.svg)

Другие CI/CD системы

СистемаОсобенности
GitHub ActionsВстроен в GitHub, бесплатен для open source
GitLab CIМощный, встроен в GitLab
JenkinsSelf-hosted, максимально гибкий
CircleCIОблачный, быстрый

Поздравляем! Вы прошли теоретический курс PHP!

Вы освоили:
- Основы: синтаксис, переменные, операторы, условия, циклы
- Функции и область видимости
- Массивы и работа со строками
- ООП: классы, наследование, интерфейсы, трейты
- Веб-разработка: формы, GET/POST, валидация
- Базы данных через PDO
- Безопасность: XSS, SQL-инъекции, CSRF, хеширование
- Регулярные выражения
- Структуры данных и алгоритмы
- Тестирование: PHPUnit, TDD, моки
- CI/CD: автоматизация, GitHub Actions

Что дальше? Практический курс!

Готовы применить знания на практике?

Переходите к курсу «PHP: Создаём блог с нуля» — там вы создадите полноценный проект:

- Настроите окружение с Docker
- Создадите блог с авторизацией
- Сделаете админ-панель
- Применить всё, что изучили здесь!

Другие варианты развития

  1. Фреймворки — Laravel или Symfony для крупных проектов
  2. API — создание REST API
  3. Микросервисы — современная архитектура

Главное правило: Код нужно писать каждый день. Даже 30 минут практики лучше, чем часы теории!

Ресурсы для продолжения:
- php.net — официальная документация
- Laravel.com — популярный фреймворк
- SymfonyCasts — видеокурсы
- PHP The Right Way — лучшие практики

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