CI/CD با Git — خودکارسازی با GitHub Actions

مفهوم CI/CD و آشنایی عملی با GitHub Actions: تست خودکار، build و انتشار خودکار سایت با هر push.

CI/CD چیست؟

بدون CI/CD: push می‌کنید → امیدوارید کار کند → دستی روی سرور کپی می‌کنید → می‌شکند! 😩

با CI/CD: push می‌کنید → ربات‌ها تست می‌کنند → build می‌گیرند → خودکار منتشر می‌کنند ✅

GitHub Actions

GitHub Actions سیستم CI/CD داخلی گیت‌هاب است — فایلی در مخزن می‌گذارید و گیت‌هاب اجرایش می‌کند!

ساختار Actions

workflow در مسیر .github/workflows/ با فرمت YAML:

# .github/workflows/test.yml
name: تست پروژه

on: [push]  # با هر push اجرا شود

jobs:
  test:
    runs-on: ubuntu-latest   # روی ماشین لینوکسی گیت‌هاب
    steps:
      - uses: actions/checkout@v4   # کد را بردار
      - uses: actions/setup-node@v4 # نود را نصب کن
        with:
          node-version: 20
      - run: npm install            # وابستگی‌ها
      - run: npm test               # تست‌ها را اجرا کن

اجزای اصلی

جزءتوضیح
workflowکل فایل — مجموعه کارهای خودکار
onرویداد شروع: push، pull_request، schedule...
jobsگروه‌های کار (هر کدام روی ماشین جدا)
stepsقدم‌های داخل هر job
usesاستفاده از اکشن آماده دیگران
runاجرای دستور ترمینال

رویدادهای شروع (on)

on: push                          # هر push
on: [push, pull_request]          # push و PR
on:
  push:
    branches: [main]              # فقط push به main
on:
  schedule:
    - cron: "0 3 * * *"           # هر روز ساعت ۳ صبح

دیدن نتیجه

تب Actions مخزن را باز کنید:

مثال واقعی: انتشار سایت Vue در GitHub Pages

# .github/workflows/deploy.yml
name: انتشار سایت

on:
  push:
    branches: [main]

permissions:
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run build          # build پروژه
      - uses: actions/upload-pages-artifact@v3
        with:
          path: dist
      - uses: actions/deploy-pages@v4

حالا هر push به main = سایت خودکار به‌روز می‌شود! 🚀

مارکت اکشن‌ها

هزاران اکشن آماده در github.com/marketplace — deploy به هرجا، اطلاع به تلگرام/اسلک، تحلیل کد، publish پکیج و...

محدودیت رایگان

خلاصه

این مبحث بخشی از دوره آموزش کامل Git است.

ابزارهای مرتبط