فلاتر

گیتهاب اکشن چیست؟ آموزش استفاده از گیتهاب اکشن در برنامه نویسی فلاتر

گیتهاب اکشن GitHub Actions یکی از ابزارهای گیتهاب است که به شما کمک می‌کنه تا مراحل ساخت، تست و انتشار کدتون رو به صورت خودکار انجام بدید.

مثلا می‌تونید یه جوری تنظیمش کنید که هر بار که یه تغییر توی کدتون ایجاد می‌کنید، به طور خودکار ساخته و تست بشه.

یا می‌تونید طوری تنظیمش کنید که بعد از تایید نهایی یه تغییر، به طور خودکار توی سایت یا اپلیکیشن شما منتشر بشه.

در کل،گیتهاب اکشن یه راه عالیه برای اینکه فرآیند انتشار کدتون رو سریع‌تر، ساده‌تر و قابل اعتمادتر کنید.

این عملیات در واقعی نوعی CI/CD میباشد که در ادامه توضیح میدهیم.

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

آشنایی با CI/CD در برنامه نویسی

CI/CD که مخفف “یکپارچه‌سازی و تحویل/انتشار مداوم” هست continuous integration و continuous delivery، به دنبال اینه که مراحل ساخت و عرضه‌ی نرم‌افزار رو سریع‌تر و ساده‌تر کنه.

همچنین اینکار باعث میشود که خطاها و باگ های کمتری در محصول نهایی وجود داشته باشد.

  • ادغام پیوسته (CI): این رویه بر ادغام خودکار و مکرر تغییرات کد در یک مخزن کد منبع مشترک تأکید دارد.

    هر دفعه که یه برنامه‌نویس روی کد کار می‌کنه و تغییراتش رو ذخیره می‌کنه، اون تغییرات به صورت خودکار با کل کد اصلی ادغام میشه. این کار باعث میشه مشکلات احتمالی همون موقع پیدا بشه.

  • تحویل/استقرار پیوسته (CD): یک فرآیند دو بخشی است که به ادغام، تست و تحویل تغییرات کد اشاره دارد.

    تحویل پیوسته قبل از استقرار خودکار در محیط تولید متوقف می‌شود، در حالی که استقرار پیوسته به‌طور خودکار به‌روزرسانی‌ها را در محیط تولید منتشر می‌کند.

    بعد از اینکه کدها ادغام شدن، به صورت خودکار تست می‌شن و برای انتشار آماده می‌شن. تحویل مداوم یعنی کدها برای انتشار آماده‌ن ولی لزوما به صورت خودکار منتشر نمیشوند.
    اما در انتشار مداوم، بعد از قبولی تست‌ها، کدها به صورت خودکار توی محیط اصلی (مثل وب‌سایت یا اپلیکیشن) منتشر میشوند.

دلیل اهمیت CI/CD

CI/CD به سازمان‌ها کمک می‌کند تا در حالی که چرخه‌ی دائمی توسعه و به‌روزرسانی نرم‌افزار را حفظ می‌کنند، از باگ‌ها و خرابی‌های کد جلوگیری کنند.

با بزرگ‌تر شدن برنامه‌ها، ویژگی‌های CI/CD می‌توانند به کاهش پیچیدگی، افزایش کارایی و ساده‌سازی فرآیندهای کاری کمک کنند.

از آنجایی که CI/CD مداخله‌ی دستی انسان که به‌طور سنتی برای انتقال کد جدید از مرحله‌ی ثبت به تولید نیاز بود را خودکار می‌کند، زمان خارج از سرویس بودن به حداقل می‌رسد و انتشار کد سریع‌تر انجام می‌شود.

همچنین با امکان ادغام سریع‌تر به‌روزرسانی‌ها و تغییرات در کد، بازخورد کاربران را می‌توان با دفعات بیشتر و اثرگذاری بیشتری لحاظ کرد، که در نهایت منجر به نتایج مثبت برای کاربران نهایی و رضایت بیشتر مشتریان می‌شود.

