0Pricing
PHP Academy · Урок

Развёртывание с GitHub Actions

Автоматизируйте сборку, тестирование и развёртывание по SSH в рабочем процессе GitHub Actions

«Развёртывание с GitHub Actions» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Что такое GitHub Actions?

GitHub Actions — это встроенная в GitHub платформа непрерывной интеграции и доставки. Рабочие процессы, определённые в .github/workflows/*.yml, автоматически запускаются при отправке изменений, создании запроса на слияние или по расписанию.

Базовая структура рабочего процесса

Рабочий процесс состоит из одной или нескольких задач, каждая из которых содержит шаги.

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

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

Шаг развертывания по SSH

Развертывайте приложение на сервере по SSH после успешного выполнения тестов.

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

Секреты GitHub

Храните конфиденциальные значения (ключи SSH, токены API и пароли баз данных) как зашифрованные секреты репозитория в разделе «Настройки» → «Секреты и переменные».

Кэширование зависимостей

Кэшируйте пакеты Composer между запусками, чтобы ускорить рабочие процессы.

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

Запуск тестов

Добавляйте служебный контейнер MySQL или PostgreSQL для интеграционных тестов.

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Переменные окружения в Actions

Передавайте секреты как переменные окружения шагам рабочего процесса.

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

Проверки качества кода

Запрещайте развертывание, если проверки качества кода завершились с ошибкой.

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

Тестирование по матрице

Проверяйте работу одновременно в нескольких версиях PHP.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

Стратегии развертывания

Распространённые подходы: прямой git pull (простой вариант), rsync (быстрая синхронизация файлов), стратегия blue-green (нулевой простой), Deployer PHP (автоматизированное развертывание без простоя). Выбирайте подход с учётом допустимого простоя.

Итоги

Определяйте рабочие процессы в .github/workflows/*.yml. Запускайте тесты при каждой отправке изменений, а развертывание — после слияния изменений в основную ветку. Кэшируйте зависимости, храните секреты в секретах GitHub и добавляйте проверки качества перед развертыванием.

Быстрая проверка

Где хранятся конфиденциальные значения, например ключи SSH, для GitHub Actions?

Часто задаваемые вопросы

Урок «Развёртывание с GitHub Actions» бесплатный?

Да — полный текст урока «Развёртывание с GitHub Actions» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Развёртывание с GitHub Actions»?

Автоматизируйте сборку, тестирование и развёртывание по SSH в рабочем процессе GitHub Actions Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Развёртывание с GitHub Actions»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка Nginx и PHP-FPM
  2. Переменные окружения и файлы .env
  3. Развёртывание с GitHub Actions
  4. Контейнеризация приложения PHP
← Назад к PHP Academy