CI/CD با Git — خودکارسازی با GitHub Actions
مفهوم CI/CD و آشنایی عملی با GitHub Actions: تست خودکار، build و انتشار خودکار سایت با هر push.
CI/CD چیست؟
- CI (Continuous Integration — یکپارچهسازی مداوم): با هر push، کد بهصورت خودکار تست و build میشود — خطاها همان لحظه پیدا میشوند
- CD (Continuous Deployment/Delivery — استقرار مداوم): بعد از تست موفق، کد بهصورت خودکار منتشر میشود (روی سرور، سایت و...)
بدون 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 مخزن را باز کنید:
- هر اجرا با وضعیت: ✅ موفق / ❌ شکست
- روی هر اجرا کلیک کنید — خروجی هر قدم قابلمشاهده است
- روی commitها هم نشان ✅/❌ میآید — در PR هم دیده میشود
مثال واقعی: انتشار سایت 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 پکیج و...
محدودیت رایگان
- مخازن عمومی: نامحدود رایگان ✅
- مخازن خصوصی: سهمیه ماهانه محدود (۲۰۰۰ دقیقه در پلن رایگان)
خلاصه
- CI/CD = تست و انتشار خودکار با هر push
- GitHub Actions: فایل YAML در
.github/workflows/ - on = چه زمانی، jobs = چه کارهایی، steps = چطور
- برای مخازن عمومی رایگان و نامحدود است
این مبحث بخشی از دوره آموزش کامل Git است.