نحوه اجرای Local Actions GitHub با استفاده از Act CLI Tool
GitHub Actions به خودکارسازی کارهایی مانند ساخت، آزمایش و استقرار در مخزن GitHub شما کمک می کند.
با یک کلیک، می توانید کد یا بسته آماده تولید خود را در npm، صفحات GitHub، تصاویر docker منتشر کنید، کد تولید خود را در یک ارائه دهنده ابری و غیره مستقر کنید.
مشکل زمانی شروع می شود که شما در حال آزمایش GitHub Actions هستید. می تواند زمان بر و دردناک باشد. ابتدا باید فایل GitHub Actions را به صورت محلی تغییر دهید، کد محلی خود را به مخزن GitHub خود فشار دهید و منتظر نتیجه باشید.
برای حل این مشکل، می توانید از ابزار act
CLI برای تست و نوشتن اکشن GitHub به صورت محلی استفاده کنید. با act
CLI، نیازی نیست کد محلی خود را به مخزن GitHub commit/push کنید. شما اقدام GitHub را به صورت محلی روی لپ تاپ یا دستگاه خود آزمایش می کنید.
در اینجا مراحل مربوطه آمده است:
نحوه پیکربندی و مقداردهی اولیه act
CLI.
نحوه استفاده از ابزار act
CLI.
نحوه نصب act
برای GitHub Actions
ابزار act
CLI با Docker کار می کند. قبل از شروع با act
CLI، ابتدا Docker را روی سیستم یا لپ تاپ خود نصب کنید .
برای نصب act
CLI باید دستور زیر را اجرا کنید:
# Window choco install act-cli # MacOS brew install act # Linux curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
نحوه پیکربندی و راهاندازی act
CLI
پس از موفقیت آمیز بودن نصب act
CLI بر روی لپ تاپ یا دستگاه، مرحله بعدی اجرای آن در پروژه است.
act
CLI می پرسد که چه اندازه تصویر Docker – بزرگ، متوسط یا کوچک – باید در حین نصب نصب شود.
اندازه های مختلف تصویر Docker وجود دارد:
اندازه تصویر Docker Micro 200 مگابایت است و پروژه های کوچک از آن استفاده می کنند.
اندازه تصویر Docker Medium 500 مگابایت است و Big Project از آن استفاده می کند.
اندازه تصویر Docker Large 17 گیگابایت است و Enterprise از آن استفاده می کند.
act
CLI از تصویر Docker برای اجرای اکشن GitHub به صورت محلی استفاده می کند.
خروجی فرمان در ترمینال به شکل زیر است:
پس از دانلود تصویر از مخزن Docker، act
CLI اکشن GitHub را اجرا می کند.
act
CLI فایل ~/.actrc
را در لپ تاپ برای پیکربندی تولید می کند. فایل ~/.actrc
حاوی نام تصویر داکر است.
# .actrc -P ubuntu-latest=node:16-buster-slim -P ubuntu-22.04=node:16-bullseye-slim -P ubuntu-20.04=node:16-buster-slim -P ubuntu-18.04=node:16-buster-slim
برای نصب سایر تصاویر Docker، فایل ~/.actrc
را حذف کرده و act
CLI را مجدداً اجرا کنید تا تصاویر مختلف Docker نصب شوند.
خطا
به دلیل وابستگی به Docker، ممکن است هنگام شروع اولیه یک act
CLI برای اولین بار با خطاهایی روبرو شویم.
$ act
خطا باید به شکل زیر باشد:
$ test-github-actions git:(main) ✗ act ERRO[0000] daemon Docker Engine socket not found and containerDaemonSocket option was not set ? Please choose the default image you want to use with act: - Large size image: ca. 17GB download + 53.1GB storage, you will need 75GB of free disk space, snapshots of GitHub Hosted Runners without snap and pulled docker images - Medium size image: ~500MB, includes only necessary tools to bootstrap actions and aims to be compatible with most actions - Micro size image: <200MB, contains only NodeJS required to bootstrap actions, doesn't work with all actions Default image and other options can be changed manually in ~/.actrc (please refer to https://github.com/nektos/act#configuration for additional information about file structure) Micro [Build Ghost and test theme/install] 🚀 Start image=node:16-buster-slim INFO[0305] Parallel tasks (0) below minimum, setting to 1 [Build Ghost and test theme/install] 🐳 docker pull image=node:16-buster-slim platform= username= forcePull=true Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
خطای Cannot connect to the Docker daemon
در کد بالا مشاهده می کنید. این مشکل به دلیل Daemon Docker رخ می دهد. به عبارت ساده، Daemon Docker در حال اجرا نیست. شما می توانید این مشکل را با راه اندازی Docker خود و اجرای مجدد دستور act
خود حل کنید.
دو راه برای اجرای خدمات Docker وجود دارد.
دسکتاپ Docker را در پنجره خود باز کنید و سرویس Docker شما راه اندازی می شود.
Docker را با دستور systemctl start docker
در لینوکس اجرا کنید.
با دستور زیر می توانید تحلیل کنید که Docker شما در حال اجرا است یا خیر:
$ systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/etc/systemd/system/docker.service; enabled; preset: enabled) Drop-In: /nix/store/fibzdkfv6in4xw39rm0c7bq4nadzisas-system-units/docker.service.d └─overrides.conf Active: active (running) since Mon 2024-02-26 12:38:37 IST; 3h 39min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 1186 (dockerd) IP: 0B in, 0B out IO: 109.0M read, 152.0K written Tasks: 40 Memory: 148.5M CPU: 1min 40.817s CGroup: /system.slice/docker.service ├─1186 /nix/store/7pzis8dkhs461kl1bg2fp0202dw6r5i5-moby-24.0.5/libexec/docker/dockerd --config-file=/nix/store/3rlv5f0zldcc120b01szywidl0qz9x4p-daemon.json └─1256 containerd --config /var/run/docker/containerd/containerd.toml Feb 26 12:38:37 nixos dockerd[1256]: time="2024-02-26T12:38:37.532987858+05:30" level=info msg="containerd successfully booted in 0.016901s" Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.562515048+05:30" level=info msg="[graphdriver] using prior storage driver: overlay2" Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.564062690+05:30" level=info msg="Loading containers: start." Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.778478313+05:30" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address" Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.805931545+05:30" level=info msg="Loading containers: done." Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.828589904+05:30" level=info msg="Docker daemon" commit=v24.0.5 graphdriver=overlay2 version=24.0.5 Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.828929197+05:30" level=info msg="Daemon has completed initialization" Feb 26 12:38:37 nixos systemd[1]: Started Docker Application Container Engine. Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.841992729+05:30" level=info msg="API listen on /run/docker.sock" Feb 26 12:38:37 nixos dockerd[1186]: time="2024-02-26T12:38:37.841993669+05:30" level=info msg="API listen on /run/docker.sock"
نحوه استفاده از ابزار act
CLI
act
CLI گزینه های زیادی دارد، اما ما به چند مورد مهم نگاه خواهیم کرد. با اجرای دستور act --help
می توانید تمام گزینه ها را تحلیل کنید.
گزینه های CLI act
در اینجا برخی از گزینه های act
CLI آورده شده است:
مناسبت ها
اقدام پیشفرض act
CLI، اقدام فشاری است که بهطور پیشفرض فقط رویدادهای فشار را راهاندازی میکند.
می توانید پس از عبور از آرگومان دوم که نام عمل شما است، رویداد را تغییر دهید. در مورد ما، pull_request را ارسال می کنیم.
$ act pull_request
یک فهرست طولانی برای راه اندازی گردش کار وجود دارد. می توانید آن را در مستندات اقدام GitHub بخوانید .
فهرست ها
گزینه فهرست تمام کارهای موجود را که در .github/workflows
می نویسید چاپ می کند.
خروجی فرمان در ترمینال به این شکل است.
اجرای مشاغل خاص
شما از دستور --job
option برای اجرای کارهای خاصی از گردش کار خود استفاده می کنید.
اطمینان حاصل کنید که نام شغل شما منحصر به فرد است - در غیر این صورت، همه کارهایی را که در گردش کار شما یکسان هستند اجرا می کند. هر زمان که نمیتوانید رویدادی را بهطور پیشفرض پاس کنید، رویداد فشار را فعال کنید.
نحو
act --job <name-of-your-job>
به عنوان مثال، ما یک کار نمایشی خاص را اجرا می کنیم.
نمودار
گزینه graph ساختار کار گردش کار موجود در ترمینال شما را به صورت نمودار ترسیم می کند.
خروجی فرمان در ترمینال به شکل زیر است:
متغیرهای محیطی
استفاده از متغیرهای محیطی با act
CLI آسان است. شما فقط باید یک فایل .env
جدید ایجاد کنید. act
CLI به طور خودکار محیطی را که در فایل .env
موجود است بارگیری می کند. به عنوان مثال، ما یک متغیر ENV_ID
اضافه می کنیم.
# .env ENV_ID='My Env'
برای استفاده از متغیرهای محیطی ENV_ID
، از دستور زیر ${{ env.ENV_ID }}
در عملکرد GitHub خود استفاده کنید:
# .github/workflows/test.yml name: Convert files into Zip folder on: pull_request jobs: show: runs-on: ubuntu-latest steps: - name: Show Env run: echo "Env ${{ env.ENV_ID }}"
با گزینه --env-file
می توانید نام فایل .env
پیش فرض را به فایل my-custom.env
تغییر دهید.
اسرار
شما باید یک فایل .secrets
جدید ایجاد کنید تا اسرار محیط را با act
CLI بارگیری کنید. این به طور خودکار اسرار محیطی را که در فایل secrets
موجود است بارگیری می کند. به عنوان مثال، ما یک متغیر APP_SECRET
و APP_ID
را اضافه می کنیم.
برای استفاده از متغیرهای محیطی APP_SECRET
، از دستور زیر ${{ secrets.APP_SECRE}}
در عملکرد GitHub خود استفاده کنید:
# .github/workflows/test.yml name: Learn environment secrets on: pull_request jobs: show: runs-on: ubuntu-latest steps: - name: Show env run: echo "App SECRET ${{ secrets.APP_SECRET }}" - name: Show varibale run: echo "App ID ${{ secrets.APP_ID }}"
می توانید فایل my-custom.secrets
سفارشی خود را که حاوی تمام اسرار شماست با گزینه --secret-file
بارگیری کنید.
نتیجه
act
CLI به صرفه جویی در زمان و انرژی هنگام کار و آزمایش GitHub به صورت محلی کمک می کند. در حال حاضر، هیچ جایگزینی برای act
CLI وجود ندارد، که به ما اجازه می دهد تا اقدامات GitHub را به صورت محلی اجرا کنیم.
act
CLI به طور کامل با اقدامات GitHub سازگار نیست. برخی از ویژگی ها پیاده سازی نمی شوند، به عنوان مثال، همزمانی، عدم متن vars
، زمینه ناقص github
و غیره.
شما می توانید من را به عنوان یک توسعه دهنده مستقل با Upwork و به روز رسانی های دیگر استخدام کنید. من را در توییتر (X) و متوسط دنبال کنید.
ارسال نظر