GitHub Actions: اتوماسیون جریان کار در ریپازیتوری شما

GitHub Actions: اتوماسیون جریان کار در ریپازیتوری شما

مقدمه

GitHub Actions یک ویژگی قدرتمند در پلتفرم گیت‌هاب (GitHub) است که به شما امکان می‌دهد جریان‌های کار (Workflows) اتوماتیک را مستقیماً در ریپازیتوری خود ایجاد، سفارشی‌سازی و اجرا کنید. این ابزار به توسعه‌دهندگان کمک می‌کند تا چرخه‌ی عمر توسعه‌ی نرم‌افزار (SDLC) را به شکل قابل توجهی تسریع و خودکار سازند، که شامل مواردی مانند یکپارچه‌سازی مداوم (Continuous Integration یا CI) و تحویل مداوم (Continuous Delivery یا CD) است.

⚙️ اجزای اصلی GitHub Actions

GitHub Actions بر اساس چند مفهوم کلیدی کار می‌کند:

  • ۱. گردش کار (Workflow):
    • این یک فرآیند قابل تنظیم و خودکار است که شامل یک یا چند کار (Job) است.
    • گردش‌های کار در قالب فایل‌های YAML تعریف می‌شوند و در دایرکتوری .github/workflows در ریپازیتوری شما ذخیره می‌شوند.
    • یک گردش کار مشخص می‌کند که در پاسخ به چه رویدادی (مثلاً یک Push جدید، Pull Request باز شده یا یک زمان‌بندی خاص) باید اجرا شود.
  • ۲. رویداد (Event):
    • یک رویداد، یک فعالیت خاص در ریپازیتوری شماست که باعث فعال شدن گردش کار می‌شود.
    • مثال‌ها عبارتند از:
      • push: هرگاه کدی به یک شاخه (Branch) Push شود.
      • pull_request: هنگام ایجاد، باز کردن، یا همگام‌سازی یک Pull Request.
      • schedule: اجرای گردش کار در زمان‌های مشخص (مشابه Cron jobs).
      • workflow_dispatch: اجازه اجرای دستی گردش کار.
  • ۳. کار (Job):
    • یک کار مجموعه‌ای از گام‌ها (Steps) است که در یک محیط مجازی اجرا می‌شود.
    • هر کار به طور پیش‌فرض به صورت موازی اجرا می‌شود، اما می‌توانید برای اجرای متوالی آن‌ها وابستگی تعریف کنید.
    • شما مشخص می‌کنید که هر کار باید بر روی چه Runnerای اجرا شود (مثلاً سیستم‌عامل‌های ubuntu-latest, windows-latest, یا macos-latest).
  • ۴. گام (Step):
    • یک گام، کوچک‌ترین واحد اجرایی در یک کار است.
    • می‌تواند یک دستور (Command) ساده (مانند npm install یا make) یا یک اکشن (Action) باشد.
    • گام‌ها به ترتیب تعریف شده اجرا می‌شوند و می‌توانند داده‌ها را به یکدیگر ارسال کنند.
  • ۵. اکشن (Action):
    • اکشن‌ها توابع از پیش تعریف شده‌ای هستند که کارهای تکراری را انجام می‌دهند، مانند بررسی کد، راه‌اندازی محیط و احراز هویت.
    • آن‌ها می‌توانند اکشن‌هایی باشند که توسط گیت‌هاب، یک جامعه کاربری یا خودتان ایجاد شده‌اند.
    • استفاده از اکشن‌ها باعث می‌شود که نیازی به نوشتن اسکریپت‌های طولانی برای کارهای معمول نباشد.

🚀 کاربردهای کلیدی GitHub Actions (CI/CD)

مهم‌ترین استفاده از GitHub Actions پیاده‌سازی CI/CD است که فرآیند توسعه را متحول می‌کند:

  1. یکپارچه‌سازی مداوم (CI):
    • ساخت و تست: به محض Push شدن کد جدید، گردش کار به طور خودکار کد را ساخته (Build) و تست‌های واحد (Unit Tests) را اجرا می‌کند.
    • بازخورد سریع: توسعه‌دهندگان به سرعت از شکست‌های تست مطلع می‌شوند و می‌توانند مشکلات را زودتر برطرف کنند.
  2. تحویل/استقرار مداوم (CD):
    • استقرار خودکار: پس از موفقیت‌آمیز بودن تست‌ها، گردش کار می‌تواند به طور خودکار برنامه را بر روی محیط‌های مختلف (مانند سرورهای توسعه، مرحله‌بندی یا تولید) مستقر (Deploy) کند.
    • انتشار (Releasing): مدیریت خودکار انتشارها، برچسب‌گذاری (Tagging) و ایجاد نسخه‌های جدید (Releases) در گیت‌هاب.

🛡️ مزایای استفاده از GitHub Actions

مزیتتوضیح
یکپارچگی عمیقبه دلیل بومی بودن در گیت‌هاب، دسترسی مستقیم به API گیت‌هاب، رویدادها و اطلاعات ریپازیتوری دارد.
جامعه قویهزاران اکشن در Marketplace گیت‌هاب موجود است که می‌توان از آن‌ها برای هر کاربری استفاده کرد.
محیط‌های مختلفپشتیبانی از Runnerهای لینوکس، ویندوز و macOS (Runnerهای هاست شده توسط گیت‌هاب) و همچنین امکان استفاده از Self-hosted Runners.
رایگان برای پروژه‌های عمومیبرای ریپازیتوری‌های عمومی، استفاده از GitHub Actions به طور کلی رایگان است و برای ریپازیتوری‌های خصوصی نیز دارای سهمیه رایگان است.

📝 نمونه کد ساده (مثال: اجرای تست‌ها)

این یک مثال ساده از یک فایل YAML برای یک گردش کار است که هنگام Push شدن کد به شاخه main اجرا می‌شود و تست‌های Node.js را اجرا می‌کند.

# .github/workflows/ci.yml

name: CI - Run Tests

on:
 push:
   branches: [ main ]
 pull_request:
   branches: [ main ]

jobs:
 build-and-test:
   runs-on: ubuntu-latest # محیطی که Job روی آن اجرا می شود

   steps:
     - uses: actions/checkout@v4 # Action: کد ریپازیتوری را Checkout می کند

     - name: Set up Node.js
       uses: actions/setup-node@v4
       with:
         node-version: '20' # از نسخه 20 نود استفاده می کند

     - name: Install dependencies
       run: npm install # دستور نصب وابستگی ها

     - name: Run tests
       run: npm test # دستور اجرای تست ها

GitHub Actions به توسعه‌دهندگان این امکان را می‌دهد که تمرکز خود را بر روی نوشتن کد با کیفیت بگذارند، در حالی که ابزارهای اتوماسیون کارهای تکراری و زمان‌بر را مدیریت می‌کنند و استانداردهای کیفی را در طول فرآیند توسعه حفظ می‌کنند.

آماده‌اید فرصت بعدی را کشف کنید؟

به هزاران موقعیت شغلی دسترسی پیدا کنید و با یک پروفایل حرفه‌ای، سریع‌تر استخدام شوید.