narjes Mansoori
narjes Mansoori
خواندن ۳ دقیقه·۱ ماه پیش

مفهوم CI/CD در اندروید به زبان ساده

حتماً برات پیش اومده که بخوای پروژه‌ات رو build کنی، apk بگیری، تست کنی و برای تیم یا مشتری بفرستی. حالا تصور کن هر بار که کد جدیدی نوشتی، این کارا خودکار انجام بشه، بدون اینکه خودت کاری بکنی!
اینجاست که CI/CD وارد می‌شه.

خب CI و CD یعنی چی؟

  • مفهوم CI (یکپارچه‌سازی مداوم) یعنی هر وقت کدی تو گیت کامیت یا پوش شد، خودکار build و تست بشه تا مطمئن شیم چیزی خراب نشده.
  • مفهوم CD (ارسال مداوم) یعنی بعد از اینکه همه چیز اوکی بود، خودکار فایل apk ساخته بشه و حتی برای تسترها یا گوگل‌پلی فرستاده بشه.

🔧 توی پروژه اندروید ما چی کار می‌کنه؟

مثلاً تو GitHub Actions، هر بار که push می‌کنی، این اتفاقا می‌افته:

  1. سورس کد دانلود می‌شه
  2. دستور gradlew build./ اجرا می‌شه و apk تولید می‌شه
  3. تست‌ها اجرا می‌شن (اختیاری)
  4. خب apk آپلود می‌شه روی Firebase App Distribution یا گوگل‌پلی البته این مرحله هم اختیاریه

📄 یک نمونه فایل CI ساده (GitHub Actions)

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 رو بساز

🔚 نتیجه چی میشه؟

وقتی این فایل رو بذاری و کد رو به گیت‌هاب بفرستی، این اتفاق‌ها می‌افته:

  1. پروژه‌ت اتومات build میشه
  2. اگه خطایی باشه می‌فهمی
  3. نیازی نیست دستی apk بسازی

✅ مزایای CI/CD

  • خیالت راحته که کدت همیشه سالمه
  • لازم نیست apk رو دستی بسازی
  • تیم تست می‌تونه سریع نسخه جدید رو بگیره
  • حرفه‌ای‌تر و تمیزتر کار می‌کنی

🎯 جمع‌بندی

در واقع CI/CD مثل یه دستیار پشت صحنه‌ست که کارهای تکراری و خسته‌کننده رو خودش انجام می‌ده.
اگه حتی یه پروژه کوچیک داری، یه فایل ساده CI توش بذار؛ بعداً از خودت تشکر می‌کنی 😄




خب و اما GitHub Actions یه ابزار خود GitHub که بهت کمک می‌کنه کارهای تکراری مثل build، test، deploy و... رو به‌صورت خودکار انجام بدی. بهش می‌گن ابزار "اتومیشن".

وقتی توی گیت‌هاب روی پروژه‌ات کد push یا pull request می‌ذاری، GitHub Actions می‌تونه خودش خودکار شروع به کار کنه.

🧩 چطوری کار می‌کنه؟

در واقع GitHub Actions از چیزی به اسم workflow استفاده می‌کنه. این workflow یه فایل متنیه با پسوند yml. که در بالا کامل در موردش صحبت کردیم و توش مشخص می‌کنی:

  1. چه زمانی اجرا بشه؟ (مثلاً وقتی push کردی)
  2. روی چه سیستمی اجرا بشه؟ (مثلاً Ubuntu)
  3. چه دستورهایی اجرا بشن؟ (مثلاً gradlew build./)


ممنون که وقت گذاشتی و این مقاله رو تا آخر خوندی. 🙏

ci cdandroidgradlegithub
Android Developer
شاید از این پست‌ها خوشتان بیاید