تفاوت CI و CD چیست؟

ادغام پیوسته (CI):

در ادغام پیوسته، توسعه‌دهندگان به‌صورت مکرر تغییرات کوچک در کد خود اعمال و بررسی می‌کنند. با توجه به حجم بالای الزامات و تعداد مراحل درگیر، این فرآیند خودکار می‌شود تا تیم‌ها بتوانند به‌صورت قابل اعتماد و تکرارپذیر، برنامه‌های خود را بسازند، تست کنند و بسته‌بندی نمایند.

CI به ساده‌سازی تغییرات کد کمک می‌کند و در نتیجه زمان بیشتری را برای توسعه‌دهندگان جهت ایجاد تغییرات و بهبود نرم‌افزار فراهم می‌سازد.

تحویل پیوسته (CD):

تحویل پیوسته به معنای تحویل خودکار کد تکمیل‌شده به محیط‌هایی مانند تست و توسعه است. CD روشی خودکار و یکپارچه برای تحویل کد به این محیط‌ها ارائه می‌دهد.

استقرار پیوسته (Deployment پیوسته):

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

استقرار پیوسته باید هدف اکثر شرکت‌هایی باشد که محدودیت‌های قانونی یا الزامات دیگری ندارند.

به‌طور خلاصه، CI مجموعه‌ای از اقداماتی است که توسعه‌دهندگان در حین نوشتن کد انجام می‌دهند، و CD مجموعه‌ای از اقداماتی است که پس از تکمیل کد انجام می‌شود.

گیتهاب اکشن چیست؟

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

فرض کنید یه تیم از برنامه‌نویس‌ها روی یه پروژه کار می‌کنن. هر کدوم از اعضای تیم ممکنه تغییراتی توی کد ایجاد کنه. با استفاده از گیتهاب اکشن، میشه یه جوری تنظیمش کرد که هر بار یه عضو تیم تغییراتی رو ذخیره می‌کنه، به طور خودکار این تغییرات ساخته، تست و در صورت قبولی تست‌ها، منتشر بشن.

این کار مزایای زیادی داره، از جمله:

  • سرعت بیشتر: دیگه لازم نیست منتظر بمونید تا یه نفر به صورت دستی کدها رو بسازه، تست کنه و منتشر کنه.
  • قابلیت اطمینان بیشتر: با خودکار شدن این مراحل، احتمال خطای انسانی به شدت کم میشه.
  • همکاری بهتر: اعضای تیم می‌تونن بدون نگرانی از مراحل ساخت و انتشار، روی کدها کار کنن.

گیتهاب اکشن یه ابزار قدرتمنده که می‌تونه به تیم‌های توسعه‌دهنده کمک کنه تا سریع‌تر، باکیفیت‌تر و با همکاری بیشتر، نرم‌افزار بسازند

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

بخش های مختلف گیتهاب اکشن

شما می‌توانید یک گردش کار (workflow) در گیتهاب اکشن را برای اجرا شدن در زمان رخداد یک رویداد (event) در مخزن پروژه پیکربندی کنید.

رویدادهایی مانند باز شدن یک درخواست pull request یا ایجاد یک issue یا اضافه شدن کد جدید Push و…

گردش کار شما شامل یک یا چند ماموریت (job) است که می‌توانند به ترتیب یا به صورت موازی اجرا شوند. هر شغل درون ماشین مجازی (virtual machine) اختصاصی خود یا داخل یک container اجرا می‌شود و دارای یک یا چند مرحله (step) است که یا یک اسکریپتی که شما تعریف می‌کنید را اجرا می‌کند و یا یک اکشن (action) که یک توسعه‌یافته‌ی قابل‌استفاده‌ی مجدد است و می‌تواند گردش کار شما را ساده‌سازی کند.

پس به طور خلاصه ابتدا نوع رویداد مشخص میشود سپس یک وظیفه Job تعیین میشود و بعد با کمک مراحل Step عملیات های مختلف را انجام میدهیم.

بخش Workflow

