یکی از راههای جایگزین برای اجرا githubaction استفاده از act است.
میخواهم در مورد این ابزار پیشتر بدانم.
بهترین محتوا و ایدههای جدید بازاریابی خود را به اشتراک بگذارید، پروفایل حرفهای خود را ایجاد کنید و به بازاریاب بهتری تبدیل شوید.
یکی از راههای جایگزین برای اجرا githubaction استفاده از act است.
میخواهم در مورد این ابزار پیشتر بدانم.
ابزار act واقعاً یکی از بهترین روشهاست برای اجرای workflowهای GitHub Actions بهصورت محلی، مخصوصاً زمانی که با محدودیتهای GitHub Free Plan روبهرو هستی یا میخواهی قبل از commit، workflow را تست کنی.
بیا گامبهگام و با جزئیات بررسیاش کنیم 👇
act یک ابزار متنباز است (ساخته شده با Go) که به تو اجازه میدهد:
workflowهای GitHub Actions (یعنی فایلهای YAML داخل .github/workflows/) را در کامپیوتر خودت، با Docker، اجرا کنی.
در واقع act یک محیط شبیهسازی از GitHub Actions ایجاد میکند تا همان jobها، همان actionها، و همان eventها را روی سیستم لوکال اجرا کنی.
بنابراین act یک mini-GitHub Actions runner است که کاملاً روی سیستم خودت اجرا میشود.
brew install act
scoop install act
یا:
choco install act-cli
curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
در ریشه مخزن خود (که پوشه .github/workflows/ دارد):
act
بهصورت پیشفرض act event push را اجرا میکند.
اگر بخواهی event دیگری را تست کنی:
act pull_request act workflow_dispatch
یا برای اجرای job خاص:
act -j test
GitHub runners معمولاً Ubuntu-latest یا Windows هستند. act از imageهای Docker برای شبیهسازی آنها استفاده میکند.
سه نوع image اصلی وجود دارد:
Image | توضیح | مثال |
act-latest (پیشفرض) | سبک و سریع | مناسب jobهای ساده |
act-medium | شامل ابزارهای بیشتر (مثل git, node, python) | عمومی |
act-full | شامل همه ابزارهای GitHub runner | برای پروژههای بزرگ (مثل Odoo) |
نمونه دستور برای انتخاب image:
act -P ubuntu-latest=catthehacker/ubuntu:act-latest
میتوانی secrets را به صورت محلی تعریف کنی:
GITHUB_TOKEN=abc123 DB_PASSWORD=secret
act --secret-file .secrets
یا مستقیماً در محیط:
act -s GITHUB_TOKEN=abc123
ویژگی | توضیح |
💨 سریع | چون لوکال است، نیازی به queue شدن jobها ندارد |
🧩 شبیهسازی واقعی | از Docker برای اجرا در محیط جداگانه استفاده میکند |
🧪 تست قبل از push | میتوانی قبل از commit بفهمی workflow کار میکند یا نه |
🌐 بدون محدودیت Free Plan | چون روی سیستم خودت اجرا میشود |
🔁 پشتیبانی از چند event | مانند push, pull_request, schedule و dispatch |
فرض کن workflow زیر را داری:
# .github/workflows/test.yml name: Test on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run tests run: pytest tests/
میتوانی آن را به سادگی در لوکال اجرا کنی:
act -j build
مزیت | توضیح |
✅ بدون محدودیت زمان و هزینه | هیچ billing یا minute limit ندارد |
✅ اجرای سریع و لوکال | در لحظه اجرا میشود |
✅ تست دقیق workflowها قبل از push | صرفهجویی در زمان و CI minutes |
⚠️ نیاز به Docker | بدون آن کار نمیکند |
⚠️ برخی actionها نیاز به mock دارند | مخصوصاً GitHub API-based ones |
اگر بخواهی، میتوانم برایت یک نمونه فایل workflow مخصوص پروژه Odoo بنویسم که با act سازگار باشد (مثلاً نصب Odoo، تست addonها، و دسترسی به مخزن خصوصی).
آیا میخواهی نمونهی واقعی برای پروژهات آماده کنم؟
همین امروز یک حساب کاربری ایجاد کنید تا از ویژگی های انحصاری لذت ببرید و با جامعه عالی ما تعامل داشته باشید!
ثبت نام