CI/CD چیست و چرا به آن نیاز داریم؟
تصور کنید هر بار که کدی را به مخزن پوش میکنید، بهصورت خودکار تستها اجرا شوند، کد از نظر استاندارد بررسی شود، پروژه بیلد شود و اگر همهچیز سالم بود، نسخهی جدید روی سرور قرار بگیرد. این دقیقاً همان چیزی است که CI/CD یا «یکپارچهسازی و استقرار مداوم» به ما میدهد.
GitHub Actions سادهترین راه برای شروع است؛ چون مستقیماً داخل همان مخزن GitHub شما کار میکند و برای مخازن عمومی رایگان است.

مفاهیم اصلی GitHub Actions
- Workflow: یک فایل YAML در مسیر
.github/workflowsکه کل فرایند را تعریف میکند. - Event: رویدادی که Workflow را اجرا میکند؛ مثل
push،pull_requestیا زمانبندی. - Job: مجموعهای از مراحل که روی یک ماشین مجازی اجرا میشوند. Jobها میتوانند موازی یا وابسته به هم باشند.
- Step: هر دستور یا Action آماده که داخل یک Job اجرا میشود.
قدم اول: یکپارچهسازی مداوم (CI)
این Workflow روی هر Pull Request اجرا میشود و اجازه نمیدهد کد خراب وارد شاخهی اصلی شود:
name: CI
on:
pull_request:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run buildگزینهی cache: npm پوشهی کش را بین اجراها نگه میدارد و زمان نصب وابستگیها را بهشدت کاهش میدهد.

قدم دوم: استقرار مداوم (CD)
بعد از موفقیت تستها، نوبت استقرار است. یکی از سادهترین روشها، اتصال SSH به سرور و اجرای اسکریپت استقرار است:
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Deploy over SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd ~/my-site
./deploy.shعبارت needs: test تضمین میکند که استقرار فقط بعد از موفقیت تستها انجام شود و شرط if جلوی استقرار از شاخههای دیگر را میگیرد.
مدیریت امن اطلاعات حساس
هرگز رمز عبور، کلید SSH یا توکن API را مستقیماً داخل فایل YAML ننویسید. این مقادیر را از مسیر Settings → Secrets and variables → Actions در مخزن تعریف کنید. GitHub آنها را رمزنگاری میکند و در لاگها هم بهصورت ستاره نمایش میدهد.

چند تجربهی کاربردی
- Workflowها را کوچک نگه دارید: لینت، تست و بیلد را در Jobهای جدا اجرا کنید تا خطا سریعتر پیدا شود.
- از Matrix استفاده کنید: با
strategy.matrixکد را همزمان روی چند نسخهی Node.js تست کنید. - محیطها را جدا کنید: با قابلیت Environments برای استقرار روی production تأیید دستی بگذارید.
- نسخهی Actionها را قفل کنید: بهجای شاخه، از نسخهی مشخص مثل
@v4استفاده کنید. - اعلان بگیرید: نتیجهی استقرار را به تلگرام یا ایمیل تیم ارسال کنید.

نتیجهای که به دست میآید
پس از راهاندازی CI/CD، دیگر نگران فراموش کردن اجرای تستها یا اشتباه در مراحل دستی استقرار نیستید. هر تغییر کوچک بهسرعت و با اطمینان به دست کاربر میرسد و تیم میتواند بهجای کارهای تکراری، روی ساخت قابلیتهای جدید تمرکز کند.

جمعبندی
GitHub Actions ورود به دنیای CI/CD را برای هر توسعهدهندهای ساده کرده است. با همین دو Job ساده، کیفیت کد تضمین میشود و استقرار از یک کار استرسزا به یک اتفاق روزمره و بیدردسر تبدیل میشود. از یک Workflow کوچک شروع کنید و کمکم آن را متناسب با نیاز پروژه گسترش دهید.

دیدگاهها
هنوز دیدگاهی ثبت نشده است. اولین نفر باشید!