Развёртывание с 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 — локальная установка не требуется.
Все уроки этого курса
- Настройка Nginx и PHP-FPM
- Переменные окружения и файлы .env
- Развёртывание с GitHub Actions
- Контейнеризация приложения PHP