🚀 CI/CD шпаргалка

Автоматический деплой сайта через GitHub + Docker

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

Автоматическая доставка кода на сервер.

git push → GitHub → сервер → сайт обновился

🧠 Как это работает

1. Ты пушишь код
2. Запускается pipeline
3. Сервер подключается
4. Обновляет проект
5. Docker пересобирает контейнер
6. Сайт обновляется

📊 Схема CI/CD

💻 Локальный код
📦 GitHub
⚙️ CI/CD
🖥 Сервер
🐳 Docker
🌐 Сайт

🧱 Структура проекта

mysite/
 ├── html/
 │    ├── index.html
 │    ├── css/
 │    ├── js/
 │    └── images/
 ├── Dockerfile
 └── docker-compose.yml

⚙️ Dockerfile

FROM nginx:alpine
COPY html /usr/share/nginx/html
EXPOSE 80

⚙️ docker-compose.yml

services:
  mysite:
    build: .
    container_name: mysite
    restart: always
    ports:
      - "8081:80"

📦 Репозиторий

git init
git add .
git commit -m "init"
git remote add origin git@github.com:USERNAME/mysite.git
git branch -M main
git push -u origin main

🔐 SSH доступ

ssh-keygen -t ed25519

Добавить ключ:
• сервер → ~/.ssh/authorized_keys
• GitHub → SSH Keys

🔑 Secrets

Settings → Secrets → Actions

SSH_PRIVATE_KEY
SERVER_IP
SERVER_USER

🖥 Сервер

apt update
apt install docker.io docker-compose -y

cd /home
git clone git@github.com:USERNAME/mysite.git
cd mysite
docker compose up -d --build

🤖 CI/CD pipeline

.github/workflows/deploy.yml

name: Deploy

on:
  push:
    branches: [ "main" ]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Deploy
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_IP }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /home/mysite
            git pull
            docker compose down
            docker compose up -d --build

🚀 Деплой

git add .
git commit -m "update"
git push

⚠️ Частые ошибки

fatal: not a git repository
→ нет git clone

No event triggers defined in on
→ ошибка в YAML

нет обновлений
→ проверь git pull и docker

🚀 Live CI/CD Demo

💻Code
📦GitHub
⚙️CI
🖥Server
🐳Docker
🌐Live