گردش کار (Workflow) یک فرایند خودکار قابل پیکربندی است که یک یا چند ماموریت (Job) را اجرا می‌کند.

گردش کارها با استفاده از یک فایل YAML تعریف شده و در مخزن پروژه شما ثبت می‌شوند.

این گردش کارها می‌توانند با رویدادی در مخزن شما، به صورت دستی یا طبق یک زمان‌بندی مشخص اجرا شوند.

گردش کارها در پوشه .github/workflows در مخزن تعریف می‌شوند و یک مخزن می‌تواند چندین گردش کار داشته باشد که هر کدام مجموعه‌ی متفاوتی از وظایف را انجام دهند.

برای مثال، شما می‌توانید یک گردش کار برای ساخت و تست درخواست‌های pull request داشته باشید، گردش کار دیگری برای استقرار برنامه‌ی خود هر بار که یک ریلیز ساخته می‌شود و گردش کار دیگری برای اضافه کردن یک برچسب هر زمان که کسی یک issue جدید باز می‌کند.

بخش Event

رویداد (Event) یک فعالیت مشخص در یک مخزن است که باعث اجرای یک گردش کار (Workflow) می‌شود.

برای مثال، این فعالیت می‌تواند از خود گیت‌هاب سرچشمه بگیرد، زمانی که شخصی یک درخواست pull request ایجاد می‌کند، یک issue باز می‌کند، یا یک کامیت را به مخزن push می‌کند.

همچنین شما می‌توانید یک گردش کار را برای اجرا بر اساس یک زمان‌بندی مشخص، با ارسال به یک REST API، یا به صورت دستی راه‌اندازی کنید.

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

بخش Job

شغل (Job) در یک گردش کار مجموعه ای از مراحل (Step) است که روی یک runner مشترک اجرا می‌شود. هر مرحله یا یک اسکریپت shell است که اجرا خواهد شد و یا یک اکشنی است که اجرا می‌شود.

مراحل به ترتیب اجرا شده و به هم وابسته هستند.

از آنجایی که هر مرحله روی همان runner اجرا می‌شود، شما می‌توانید داده‌ها را از یک مرحله به مرحله‌ی دیگر منتقل کنید.

برای مثال، شما می‌توانید یک مرحله داشته باشید که برنامه‌ی شما را بسازد و به دنبال آن، مرحله‌ای برای تست کردن برنامه‌ای که ساخته شده است.

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

هنگامی که یک Job وابستگی به شغل دیگری داشته باشد، قبل از اینکه بتواند اجرا شود، منتظر تکمیل شدن شغل وابسته می‌ماند.

برای مثال، ممکن است چندین شغل ساخت برای معماری‌های مختلف داشته باشید که هیچ وابستگی‌ای ندارند، و یک شغل بسته‌بندی که به آن شغل‌ها وابسته است.

شغل‌های ساخت به صورت موازی اجرا می‌شوند و هنگامی که همه آن‌ها با موفقیت تکمیل شدند، شغل بسته‌بندی اجرا خواهد شد.

بخش Runner

این بخش (Runner) یک سرور است که در زمان راه‌اندازی شدن گردش کارهای شما را اجرا می‌کند.

هر اجرا کننده می‌تواند تنها یک شغل (Job) را در یک زمان اجرا کند.

گیت‌هاب رانرهای لینوکس اوبونتو، مایکروسافت ویندوز و macOS را برای اجرای گردش کارهای شما ارائه می‌دهد؛ هر اجرای گردش کار در یک ماشین مجازی جدید و تازه تهیه شده اجرا می‌شود.

گیت‌هاب همچنین رانرهای بزرگتری را ارائه می‌دهد که در پیکربندی‌های بزرگ‌تر در دسترس هستند.

اگر به یک سیستم‌عامل متفاوت یا پیکربندی سخت‌افزاری خاصی نیاز دارید، می‌توانید رانرهای خود را میزبانی کنید. برای اطلاعات بیشتر در مورد رانرهای خود-میزبانی، بخش «میزبانی رانرهای خود» را ببینید.


