اکشن های GitHub را روی ماشین محلی خود اجرا کنید! 🐙 💻

ماه جدید پست وبلاگ جدید! من اخیراً Azure Dev-ops Certified دریافت کردهام، انتظار دارم محتوای بیشتر مرتبط با devops را داشته باشم زیرا در حین مطالعه برای این گواهی، چیزهای زیادی یاد گرفتهام.
این ماه من به نوشتن در مورد GitHub Actions ادامه خواهم داد. اگر در GitHub Actions تازه کار هستید، توصیه می کنم پست های وبلاگ قبلی من را بخوانید:
معرفی
GitHub Actions یک ابزار عالی برای خودکار کردن گردش کار شما است. با این حال، همیشه آسان نیست که گردش کار خود را به صورت محلی آزمایش کنید. این به این دلیل است که GitHub Actions یک سرویس مبتنی بر ابر است و برای آزمایش آن باید کد خود را به GitHub فشار دهید. این همیشه راحت نیست، به خصوص زمانی که در حال توسعه گردش کار خود به صورت محلی هستید.
مثالی از چرخه توسعه معمولی شامل فشار دادن کد و انتظار برای تکمیل گردش کار.
این جایی است که act وارد می شود. این ابزار خط فرمانی است که به شما امکان می دهد اقدامات GitHub خود را به صورت محلی اجرا کنید. این یک ابزار عالی برای آزمایش گردش کار شما به صورت محلی قبل از فشار دادن آنها به GitHub است.
Act همچنین به شما این امکان را میدهد که گردشهای کاری خود را روی یک دونده خود میزبان اجرا کنید. اگر میخواهید گردشهای کاری خود را روی دستگاهی اجرا کنید که به اینترنت متصل نیست، مفید است. برای مثال، میتوانید گردشهای کاری خود را روی Raspberry Pi اجرا کنید.
For me Act به من این امکان را داده است که قبل از فشار دادن آنها به GitHub و انتظار برای نتایج، گردش کار خود را به صورت محلی آزمایش کنم. این باعث صرفه جویی در وقت و ناامیدی من شده است. امیدوارم برای شما هم همین کار را بکند.
نصب ⚒️
Act در GitHub و Homebrew در دسترس است. با استفاده از دستور زیر می توانید آن را نصب کنید:
# For macOS
brew install act
# For Ubuntu Linux
sudo snap install act
# For Debian based Linux distributions
sudo apt install act
# For Fedora
sudo dnf install act
# For Arch Linux
sudo pacman -Syu act
# For Windows
choco install act
استفاده 📖
Act یک ابزار CLI است بنابراین می توانید از آن در ترمینال خود استفاده کنید. دستور زیر اقدامات GitHub شما را به صورت محلی اجرا می کند:
act
مثالی از اجرای یک گردش کار:
شما همچنین می توانید نام آن را مشخص کنید workflow
می خواهید با استفاده از -W
پرچم. به عنوان مثال، دستور زیر را اجرا خواهد کرد workflow.yml
فایل:
cd .github/workflows
act -W workflow.yml
نمونه ای از اجرای یک فایل گردش کار خاص:
برای لیست کامل دستورات و پرچم ها، می توانید دستور زیر را اجرا کنید:
act --help
چگونه کار می کند
Act از Docker برای اجرای اقدامات GitHub شما به صورت محلی استفاده می کند. این به شما امکان می دهد گردش کار خود را بر روی هر دستگاهی که Docker نصب کرده است اجرا کنید. دو راه برای اجرای گردش کار با استفاده از Act وجود دارد:
- با استفاده از
act
فرمان - با استفاده از
act
اکشن GitHub
با استفاده از act
دستور ساده ترین راه برای اجرای گردش کار به صورت محلی است. با این حال، به شما این امکان را نمی دهد که گردش کار خود را بر روی یک دونده خود میزبان اجرا کنید. اینجاست که act
GitHub Action وارد میشود. این امکان را به شما میدهد تا گردشهای کاری خود را بر روی یک رانر خود میزبان اجرا کنید. اگر میخواهید گردشهای کاری خود را روی دستگاهی اجرا کنید که به اینترنت متصل نیست، مفید است. برای مثال، میتوانید گردشهای کاری خود را روی Raspberry Pi اجرا کنید.
استفاده از کانتینرهای داکر امکان جداسازی محیط را فراهم می کند. این بدان معناست که شما می توانید گردش کار خود را بر روی دستگاهی اجرا کنید که دارای سیستم عامل متفاوتی نسبت به سیستم مورد استفاده شما است. برای مثال، میتوانید گردشهای کاری خود را بر روی یک دستگاه ویندوز با استفاده از یک کانتینر لینوکس اجرا کنید. اگر در حال توسعه گردش کار خود بر روی یک دستگاه ویندوز هستید، این کار مفید است.
تصاویر پایه داکر 🐳
اولین باری که عمل را اجرا میکنید، میتوانید از تصویر پیشفرض docker یا تصویر docker خود استفاده کنید. تصویر پیش فرض docker است nektos/act-environments-ubuntu:latest
. برای استفاده از تصویر پیش فرض docker می توانید از دستور زیر استفاده کنید:
act
این تصویر بر اساس آخرین نسخه اوبونتو است. حداقل مجموعه ای از ابزارها را نصب کرده است. برای استفاده از تصویر داکر خود می توانید از دستور زیر استفاده کنید:
act -P ubuntu-latest=nektos/act-environments-ubuntu:22.04
اطلاعات بیشتر در مورد تصاویر دونده را اینجا بخوانید
امنیت
اسرار
قانون اجازه می دهد تا اسرار را به گردش کار خود اضافه کنید. اگر می خواهید گردش کار خود را به صورت محلی آزمایش کنید، این کار مفید است. با این حال، هنگام استفاده از این ویژگی باید مراقب باشید. این به این دلیل است که act به شما امکان می دهد هر کدی را به صورت محلی اجرا کنید. این بدان معنی است که اگر مراقب نباشید، می توانید کدهای مخرب را روی دستگاه خود اجرا کنید.
متغیرهای محیطی
Act از افزودن متغیرهای محیطی با استفاده از آن پشتیبانی می کند .env
فایل ها). دایرکتوری فعلی و همه دایرکتوری های والد را برای فایلی به نام بررسی می کند .env
. برای افزودن متغیرهای محیطی می توانید از دستور زیر استفاده کنید:
echo "FOO=BAR" >> .env
با این حال می توانید مکان پیش فرض را بازنویسی کنید .env
فایل با استفاده از -env-file
پرچم. به عنوان مثال، دستور زیر متغیرهای محیطی را از آن اضافه می کند .env
فایل در دایرکتوری فعلی:
act -env-file .env
پیکربندی ⚙️
Act به شما امکان می دهد گردش کار خود را با استفاده از آن پیکربندی کنید ./.actrc
یا الف ~/.actrc
فایل. اگر می خواهید تنظیمات پیش فرض را تغییر دهید این کار مفید است. به عنوان مثال، می توانید تصویر پیش فرض docker را تغییر دهید. خط زیر را به خط خود اضافه کنید ~/.actrc
فایل:
-P ubuntu-latest=nektos/act-environments-ubuntu:22.04
اطلاعات بیشتر در مورد فایل پیکربندی را اینجا بخوانید
مثال ها
اجرای یک گردش کار
مثال زیر نحوه اجرای یک گردش کار به صورت محلی را نشان می دهد. گردش کار ساده است که زمان جاری را دریافت کرده و آن را در کنسول چاپ می کند. گردش کار در واقع شده است .github/workflows
فهرست راهنما. فایل گردش کار نامگذاری شده است hello-world.yml
.
name: Hello World
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Hello world action step
uses: actions/hello-world-javascript-action@v1
with:
who-to-greet: 'Mona the Octocat' # default is "World"
برای اجرای گردش کار می توانید از دستور زیر استفاده کنید:
act
این ابتدا تصویر docker را دانلود کرده و سپس گردش کار را اجرا می کند. تصویر زیر خروجی دستور را نشان می دهد:
اجرای یک گردش کار با اسرار
مثال زیر نحوه اجرای یک گردش کار به صورت محلی با Secrets را نشان می دهد. گردش کار ساده است که زمان جاری را دریافت کرده و آن را در کنسول چاپ می کند. گردش کار در واقع شده است .github/workflows
فهرست راهنما. فایل گردش کار نامگذاری شده است hello-world-secrets.yml
.
name: Hello World
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Hello world action step
uses: actions/hello-world-javascript-action@v1
with:
who-to-greet: ${{ secrets.WHO_TO_GREET }}
گردش کار از رمزی به نام استفاده می کند WHO_TO_GREET
. برای اجرای گردش کار می توانید از دستور زیر استفاده کنید:
act -s WHO_TO_GREET="Mona the Octocat"
این ابتدا تصویر docker را دانلود کرده و سپس گردش کار را اجرا می کند. تصویر زیر خروجی دستور را نشان می دهد:
مخزن GitHub
GitHub را بررسی کنید
این مخزن شامل راه حل های من از چالش های مختلف Twilio Quest است
این مخزن شامل راه حل های من برای چالش های جستجوی Twilio است. با ادامه بازی به روز می شود.
فورک شده از مخزن اصلی Starter-Python
راه اندازی برنامه Flask
ما فرض می کنیم که قبل از شروع، پایتون و پیپ را روی سیستم خود نصب کرده و در خط فرمان در دسترس خواهید داشت.
قبل از اجرای این پروژه، باید سه متغیر محیطی سیستم را تنظیم کنید. اینها هستند:
-
TWILIO_ACCOUNT_SID
: آن را از کنسول Twilio خود دریافت کنید. -
TWILIO_AUTH_TOKEN
: مانند بالا. -
TWILIO_PHONE_NUMBER
: یک شماره Twilio متعلق به شما، که می تواند برای برقراری تماس و ارسال پیام استفاده شود. میتوانید فهرستی از شمارههای تلفنی را که کنترل میکنید (و در صورت لزوم شماره تلفن دیگری بخرید) در کنسول پیدا کنید.
می توانید آنها را در فایل flask-app/settings.py ذخیره کرده و در فایل اصلی app.py وارد کنید
یا
برای مک و لینوکس، متغیرهای محیط را می توان با باز کردن…
برای گردش کار کامل
نتیجه
این یک مقدمه کوتاه برای عمل بود. امیدوارم به شما در اجرای اکشن های GitHub به صورت محلی کمک کند. اگر سوال یا پیشنهادی دارید، در زیر نظر خود را با ما در میان بگذارید.
برای من یک قهوه بخر
منابع