در دنیای توسعه نرمافزار، اتوماسیون نقشی کلیدی را ایفا میکند. گیتهاب اکشن (GitHub Actions) یکی از ابزارهای قدرتمند در این زمینه است که به شما کمک میکند تا فرآیندهای توسعه نرمافزار خود را به طور خودکار انجام دهید. در این مطلب، به بررسی جامع گیتهاب اکشن میپردازیم و به شما نشان میدهیم که چگونه میتوانید از آن در پروژههای خود بهره ببرید.
گیتهاب اکشن چیست؟
گیتهاب اکشن پلتفرم CI/CD است که به شما امکان میدهد تا فرآیندهای ساخت، تست و انتشار نرمافزار را خودکار کنید. این پلتفرم به شما اجازه میدهد تا کدهای دلخواه خود را بر روی مخزنی خاص و در زمان وقوع رویدادی مشخص اجرا کنید. گیتهاب اکشن از کدهای بستهبندی شده در داکر کانتینرها استفاده میکند که روی سرورهای گیتهاب اجرا میشوند. این ابزار با تمامی زبانهای برنامهنویسی سازگار است و میتوانید آن را بر روی ابرهای عمومی و سرورهای محلی اجرا کنید. بهطور خلاصه، GitHub Actions به شما کمک میکند تا:
- فرآیند ساخت، تست و استقرار نرمافزار را خودکار کنید.
- کارهای تکراری را بدون نیاز به دخالت دستی انجام دهید.
- فرآیندهای کاری خود را بر اساس رویدادهای مختلف در مخزن خود راهاندازی کنید.