کاربرد گیتهاب اکشن در فلاتر

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

شما با یک بار کدنویسی میتوانید خروجی های مختلفی مثل اندروید, آیفون, وب, دسکتاپ, لینوکس و… داشته باشید.

اساس در برنامه نویسی موبایل اتوماتیک سازی کارها باعث افزایش سرعت و بهره وری میشود.

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

در واقع امروزه کمتر شرکتی را پیدا میکنید که فرآیند خروجی گرفتن از پروژه در آنها به شکل دستی باشد, با استفاده از عملیات CI/CD میتوانید به شکل خودکار از پروژه فلاتر خروجی گرفته و داخل فروشگاه های اپلیکیشن مثل گوگل پلی و اپ استور نیز نسخه جدید را به صورت اتوماتیک منتشر کنید.

شروع کار با گیتهاب اکشن

برای شروع و کار با بخش اکشن های گیتهاب ابتدا یک پروژه داخل گیتهاب ایجاد کنید.

ابتدا داخل پروژه مورد نظر یک پوشه به نام github. ایجاد میکنیم سپس داخل آن مجددا یک پوشه به نام workflows میسازیم.

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

برای نمونه یک فایل به نام first.yaml میسازیم و کدهای زیر را در آن قرار میدهیم.

name: Hello World

on: [push]
jobs:
    build:
        runs-on: ubuntu-latest
        
        steps:
          - name: Say Hello
            run: echo "Hello, world"

در ابتدا یک نام اختیاری برای Workflow مشخص میکنیم, در مرحله بعدی با کلمه کلیدی on رویدادهایی که باعث اجرا شدن این اکشن میشود را تعیین میکنیم که در اینجا با نوشتن push هربار کد جدیدی به مخزن اضافه شد این اکشن اجرا میشود.

در قسمت jobs هم عملیات هایی که قرار هست رخ دهد را مشخص میکنیم, برای مثال پروژه را روی سیستم عامل اوبونتو اجرا میکنیم و سپس مقدار Hello, world را در ترمینال نمایش میدهیم.

حالا برای اینکه بتونید اجرا شدن این اکشن را ببینید در صفحه گیتهاب وارد سربرگ Action شوید.

در این تصویر مشاهده میکنید که نام Commit برای اکشن نوشته شده و در صف اجرا قرار گرفته است.

اگر روی عنوان مورد نظر کلیک کنید وارد صفحه جزییات شده و قدم به قدم اجرا شدن مراحل مختلف اکشن را میتوانید مشاهده کنید.

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

تیک سبز به منظور این است که پروژه و اکشن بدون خطایی اجرا شده اند و پیام Hello world نمایش داده شده است.

Hesam

Recent Posts

آموزش افزایش سرعت اجرای وب اپلیکیشن های فلاتر

اگر یک برنامه نویس فلاتر هستید و با از نسخه وب اپلیکیشن پروژتون استفاده میکنید…

1 ماه ago

آموزش جامع انتشار اپلیکیشن اندروید و فلاتر در فروشگاه گوگل پلی Google play

به عنوان یک برنامه نویس فلاتر یا اندروید بعد از اتمام پروسه طراحی اپلیکیشن نیاز…

2 ماه ago

دانلود سورس کد رابط کاربری اپلیکیشن فلاتر پروژه پادکست

طراحی رابط کاربری اپلیکیشن پادکست خود را با استفاده از این کیت توسعه UI/UX فلاتر…

3 ماه ago

فایربیس چیست؟ معرفی سرویس ابری Firebase و کاربردهای آن

فایربیس، پلتفرمی قدرتمند از شرکت گوگل برای توسعه و مدیریت برنامه‌های موبایل و وب است.…

3 ماه ago

آموزش پیاده سازی Method Channel در فلاتر + فیلم

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که این امکان را برای برنامه نویس…

3 ماه ago

بهترین منابع برای آموزش رایگان برنامه نویسی فلاتر در سال 2024

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که به وسیله آن میتوانید برای سیستم…

4 ماه ago