متن خبر

نحوه اجرای Local Actions GitHub با استفاده از Act CLI Tool

نحوه اجرای Local Actions GitHub با استفاده از Act CLI Tool

شناسهٔ خبر: 457439 -




GitHub Actions به خودکارسازی کارهایی مانند ساخت، آزمایش و استقرار در مخزن GitHub شما کمک می کند.

با یک کلیک، می توانید کد یا بسته آماده تولید خود را در npm، صفحات GitHub، تصاویر docker منتشر کنید، کد تولید خود را در یک ارائه دهنده ابری و غیره مستقر کنید.

مشکل زمانی شروع می شود که شما در حال آزمایش GitHub Actions هستید. می تواند زمان بر و دردناک باشد. ابتدا باید فایل GitHub Actions را به صورت محلی تغییر دهید، کد محلی خود را به مخزن GitHub خود فشار دهید و منتظر نتیجه باشید.

برای حل این مشکل، می توانید از ابزار act CLI برای تست و نوشتن اکشن GitHub به صورت محلی استفاده کنید. با act CLI، نیازی نیست کد محلی خود را به مخزن GitHub commit/push کنید. شما اقدام GitHub را به صورت محلی روی لپ تاپ یا دستگاه خود آزمایش می کنید.

در اینجا مراحل مربوطه آمده است:

نحوه نصب act .

نحوه پیکربندی و مقداردهی اولیه 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 به صورت محلی استفاده می کند.

 $ act
CLI را بدون هیچ استدلالی act .

خروجی فرمان در ترمینال به شکل زیر است:

 $ test-github-actions git:(main) ✗ act ? 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[0023] 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 INFO[0031] Parallel tasks (0) below minimum, setting to 1 [Build Ghost and test theme/install] 🐳 docker create image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host" [Build Ghost and test theme/install] 🐳 docker run image=node:16-buster-slim platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host" [Build Ghost and test theme/install] ☁ git clone 'https://github.com/vimtor/action-zip' # ref=v1.2 [Build Ghost and test theme/install] ☁ git clone 'https://github.com/softprops/action-gh-release' # ref=v0.1.15 [Build Ghost and test theme/install] ⭐ Run Main actions/checkout@v4 [Build Ghost and test theme/install] 🐳 docker cp src=/home/officialrajdeepsingh/medium/test-github-actions/. dst=/home/officialrajdeepsingh/medium/test-github-actions [Build Ghost and test theme/install] ✅ Success - Main actions/checkout@v4 [Build Ghost and test theme/install] ⭐ Run Main Easy Zip Files [Build Ghost and test theme/install] 🐳 docker cp src=/home/officialrajdeepsingh/.cache/act/vimtor-action-zip@v1.2/ dst=/var/run/act/actions/vimtor-action-zip@v1.2/ [Build Ghost and test theme/install] 🐳 docker exec cmd=[node /var/run/act/actions/vimtor-action-zip@v1.2/dist/index.js] user= workdir= | Ready to zip "build/ home.txt" into example.zip | - build/ | - home.txt | | Zipped file example.zip successfully [Build Ghost and test theme/install] ✅ Success - Main Easy Zip Files [Build Ghost and test theme/install] Cleaning up container for job install [Build Ghost and test theme/install] 🏁 Job succeeded
در این مثال تصویر Micro Docker را انتخاب کردیم.

پس از دانلود تصویر از مخزن 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، اقدام فشاری است که به‌طور پیش‌فرض فقط رویدادهای فشار را راه‌اندازی می‌کند.

 $ act
اجرای act CLI با رویداد فشار پیش‌فرض.

می توانید پس از عبور از آرگومان دوم که نام عمل شما است، رویداد را تغییر دهید. در مورد ما، pull_request را ارسال می کنیم.

 $ act pull_request

یک فهرست طولانی برای راه اندازی گردش کار وجود دارد. می توانید آن را در مستندات اقدام GitHub بخوانید .

فهرست ها

گزینه فهرست تمام کارهای موجود را که در .github/workflows می نویسید چاپ می کند.

 $ act -l
کارهای موجود را که در پوشه .github/workflows تعریف می کنید فهرست کنید.

خروجی فرمان در ترمینال به این شکل است.

 $ act -l Stage Job ID Job name Workflow name Workflow file Events 0 zip zip Convert files into Zip build-project.yml release 0 request_test request_test Pull Request fork.yml fork 0 pull_request_test pull_request_test Pull Request issues.yml issues 0 show show Convert files into Zip folder test.yml pull_request
نمایش فهرست مشاغل GitHub

اجرای مشاغل خاص

شما از دستور --job option برای اجرای کارهای خاصی از گردش کار خود استفاده می کنید.

اطمینان حاصل کنید که نام شغل شما منحصر به فرد است - در غیر این صورت، همه کارهایی را که در گردش کار شما یکسان هستند اجرا می کند. هر زمان که نمی‌توانید رویدادی را به‌طور پیش‌فرض پاس کنید، رویداد فشار را فعال کنید.

نحو

 act --job <name-of-your-job>

به عنوان مثال، ما یک کار نمایشی خاص را اجرا می کنیم.

 $ act --job 'show'
اجرای یک کار خاص

نمودار

گزینه graph ساختار کار گردش کار موجود در ترمینال شما را به صورت نمودار ترسیم می کند.

 $ act --graph
چاپ نمودار در ترمینال

خروجی فرمان در ترمینال به شکل زیر است:

 $ act --graph ╭─────╮ ╭──────────────╮ ╭───────────────────╮ ╭──────╮ │ zip │ │ request_test │ │ pull_request_test │ │ show │ ╰─────╯ ╰──────────────╯ ╰───────────────────╯ ╰──────╯
نمایش نمودار

متغیرهای محیطی

استفاده از متغیرهای محیطی با 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 تغییر دهید.

 $ act --env-file=my-custom.env
فایل env سفارشی را تعریف کنید.

اسرار

شما باید یک فایل .secrets جدید ایجاد کنید تا اسرار محیط را با act CLI بارگیری کنید. این به طور خودکار اسرار محیطی را که در فایل secrets موجود است بارگیری می کند. به عنوان مثال، ما یک متغیر APP_SECRET و APP_ID را اضافه می کنیم.

 APP_SECRET='7824jurd789gyu45esxgfgf48822166974gtredsyujn' APP_ID='7878974561587'
فایل .secrets

برای استفاده از متغیرهای محیطی 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 --secret-file=my-custom.secrets
تعریف فایل مخفی سفارشی

نتیجه

act CLI به صرفه جویی در زمان و انرژی هنگام کار و آزمایش GitHub به صورت محلی کمک می کند. در حال حاضر، هیچ جایگزینی برای act CLI وجود ندارد، که به ما اجازه می دهد تا اقدامات GitHub را به صورت محلی اجرا کنیم.

act CLI به طور کامل با اقدامات GitHub سازگار نیست. برخی از ویژگی ها پیاده سازی نمی شوند، به عنوان مثال، همزمانی، عدم متن vars ، زمینه ناقص github و غیره.

شما می توانید من را به عنوان یک توسعه دهنده مستقل با Upwork و به روز رسانی های دیگر استخدام کنید. من را در توییتر (X) و متوسط ​​دنبال کنید.

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است