معماری و مفاهیم کلیدی گیتهاب اکشن
برای درک بهتر گیتهاب اکشن، لازم است با مفاهیم و اصطلاحات کلیدی آن آشنا شوید:
- Workflow (گردش کار): یک فرآیند خودکار است که شامل یک یا چند job است. گردش کارها با استفاده از فایلهای YAML پیکربندی میشوند و میتوانند بر اساس رویدادهای مختلف، به صورت دستی یا زمانبندی شده اجرا شوند. فایلهای گردش کار در دایرکتوری .github/workflows هر مخزن قرار میگیرند.
- Event (رویداد): یک فعالیت خاص در مخزن است که باعث راهاندازی یک گردش کار میشود. رویدادها میتوانند شامل ایجاد یک pull request، باز کردن یک issue یا push کردن یک commit باشند. همچنین میتوان گردش کارها را بر اساس زمانبندی یا به صورت دستی فعال کرد.
- Job (کار): مجموعهای از مراحل در یک گردش کار است که روی یک runner اجرا میشود. هر job شامل یک یا چند step است که میتوانند یک اسکریپت از پیش تعیین شده یا یک action باشند.
- Action (عمل): یک برنامه سفارشی برای گیتهاب اکشن است که یک کار پیچیده اما تکراری را انجام میدهد. Actionها به شما کمک میکنند تا از نوشتن کدهای تکراری در گردش کار خود اجتناب کنید.
- Runner (اجرا کننده): ماشینی است که اپلیکیشن گیتهاب اکشن روی آن نصب شده و منتظر دریافت job برای اجرا است. runnerها میتوانند توسط گیتهاب میزبانی شوند یا میتوانند runnerهای شخصی باشند.
مزایای استفاده از گیتهاب اکشن
استفاده از گیتهاب اکشن مزایای زیادی برای تیمهای توسعه نرمافزار دارد که از جمله آنها میتوان به موارد زیر اشاره کرد:
- اتوماسیون فرآیندها: گیتهاب اکشن به شما اجازه میدهد تا فرآیندهای تکراری ساخت، تست و استقرار نرمافزار رو خودکار کنید. این کار باعث صرفهجویی در زمان و کاهش احتمال خطا میشود.
- افزایش سرعت توسعه: با اتوماسیون فرآیندها، تیمهای توسعه میتوانند سریعتر کد بنویسند و نرمافزار را به بازار عرضه کنند.
- بهبود کیفیت کد: با اجرای خودکار تستها، میتوانید مطمئن شوید که کدهای شما از کیفیت بالایی برخوردارند و میتوانید مشکلات را سریعتر پیدا کنید.
- استقرار مداوم: گیتهاب اکشنز به شما اجازه میدهد تا به صورت مداوم نرمافزار خود رو استقرار و تغییرات را به سرعت در دسترس کاربران قرار دهید.
- انعطاف پذیری بالا: گیتهاب اکشنز با پشتیبانی از زبانهای برنامهنویسی مختلف و امکان استفاده از Actionهای سفارشی، انعطاف پذیری بالایی را در اختیار شما قرار میدهد.
نحوه ایجاد یک گردش کار در گیتهاب اکشن
برای ایجاد یک گردش کار در گیتهاب اکشن، مراحل زیر را دنبال کنید:
- در مخزن خود، یک دایرکتوری به نام .github/workflows ایجاد کنید.
- در این دایرکتوری، یک فایل YAML با نام دلخواه (مثلاً demo-github-actions-workflow.yml) ایجاد کنید.
- کد YAML را در فایل خود کپی کنید.
- فایل را commit و push کنید.
کد YAML:
name: Demo GitHub Actions Workflow
on: [push]
jobs:
Discover-GitHub-Actions-Workflows:
runs-on: ubuntu-latest
steps:
- name: Echo event
run: echo "${{ github.event_name }} event automatically triggered this job."
- name: Echo runner OS
run: echo " A ${{ runner.os }} server hosted by GitHub has this job running"
- name: Echo repository details
run: echo "Details of your repository: repo-name: ${{ github.repository }} and branch name is${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Checkout code
uses: actions/checkout@v3
- name: Echo clone message
run: echo "The runner has cloned your ${{ github.repository }} repository."
- name: Echo test message
run: echo "The workflow can now test your code with the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- name: Echo Job Status
run: echo " This job has a ${{ job.status }} status."
پس از انجام این مراحل، هر بار که یک push به مخزن خود انجام دهید، این گردش کار اجرا خواهد شد.
مشاهده نتایج گردش کار
برای دیدن نتایج اجرای گردش کار، مراحل زیر را دنبال کنید:
- به صفحه اصلی مخزن خود بروید و روی تب Actions کلیک کنید.
- در سایدبار سمت چپ، گردش کار خود را انتخاب کنید (مثلاً Demo-GitHub-Actions-Workflow).
- در لیست نمایش داده شده، اجرای مورد نظر را انتخاب کنید (مثلاً Create demo-github-actions-workflow.yml).
- در سایدبار سمت چپ، job مورد نظر خود را انتخاب کنید (مثلاً Discover-GitHub-Actions-Workflows).
- لاگهای مربوط به هر مرحله از گردش کار را مشاهده کنید.
نمونههایی از کاربردهای گیتهاب اکشن
گیتهاب اکشن میتواند برای انجام کارهای مختلفی مورد استفاده قرار گیرد، از جمله:
- Continuous Integration (CI): ساخت و تست خودکار کدها پس از هر push یا pull request.
- Continuous Deployment (CD): انتشار خودکار نرمافزار پس از عبور از تستها.
- اتوماسیون وظایف تکراری: انجام خودکار کارهایی مانند اضافه کردن label به issueها یا بستن issueهای غیرفعال.
در ادامه به برخی از کاربردهای رایج گیتهاب اکشنز در پروژهها اشاره میکنیم:
- Eslint: بررسی و گزارش خطاهای جاوااسکریپت.
- Test & Coveralls: اجرای تستهای خودکار و گزارش پوشش تست.
- Npm Publish: انتشار پکیجهای npm بهصورت خودکار.
- Release: ایجاد نسخه جدید از پروژه و انتشار آن در گیتهاب.
مثال: Eslint Workflow
در اینجا یک مثال از یک workflow برای اجرای ESLint آورده شده است:
name: ESLint Check
on: push
jobs:
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: "14.x"
- name: Install Dependencies
run: npm install
- name: Run ESLint
run: npm run eslint
concurrency:
group: eslint-check-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
این workflow هر بار که کدی به مخزن push شود، اجرا میشود، کدهای جاوااسکریپت را بررسی میکند و در صورت وجود خطا، آنها را گزارش میدهد.
نکات مهم در استفاده از گیتهاب اکشن
برای استفاده بهینه از گیتهاب اکشن، به نکات زیر توجه کنید:
- Actionهای کمینه: سعی کنید اکشنها را تا حد امکان ساده و کمینه نگه دارید تا زمان اجرای آنها کاهش یابد.
- اجتناب از دانلودهای غیرضروری: از دانلود وابستگیها (dependencies) به صورت غیرضروری خودداری کنید و از مکانیزم کش گیتهاب استفاده کنید.
- عدم هاردکد کردن secretها: از هاردکد کردن secretها در گردش کارها خودداری کنید و از قسمت secretهای مخزن استفاده کنید.
- ذخیره اطلاعات نویسنده action: در metadata مربوط به action، اطلاعات نویسنده را ذخیره کنید تا مسئولیت هر action مشخص باشد.
گیتهاب اکشن در دارکوب
در دارکوب، ما از گیتهاب اکشنز برای خودکار کردن بسیاری از فرآیندهای توسعه نرمافزار استفاده میکنیم. از جمله این فرآیندها میتوان به تست خودکار کد، بررسی کیفیت کد، انتشار پکیجها و استقرار اپلیکیشنها اشاره کرد. با استفاده از گیتهاب اکشنز، میتوانیم سرعت توسعه نرمافزار را افزایش بدهیم و کیفیت کدها را هم بهبود بخشیم. برای آشنایی بیشتر با نحوه استفاده از گیتهاب اکشنز در دارکوب، میتوانید به مستندات همروش مراجعه کنید:
جمعبندی
گیتهاب اکشن یک ابزار قدرتمند است که به شما امکان میدهد تا فرآیندهای توسعه نرمافزار خود را به طور کامل خودکار کنید. با استفاده از این ابزار، میتوانید سرعت و کیفیت توسعه نرمافزار خود را بهطور چشمگیری افزایش دهید. در این مطلب، به بررسی مفاهیم کلیدی، نحوه ایجاد گردش کار و نمونههایی از کاربردهای گیتهاب اکشنز پرداختیم. امیدواریم این مطلب برای شما مفید بوده باشد.