Налаштування CI/CD для сайту через GitHub Actions
GitHub Actions вбудований прямо у репозиторій — ніяких зовнішніх серверів, ніяких окремих акаунтів. Воркфлоу описуються у YAML і зберігаються у .github/workflows/. Для більшості проектів цього достатньо: тести, сборка, деплой.
Структура воркфлоу
Мінімальний воркфлоу для сайту на Node.js з деплоєм по SSH:
name: Deploy
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm test
build:
needs: test
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-22.04
environment: production
steps:
- uses: actions/download-artifact@v4
with:
name: dist
- name: Deploy via rsync
uses: burnett01/[email protected]
with:
switches: -avzr --delete
path: dist/
remote_path: /var/www/mysite
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_user: deploy
remote_key: ${{ secrets.DEPLOY_KEY }}
Три джоба: тест → сборка → деплой. Якщо тести упали — сборка не запуститься.
Управління секретами
Все чутливе — у Settings → Secrets and variables. Ніяких ключів у коді.
- name: Configure .env
run: |
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> .env
Laravel проект
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: pdo_pgsql, redis
- run: composer install --no-dev --optimize-autoloader
- run: php artisan config:cache
Docker-сборка та пуш
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/${{ github.repository }}:${{ github.sha }}
cache-from: type=gha
Сповіщення
- name: Notify Telegram on failure
if: failure()
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_CHAT_ID }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: "Deployment failed"
Час налаштування: 1-2 дні для базового воркфлоу з тестами та деплоєм.







