در توسعه فلاتر، CI/CD مخفف Continuous Integration (ادغام مداوم) و Continuous Delivery/Deployment (تحویل/استقرار مداوم) است. این مجموعهای از شیوههای خودکار است که به شما کمک میکند برنامه خود را سریعتر و مطمئنتر بسازید، آزمایش کنید و منتشر کنید.

🔧 CI/CD در فلاتر چیست؟
✅ یکپارچهسازی مداوم (CI)
- هر زمان که کد به مخزن ارسال شود، برنامه فلاتر شما را به طور خودکار میسازد و آزمایش میکند.
- اطمینان حاصل میکند که تغییرات جدید، عملکردهای موجود را مختل نمیکنند.
- با شناسایی زودهنگام اشکالات، به تیمها کمک میکند تا به راحتی همکاری کنند.
🚀 تحویل/استقرار مداوم (CD)
- تحویل: برنامه شما را برای انتشار آماده میکند (مثلاً APK/IPA میسازد) و آن را به محیطهای آمادهسازی یا بتا ارسال میکند.
- استقرار: پس از گذراندن تمام آزمایشها، برنامه شما را به طور خودکار به محیط تولید (اپ استور یا گوگل پلی) ارسال میکند.
🛠️ ابزارهای محبوب CI/CD برای فلاتر
- Codemagic: مخصوص Flutter ساخته شده است. راهاندازی آسان، پشتیبانی از نسخههای اندروید/iOS.
- Bitrise : گردشهای کاری بصری، از Flutter و buildهای بومی پشتیبانی میکند.
- GitHub Actions: قابلیت سفارشیسازی بالا، به خوبی با مخازن GitHub ادغام میشود.
- Fastlane: استقرار فروشگاه برنامه را خودکار میکند، به خوبی با پروژههای Flutter کار میکند.
- CircleCI: خطوط لوله مقیاسپذیر، مناسب برای تیمهای بزرگتر.
برای دستورالعملهای راهاندازی و بهترین شیوهها، میتوانید راهنمای رسمی تحویل مداوم فلاتر را بررسی کنید.
💡 چرا از CI/CD در فلاتر استفاده کنیم؟
- چرخههای انتشار سریعتر: بهروزرسانیها را سریع و مکرر ارسال کنید.
- کیفیت کد بهبود یافته: تستهای خودکار، اشکالات را زودتر پیدا میکنند.
- خطاهای دستی کاهش یافته: اتوماسیون، ثبات را تضمین میکند.
- همکاری تیمی بهتر: همه روی یک کدبیس پایدار و تأیید شده کار میکنند.
🚀 نحوه استفاده از CI/CD در فلاتر (گام به گام)
1. 🧰 یک پلتفرم CI/CD انتخاب کنید
ابزاری را انتخاب کنید که از فلاتر پشتیبانی کند. گزینههای محبوب:
- Codemagic (متمرکز بر فلاتر، راهاندازی آسان)
- GitHub Actions (اگر کد شما در GitHub است عالی است)
- Bitrise (گردشهای کاری بصری، مناسب برای برنامههای تلفن همراه)
- GitLab CI/CD (اگر از GitLab استفاده میکنید)
- CircleCI یا Jenkins (قابلیت تنظیم بیشتری دارد)
۲. 🗂️ مخزن پروژه فلاتر خود را راهاندازی کنید
- پروژه فلاتر خود را به یک مخزن گیت (GitHub، GitLab، Bitbucket و غیره) منتقل کنید.
- مطمئن شوید که پروژه شما دارای فایلهای pubspec.yaml و main.dart است.
۳. ⚙️ پیکربندی گردش کار CI/CD
در اینجا مثالی با استفاده از GitHub Actions آورده شده است:
یک فایل در .github/workflows/flutter.yml ایجاد کنید:
name: Flutter CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: subosito/flutter-action@v2 with: flutter-version: '3.10.0' - name: Install dependencies run: flutter pub get - name: Run tests run: flutter test - name: Build APK run: flutter build apk --release
این گردش کار:
- روی هر درخواست push یا pull به main اجرا میشود.
- Flutter را نصب میکند.
- وابستگیها را دریافت میکند.
- تستها را اجرا میکند.
- یک نسخه APK میسازد.
۴. 📦 اختیاری: استقرار خودکار
شما میتوانید مراحل زیر را اضافه کنید:
- آپلود مصنوعات (APK/IPA)
- استقرار در توزیع برنامه Firebase
- انتشار در Google Play یا App Store (با استفاده از Fastlane)
🚀 نحوه استفاده از CI/CD در فلاتر با Codemagic
۱. 📝 ایجاد یک پروژه فلاتر
اگر هنوز این کار را نکردهاید:
flutter create my_app cd my_app
آن را به یک مخزن گیت (GitHub، GitLab، Bitbucket) ارسال کنید.
۲. 🔐 ثبت نام در Codemagic
- به https://codemagic.io بروید
- با ارائه دهنده Git خود (GitHub، GitLab و غیره) وارد شوید
- مخزن Flutter خود را انتخاب کنید
۳. ⚙️ پیکربندی ساخت شما
Codemagic به طور خودکار پروژههای Flutter را شناسایی میکند. شما میتوانید:
- پلتفرمها را انتخاب کنید: اندروید، iOS، وب
- تنظیم محرکهای ساخت: در صورت درخواست push، pull یا دستی
- اضافه کردن متغیرهای محیطی (مانند کلیدهای API یا اعتبارنامههای امضا)
۴. 🧪 اضافه کردن تستها
در پروژه فلاتر خود، تستهای واحد یا ویجت را اضافه کنید:
// test/widget_test.dart void main() { testWidgets('My widget test', (WidgetTester tester) async { await tester.pumpWidget(MyApp()); expect(find.text('Hello'), findsOneWidget); }); }
Codemagic این موارد را به طور خودکار در طول CI اجرا خواهد کرد.
۵. 📦 ساخت و توزیع
Codemagic میتواند:
- ساخت فایلهای APK و برنامههای کاربردی
- آپلود در توزیع برنامههای Firebase
- انتشار در گوگل پلی یا اپ استور (با ادغام Fastlane)
🧠 نکته حرفهای: برای گردشهای کاری سفارشی از codemagic.yaml استفاده کنید
برای کنترل پیشرفته، یک فایل codemagic.yaml در مخزن خود ایجاد کنید:
workflows: flutter-workflow: name: Flutter CI/CD environment: flutter: stable scripts: - flutter pub get - flutter test - flutter build apk --release artifacts: - build/app/outputs/flutter-apk/app-release.apk