حتماً برات پیش اومده که بخوای پروژهات رو build کنی، apk بگیری، تست کنی و برای تیم یا مشتری بفرستی. حالا تصور کن هر بار که کد جدیدی نوشتی، این کارا خودکار انجام بشه، بدون اینکه خودت کاری بکنی!
اینجاست که CI/CD وارد میشه.
مثلاً تو GitHub Actions، هر بار که push میکنی، این اتفاقا میافته:
gradlew build./
اجرا میشه و apk تولید میشهname: Android CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- run: ./gradlew assembleRelease
این فایل به GitHub میگه:
«هر وقت کد من تو گیتهاب تغییر کرد، لطفاً خودت پروژه رو بساز (build کن) و مثلاً apk تولید کن.»
مثل اینه که یه نفر دیگه (ربات GitHub) همیشه آمادهس تا دستورهای تو رو اجرا کنه.
باید این مسیر رو بسازی:
markdownCopyEditپروژه/
└── .github/
└── workflows/
└── android.yml ← این فایله
اسم فایل میتونه android.yml
یا هر اسم دیگه باشه، فقط پسوندش .yml
باشه.
حالا بریم خط به خط همین فایل رو بخونیم و ساده معنی کنیم:
yamlCopyEditname: Android CI
🟢 یعنی اسم این برنامه اتومات چیه؟ ما گذاشتیمش Android CI (CI = ساخت اتوماتیک)
yamlCopyEditon:
push:
branches:
- main
🟢 یعنی چه وقتی این کار رو انجام بده؟
وقتی روی شاخه main
کدی push بشه (یعنی وقتی شما یا همتیمیت کد رو روی گیت بفرسته).
yamlCopyEditjobs:
build:
🟢 یعنی یه کاری قراره انجام بدیم به اسم build
(ساخت پروژه).
yamlCopyEditruns-on: ubuntu-latest
🟢 یعنی این کار روی یه کامپیوتر لینوکسی اجرا میشه (سرور GitHub خودش).
yamlCopyEditsteps:
🟢 یعنی مرحلهها (قدمها) برای اجرا:
yamlCopyEdit- name: گرفتن سورس
uses: actions/checkout@v3
🟢 مرحله اول: پروژهی شما رو از گیتهاب میگیره (مثل clone کردن)
yamlCopyEdit- name: نصب Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
🟢 مرحله دوم: جاوای ۱۷ نصب میکنه، چون اندروید بهش نیاز داره
yamlCopyEdit- name: اجرا Gradle
run: ./gradlew assembleRelease
🟢 مرحله آخر: میگه "گرادل اجرا شو" و apk نسخه release رو بساز
وقتی این فایل رو بذاری و کد رو به گیتهاب بفرستی، این اتفاقها میافته:
در واقع CI/CD مثل یه دستیار پشت صحنهست که کارهای تکراری و خستهکننده رو خودش انجام میده.
اگه حتی یه پروژه کوچیک داری، یه فایل ساده CI توش بذار؛ بعداً از خودت تشکر میکنی 😄
خب و اما GitHub Actions یه ابزار خود GitHub که بهت کمک میکنه کارهای تکراری مثل build، test، deploy و... رو بهصورت خودکار انجام بدی. بهش میگن ابزار "اتومیشن".
وقتی توی گیتهاب روی پروژهات کد push یا pull request میذاری، GitHub Actions میتونه خودش خودکار شروع به کار کنه.
در واقع GitHub Actions از چیزی به اسم workflow استفاده میکنه. این workflow یه فایل متنیه با پسوند yml.
که در بالا کامل در موردش صحبت کردیم و توش مشخص میکنی:
gradlew build./
)ممنون که وقت گذاشتی و این مقاله رو تا آخر خوندی. 🙏