Flutter এ Continuous Integration (CI) এবং Continuous Deployment (CD) সেটআপ করা উন্নয়ন প্রক্রিয়াকে দ্রুত এবং আরও কার্যকর করে তোলে। CI/CD ব্যবহার করে, আপনি প্রতিটি কোড পরিবর্তন বা পুশ করার সময় স্বয়ংক্রিয়ভাবে টেস্টিং, বিল্ড, এবং ডেপ্লয়মেন্ট প্রক্রিয়াগুলো পরিচালনা করতে পারেন, যা বাগ কমায় এবং ডেভেলপমেন্টের সময় বাঁচায়।
Flutter এ CI/CD সেটআপ করার সেরা টুলস:
- GitHub Actions: GitHub এ একটি ইনবিল্ট টুল, যা GitHub রিপোজিটরিতে ডিরেক্টলি ইন্টিগ্রেট করা যায়।
- GitLab CI/CD: GitLab এ ইন্টিগ্রেটেড CI/CD, যা রিপোজিটরিতে ডিপ্লয়মেন্ট এবং বিল্ড সেটআপ করতে সহজ।
- Bitrise: Flutter অ্যাপ্লিকেশনের জন্য একটি জনপ্রিয় CI/CD প্ল্যাটফর্ম, যা অ্যান্ড্রয়েড এবং iOS উভয়ের জন্য কাজ করে।
- CircleCI: একাধিক প্ল্যাটফর্মের জন্য CI/CD সমর্থন করে এবং Flutter এর জন্য কাস্টমাইজড কনফিগারেশন প্রদান করে।
Flutter এর জন্য GitHub Actions ব্যবহার করে CI/CD সেটআপ করা:
ধাপ ১: .github/workflows/flutter.yml ফাইল তৈরি করা:
Flutter প্রোজেক্টের রুট ডিরেক্টরিতে .github/workflows/flutter.yml নামে একটি ফাইল তৈরি করুন এবং নিচের কোড যুক্ত করুন:
name: Flutter CI/CD
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.0.0'
- name: Install dependencies
run: flutter pub get
- name: Run tests
run: flutter test
- name: Build APK
run: flutter build apk --release
- name: Build iOS (macOS only)
if: runner.os == 'macOS'
run: flutter build ios --release
ব্যাখ্যা:
- on: push/pull_request: প্রতিবার পুশ বা পুল রিকোয়েস্ট করার সময় অ্যাকশনটি ট্রিগার হয়।
- jobs: একটি CI প্রক্রিয়ার বিভিন্ন ধাপ।
- runs-on: CI প্রক্রিয়াটি কোন পরিবেশে রান হবে (উবুন্টু, ম্যাক ওএস, ইত্যাদি)।
- flutter pub get: প্রোজেক্টের সমস্ত ডিপেন্ডেন্সি ইনস্টল করে।
- flutter test: ইউনিট এবং উইজেট টেস্ট চালায়।
- flutter build apk --release: Android রিলিজ বিল্ড তৈরি করে।
- flutter build ios --release: শুধুমাত্র macOS-এ iOS রিলিজ বিল্ড তৈরি করে।
ধাপ ২: GitHub Secrets সেটআপ করা:
যদি আপনার অ্যাপটি সাইন করার জন্য keystore বা iOS certificates প্রয়োজন হয়, তাহলে GitHub Secrets এ সংরক্ষণ করুন।
- GitHub রিপোজিটরিতে যান।
- Settings -> Secrets -> New repository secret সিলেক্ট করুন।
- প্রয়োজনীয় তথ্য (যেমন ANDROID_KEYSTORE এবং KEYSTORE_PASSWORD) যুক্ত করুন।
Flutter এর জন্য GitLab CI/CD সেটআপ করা:
ধাপ ১: .gitlab-ci.yml ফাইল তৈরি করা:
Flutter প্রোজেক্টের রুট ডিরেক্টরিতে .gitlab-ci.yml নামে একটি ফাইল তৈরি করুন এবং নিচের কনফিগারেশন যুক্ত করুন:
image: cirrusci/flutter:stable
stages:
- build
- test
before_script:
- flutter pub get
build_android:
stage: build
script:
- flutter build apk --release
artifacts:
paths:
- build/app/outputs/flutter-apk/app-release.apk
build_ios:
stage: build
script:
- flutter build ios --release
only:
- macos
test:
stage: test
script:
- flutter test
ব্যাখ্যা:
- image: GitLab রানারের জন্য Flutter ইমেজ নির্ধারণ করে।
- stages: CI প্রক্রিয়ার বিভিন্ন ধাপ (build, test)।
- artifacts: বিল্ড ফাইল সংরক্ষণ করে, যা ডাউনলোড করা যায়।
Bitrise ব্যবহার করে Flutter CI/CD সেটআপ করা:
- Bitrise এ একটি অ্যাকাউন্ট তৈরি করুন এবং আপনার GitHub/GitLab রিপোজিটরি ইমপোর্ট করুন।
- Bitrise অ্যাপ সেটআপ গাইডলাইন অনুসরণ করে Flutter Workflow নির্বাচন করুন।
- Flutter Build Step এবং Flutter Test Step যোগ করুন।
- Android এবং iOS ডিপ্লয়মেন্ট সেটআপ করতে Keystore এবং Certificate কনফিগার করুন।
- Build Trigger তৈরি করুন, যাতে প্রতিটি পুশ বা পুল রিকোয়েস্টে বিল্ড রান হয়।
CI/CD এ Deployment সেটআপ করা (Firebase App Distribution, Play Store, App Store):
১. Firebase App Distribution:
Firebase App Distribution ব্যবহার করে ডেভেলপমেন্ট বা টেস্ট বিল্ড ডিস্ট্রিবিউট করা যায়।
- firebase_app_distribution প্লাগইন ইন্সটল করুন।
- firebase_app_distribution_token এবং firebase_project_id GitHub Secrets এ যুক্ত করুন।
- GitHub Actions বা GitLab CI/CD ফাইলে Firebase ডিস্ট্রিবিউশন স্টেপ যোগ করুন:
- name: Deploy to Firebase App Distribution
run: flutterfire deploy --project <your_project_id>
২. Google Play Store এ Deployment:
- Google Play Console এ API Access সেটআপ করুন এবং Service Account Key ডাউনলোড করুন।
- GitHub Secrets বা GitLab CI/CD এ SERVICE_ACCOUNT_KEY যুক্ত করুন।
- CI/CD কনফিগারেশন ফাইলে Google Play প্লাগইন যুক্ত করুন:
- name: Deploy to Play Store
run: fastlane supply --json_key=path/to/your-service-account.json --package_name=com.example.app
৩. Apple App Store এ Deployment (fastlane ব্যবহার করে):
- Fastlane সেটআপ করুন এবং iOS Certificates GitHub Secrets এ যুক্ত করুন।
- .fastlane/Fastfile ফাইলে নিচের স্ক্রিপ্ট যুক্ত করুন:
lane :deploy do
build_ios_app(
workspace: "Runner.xcworkspace",
scheme: "Runner"
)
upload_to_app_store
end
- CI/CD ফাইলে fastlane রান করুন:
- name: Deploy to App Store
run: bundle exec fastlane deploy
Flutter CI/CD সেটআপের সেরা চর্চা:
- Secrets এবং Credentials সুরক্ষিত রাখুন: GitHub Secrets, GitLab Secrets, বা Bitrise Secrets ব্যবহার করে সমস্ত কনফিডেনশিয়াল তথ্য সুরক্ষিত রাখুন।
- Automated Testing: প্রতিটি বিল্ডে টেস্ট রান নিশ্চিত করুন, যাতে কোড বেসে কোনো সমস্যা না থাকে।
- Incremental Builds: শুধুমাত্র পরিবর্তিত কোড বা ফাইলের উপর ভিত্তি করে বিল্ড রান করুন, যা CI/CD প্রক্রিয়াকে দ্রুত করে।
- Caching ব্যবহার করুন: pub get এবং অন্যান্য নির্দিষ্ট ডিপেন্ডেন্সি ক্যাশ করুন, যাতে CI রান দ্রুত হয়।
- Logging এবং Monitoring: প্রতিটি বিল্ড এবং ডিপ্লয়মেন্টের লগ মনিটরিং করুন, যাতে কোনো সমস্যা হলে দ্রুত সমাধান করা যায়।
উপসংহার:
Flutter এ CI/CD সেটআপ করে ডেভেলপমেন্ট প্রক্রিয়াকে স্বয়ংক্রিয়, দ্রুত এবং কার্যকর করা যায়। সঠিক টুল এবং সেটআপ ব্যবহারের মাধ্যমে আপনি Flutter অ্যাপ্লিকেশনের জন্য নির্ভরযোগ্য বিল্ড এবং ডিপ্লয়মেন্ট প্রক্রিয়া গড়ে তুলতে পারবেন, যা ডেভেলপমেন্ট টাইম বাঁচায় এবং কোড কোয়ালিটি উন্নত করে।
Flutter অ্যাপের জন্য Continuous Integration (CI) এবং Continuous Deployment/Delivery (CD) একটি আধুনিক ডেভেলপমেন্ট প্রক্রিয়া, যা স্বয়ংক্রিয়ভাবে কোড বিল্ড, টেস্ট, এবং ডিপ্লয় করতে ব্যবহৃত হয়। CI/CD পদ্ধতি ডেভেলপমেন্ট প্রক্রিয়াকে আরও কার্যকর, দ্রুত, এবং নির্ভরযোগ্য করে। Flutter অ্যাপে CI/CD ইমপ্লিমেন্ট করার মাধ্যমে আপনি সহজেই কোড পরিবর্তন পরীক্ষা করে, ত্রুটি সনাক্ত করে, এবং স্বয়ংক্রিয়ভাবে প্রোডাকশন পরিবেশে ডিপ্লয় করতে পারেন।
CI/CD কী?
Continuous Integration (CI):
- CI হলো একটি প্রক্রিয়া যেখানে ডেভেলপাররা তাদের কোড নিয়মিতভাবে রিপোজিটরিতে একত্রিত করে এবং স্বয়ংক্রিয়ভাবে বিল্ড ও টেস্ট চালায়।
- এটি প্রতিটি কোড পরিবর্তন স্বয়ংক্রিয়ভাবে পরীক্ষা করে এবং নিশ্চিত করে যে কোডটি স্টেবল এবং ত্রুটিমুক্ত।
Continuous Deployment/Delivery (CD):
- CD হলো একটি প্রক্রিয়া যেখানে CI এর পর সফলভাবে বিল্ড এবং টেস্ট পাস হলে স্বয়ংক্রিয়ভাবে কোড প্রোডাকশন বা স্টেজিং পরিবেশে ডিপ্লয় করা হয়।
- Continuous Delivery তে ডিপ্লয়মেন্ট ম্যানুয়াল হতে পারে, কিন্তু Continuous Deployment এ প্রতিটি সফল কোড চেঞ্জ স্বয়ংক্রিয়ভাবে ডিপ্লয় হয়।
Flutter এ CI/CD কেন গুরুত্বপূর্ণ?
- স্বয়ংক্রিয় টেস্টিং: CI/CD স্বয়ংক্রিয়ভাবে Unit Test, Widget Test, এবং Integration Test চালায়, যা কোডের ত্রুটি দ্রুত সনাক্ত করে।
- দ্রুত ডেলিভারি: CI/CD প্রক্রিয়া ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টকে স্বয়ংক্রিয় করে, ফলে নতুন ফিচার এবং বাগ ফিক্স দ্রুত রিলিজ করা যায়।
- কোড কোয়ালিটি নিশ্চিত করা: CI/CD প্রক্রিয়ায় প্রতিটি কোড পরিবর্তন পরীক্ষা করা হয়, যা কোডের গুণগত মান উন্নত করে।
- রিসোর্স অপ্টিমাইজেশন: CI/CD এর মাধ্যমে ম্যানুয়াল বিল্ড এবং ডিপ্লয়মেন্টের প্রয়োজনীয়তা কমে যায়, ফলে ডেভেলপারদের সময় এবং রিসোর্স সাশ্রয় হয়।
Flutter অ্যাপের জন্য CI/CD সেটআপ করার ধাপ
Flutter অ্যাপের জন্য CI/CD সেটআপ করতে বিভিন্ন টুল ব্যবহার করা যায়, যেমন GitHub Actions, GitLab CI, Bitbucket Pipelines, এবং Jenkins। নিচে GitHub Actions ব্যবহার করে একটি Flutter প্রজেক্টে CI/CD সেটআপের উদাহরণ দেওয়া হলো।
ধাপ ১: কোড রিপোজিটরি প্রস্তুত করা
- আপনার Flutter প্রজেক্ট GitHub, GitLab, বা Bitbucket এ হোস্ট করুন। GitHub এ হলে, আপনি সহজেই GitHub Actions ব্যবহার করে CI/CD ইমপ্লিমেন্ট করতে পারবেন।
ধাপ ২: CI/CD কনফিগারেশন ফাইল তৈরি করা
- আপনার প্রোজেক্টের রুট ডিরেক্টরিতে
.github/workflowsনামে একটি ফোল্ডার তৈরি করুন। - এর মধ্যে একটি YAML ফাইল তৈরি করুন, যেমন
flutter_ci.yml, এবং নিচের কোডটি যোগ করুন:
name: Flutter CI/CD
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 'stable'
- name: Install dependencies
run: flutter pub get
- name: Run tests
run: flutter test
- name: Build APK
run: flutter build apk --release
- name: Upload APK Artifact
uses: actions/upload-artifact@v2
with:
name: app-release.apk
path: build/app/outputs/flutter-apk/app-release.apk
ধাপে ধাপে ব্যাখ্যা:
on:
- এই সেকশনে
pushএবংpull_requestইভেন্ট যুক্ত করা হয়েছে, যা নির্দেশ করে যখনইmainব্রাঞ্চে কমিট বা পুল রিকোয়েস্ট হবে, তখন CI প্রক্রিয়া চালু হবে।
jobs:
buildনামে একটি কাজ তৈরি করা হয়েছে যাubuntu-latestভার্চুয়াল মেশিনে চলবে।
steps:
- Checkout code: রিপোজিটরির কোড ক্লোন করা।
- Install Flutter: Flutter সেটআপ করা এবং নির্দিষ্ট ভার্সন (যেমন
stable) ইনস্টল করা। - Install dependencies:
flutter pub getকমান্ড চালিয়ে ডিপেন্ডেন্সি ইনস্টল করা। - Run tests:
flutter testকমান্ড চালিয়ে Unit Test এবং Widget Test চালানো। - Build APK: সফলভাবে টেস্ট পাস হলে
flutter build apk --releaseকমান্ড চালিয়ে প্রোডাকশনের জন্য APK বিল্ড করা। - Upload APK Artifact: বিল্ড করা APK সংরক্ষণ করা, যাতে পরবর্তী স্টেপে এটি ডিপ্লয় করা যায়।
ধাপ ৩: Integration Test যোগ করা
Integration Test চালানোর জন্য একটি নতুন স্টেপ যোগ করুন:
- name: Run integration tests
run: flutter drive --target=test_driver/app.dart
- এটি Integration Test চালায় এবং নিশ্চিত করে যে পুরো অ্যাপ সঠিকভাবে কাজ করছে।
Flutter CI/CD প্রক্রিয়ার সুবিধা
স্বয়ংক্রিয় টেস্টিং:
- CI প্রক্রিয়ায় স্বয়ংক্রিয়ভাবে টেস্ট চালানোর ফলে বাগ এবং ত্রুটি দ্রুত ধরা যায়, যা ডেভেলপারদের দ্রুত ফিডব্যাক দেয়।
নির্ভরযোগ্য রিলিজ:
- CD প্রক্রিয়ায়, কোড যদি টেস্ট পাস করে এবং বিল্ড সফল হয়, তাহলে স্বয়ংক্রিয়ভাবে প্রোডাকশন পরিবেশে ডিপ্লয় করা হয়। এটি নিশ্চিত করে যে রিলিজগুলো নির্ভরযোগ্য এবং ত্রুটিমুক্ত।
ডেভেলপমেন্টের গতি বৃদ্ধি:
- CI/CD এবং Testing Integration করার ফলে ডেভেলপারদের ম্যানুয়াল টেস্টিং এবং ডিপ্লয়মেন্টের প্রয়োজন হয় না, ফলে ডেভেলপমেন্ট দ্রুত হয়।
কোড কোয়ালিটি উন্নত:
- টেস্টিং ইন্টিগ্রেশন নিশ্চিত করে যে প্রতিটি কোড পরিবর্তন সঠিকভাবে পরীক্ষা করা হয়েছে, যা কোডের গুণগত মান বৃদ্ধি করে এবং ডেভেলপমেন্ট প্রক্রিয়াকে আরও সুসংগঠিত করে।
Flutter এ CI/CD ব্যবহারের কেস স্টাডি
- প্রজেক্ট সেটআপ: আপনি একটি ই-কমার্স অ্যাপ ডেভেলপ করছেন, যেখানে প্রতিটি ফিচার যোগ করার সাথে সাথে CI প্রক্রিয়ায় স্বয়ংক্রিয়ভাবে টেস্ট চালানো হয়।
- টেস্টিং ইন্টিগ্রেশন: অ্যাপের মূল ফিচার যেমন লগইন, প্রোডাক্ট দেখানো, এবং চেকআউট প্রক্রিয়ার জন্য Integration Test যুক্ত করা হয়েছে।
- রিলিজ ম্যানেজমেন্ট: প্রতিটি সফল বিল্ড এবং টেস্ট পাস হলে অ্যাপটি স্বয়ংক্রিয়ভাবে Play Store এবং App Store এ আপলোড হয়।
Flutter এ CI/CD এর জন্য জনপ্রিয় টুলস
- GitHub Actions: GitHub রিপোজিটরির সাথে স্বয়ংক্রিয়ভাবে ইন্টিগ্রেট হয়ে CI/CD ইমপ্লিমেন্ট করতে ব্যবহার করা যায়।
- GitLab CI: GitLab এর সাথে সহজেই Flutter অ্যাপের CI/CD সেটআপ করা যায়।
- Bitbucket Pipelines: Bitbucket রিপোজিটরিতে হোস্ট করা প্রজেক্টের জন্য এটি একটি কার্যকরী সমাধান।
- Jenkins: একটি ওপেন সোর্স CI/CD টুল যা বিভিন্ন প্ল্যাটফর্মে Flutter অ্যাপের জন্য ব্যবহার করা যায়।
সংক্ষেপে CI/CD এর সুবিধা
| সুবিধা | ব্যাখ্যা |
|---|---|
| স্বয়ংক্রিয় টেস্টিং | প্রতিটি কোড পরিবর্তন স্বয়ংক্রিয়ভাবে পরীক্ষা করা হয়। |
| দ্রুত রিলিজ প্রক্রিয়া | কোড পরিবর্তন এবং টেস্ট পাস হলে স্বয়ংক্রিয়ভাবে ডিপ্লয় করা হয়। |
| কোড কোয়ালিটি উন্নত | প্রতিটি পরিবর্তন কোডের গুণগত মান পরীক্ষা করা হয়। |
| রিসোর্স অপ্টিমাইজেশন | ডেভেলপারদের ম্যানুয়াল কাজ কমিয়ে দেয়, যা সময় সাশ্রয় করে। |
Flutter অ্যাপের জন্য CI/CD প্রক্রিয়া সঠিকভাবে ইমপ্লিমেন্ট করলে আপনার ডেভেলপমেন্ট চক্র দ্রুত, কার্যকরী এবং নির্ভরযোগ্য হয়ে উঠবে। এটি আপনার টিমের উৎপাদনশীলতা বাড়াতে এবং অ্যাপের গুণগত মান নিশ্চিত করতে সাহায্য করবে।
Flutter অ্যাপ্লিকেশন ডেভেলপমেন্টে GitHub Actions এবং Bitrise ব্যবহার করে Automated Builds সেটআপ করা একটি গুরুত্বপূর্ণ এবং কার্যকরী প্রক্রিয়া। এটি আপনাকে স্বয়ংক্রিয়ভাবে অ্যাপ বিল্ড এবং টেস্ট করার সুবিধা দেয়, যা কোডের কোয়ালিটি মেইনটেইন করে এবং দ্রুত ডেলিভারি নিশ্চিত করে। নিচে এই দুটি টুল ব্যবহার করে Flutter অ্যাপের জন্য Automated Builds সেটআপ করার ধাপগুলো দেয়া হলো:
GitHub Actions ব্যবহার করে Automated Builds সেটআপ করা:
GitHub Actions হলো একটি Continuous Integration/Continuous Deployment (CI/CD) টুল, যা GitHub রিপোজিটরিতে ডিরেক্টলি ইন্টিগ্রেটেড। এটি আপনার Flutter প্রজেক্টের উপর বিভিন্ন বিল্ড, টেস্ট, এবং ডিপ্লয়মেন্ট প্রক্রিয়া স্বয়ংক্রিয় করতে পারে।
ধাপ ১: GitHub Workflow তৈরি করা:
- Flutter প্রজেক্টের রুট ডিরেক্টরিতে
.github/workflowsফোল্ডার তৈরি করুন। flutter.ymlনামে একটি ফাইল তৈরি করুন এবং এর মধ্যে নিচের কোড যুক্ত করুন:
name: Flutter CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.0.0' # আপনার ব্যবহৃত Flutter ভার্সন
- name: Install dependencies
run: flutter pub get
- name: Run tests
run: flutter test
- name: Build APK
run: flutter build apk --release
- name: Build iOS (only on macOS)
if: runner.os == 'macOS'
run: flutter build ios --release
বিবরণ:
- on: এটি নির্ধারণ করে কোন ইভেন্ট ট্রিগার হলে এই ওয়র্কফ্লো রান হবে। এখানে
pushএবংpull_requestইভেন্ট নির্ধারণ করা হয়েছে। - jobs: প্রতিটি কাজের বিবরণ।
- runs-on: কোন অপারেটিং সিস্টেমে এই কাজ রান হবে তা নির্ধারণ করা হয়েছে।
- Setup Flutter: এটি Flutter সেটআপ করে।
- Install dependencies: ডিপেন্ডেন্সি ইন্সটল করে।
- Run tests: টেস্ট কেস রান করে।
- Build APK: Android এর জন্য একটি APK বিল্ড করে।
- Build iOS: iOS এর জন্য IPA বিল্ড করে (শুধুমাত্র macOS runner এ)।
ধাপ ২: GitHub Actions রান করা:
- এই কনফিগারেশন ফাইল রিপোজিটরিতে পুশ করার পর, GitHub স্বয়ংক্রিয়ভাবে এই ওয়র্কফ্লো রান করবে যখন
mainব্রাঞ্চে কোনো কোড পুশ হবে। - Actions ট্যাবে গিয়ে আপনি ওয়র্কফ্লো প্রোগ্রেস এবং লগ চেক করতে পারবেন।
GitHub Actions এর সুবিধা:
- স্বয়ংক্রিয় টেস্ট এবং বিল্ড: কোড পুশ করার সাথে সাথে স্বয়ংক্রিয়ভাবে বিল্ড এবং টেস্ট সম্পন্ন হয়।
- ইন্টিগ্রেটেড টুল: এটি সরাসরি GitHub এ ইন্টিগ্রেটেড, তাই আলাদা সেটআপের প্রয়োজন হয় না।
- কাস্টমাইজেশন সুবিধা: আপনি সহজেই ওয়র্কফ্লো কাস্টমাইজ করতে পারেন এবং বিভিন্ন বিল্ড এবং টেস্ট সিচুয়েশন হ্যান্ডেল করতে পারেন।
Bitrise ব্যবহার করে Automated Builds সেটআপ করা:
Bitrise হলো একটি ক্লাউড-ভিত্তিক CI/CD টুল, যা বিশেষ করে মোবাইল অ্যাপ ডেভেলপমেন্টের জন্য ডিজাইন করা। এটি আপনাকে Android এবং iOS উভয় প্ল্যাটফর্মের জন্য স্বয়ংক্রিয় বিল্ড এবং ডিপ্লয়মেন্টে সহায়তা করে।
ধাপ ১: Bitrise অ্যাকাউন্ট তৈরি করা এবং প্রজেক্ট যুক্ত করা:
- Bitrise এ সাইন আপ করুন: Bitrise এ সাইন আপ করুন এবং আপনার GitHub অ্যাকাউন্টের সাথে কানেক্ট করুন।
- নতুন অ্যাপ যোগ করুন:
- Add New App এ ক্লিক করুন।
- আপনার GitHub রিপোজিটরি সিলেক্ট করুন।
- প্রজেক্টের সেটআপ এবং বিল্ড ফাইল অটো-ডিটেক্ট করতে দিন।
ধাপ ২: বিল্ড কনফিগার করা:
- Flutter অ্যাপ ডিটেকশন: Bitrise স্বয়ংক্রিয়ভাবে আপনার প্রজেক্টে Flutter ডিটেক্ট করবে।
- Workflow Editor এ যান:
- Primary Workflow সিলেক্ট করুন।
- এখানে আপনি বিভিন্ন বিল্ড এবং টেস্ট স্টেপ যোগ করতে পারবেন।
- নিচের মত করে স্টেপগুলো যোগ করুন:
- Flutter Install: Flutter ইন্সটল করার জন্য।
- Flutter Test: টেস্ট চালানোর জন্য।
- Flutter Build: APK এবং IPA বিল্ড করার জন্য।
- Environment Variables কনফিগার করুন:
- ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, এবং ANDROID_KEY_ALIAS এর মতো environment variables যোগ করুন যদি আপনার Android অ্যাপ সাইনিং প্রয়োজন হয়।
ধাপ ৩: বিল্ড ট্রিগার করা:
Bitrise স্বয়ংক্রিয়ভাবে বিল্ড ট্রিগার করবে যখন আপনি আপনার রিপোজিটরিতে কোড পুশ করবেন। আপনি ম্যানুয়ালি বিল্ড ট্রিগার করতে চাইলে Bitrise Dashboard এ গিয়ে Start/Schedule a Build ক্লিক করুন।
Bitrise এর সুবিধা:
- ক্লাউড-বেইজড বিল্ড সার্ভিস: কোন ফিজিক্যাল সার্ভার ম্যানেজ করার প্রয়োজন হয় না।
- প্ল্যাটফর্ম সাপোর্ট: Android এবং iOS উভয় প্ল্যাটফর্মে বিল্ড এবং টেস্ট করা যায়।
- এডভান্সড কনফিগারেশন অপশন: বিল্ড সেটআপ এবং কনফিগারেশনের অনেক ফ্লেক্সিবিলিটি প্রদান করে।
- ইন্টিগ্রেশন: Slack, Firebase, এবং আরো অন্যান্য টুলের সাথে সহজে ইন্টিগ্রেট করা যায়।
Best Practices for Automated Builds:
- বিল্ড টাইম অপ্টিমাইজ করুন: আপনার বিল্ড প্রক্রিয়াকে দ্রুত করার জন্য ডিপেন্ডেন্সি ক্যাশিং এবং লাইটওয়েট বিল্ড কনফিগারেশন ব্যবহার করুন।
- সিকিউরিটি মেইনটেইন করুন: API Key, Keystore ফাইল এবং সিক্রেটগুলো environment variables বা secret management টুল দিয়ে সিকিউর করুন।
- Test Coverage বাড়ান: Automated Builds এর সাথে ইউনিট টেস্ট, উইজেট টেস্ট এবং ইন্টিগ্রেশন টেস্ট অন্তর্ভুক্ত করুন।
- স্টেজিং এবং প্রোডাকশন বিল্ড ভিন্ন রাখুন: Bitrise বা GitHub Actions এর মধ্যে বিল্ড ভ্যারিয়েন্ট বা ফ্লেভার ব্যবহার করে স্টেজিং এবং প্রোডাকশন বিল্ড আলাদা করুন।
উপসংহার:
Flutter এ GitHub Actions এবং Bitrise ব্যবহার করে Automated Builds সেটআপ করা আপনার ডেভেলপমেন্ট প্রক্রিয়াকে আরও কার্যকরী এবং স্বয়ংক্রিয় করতে সাহায্য করবে। এটি কোড কন্টিনিউয়াস ইন্টিগ্রেশন এবং ডেলিভারিতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। সঠিক কনফিগারেশন এবং সিকিউরিটি ব্যবস্থাপনা নিশ্চিত করে, আপনি একটি স্থিতিশীল এবং প্রফেশনাল বিল্ড প্রসেস গড়ে তুলতে পারেন।
Firebase App Distribution ব্যবহার করে Flutter অ্যাপ্লিকেশনের জন্য টেস্টিং সেটআপ করা একটি কার্যকর উপায়। এটি ডেভেলপারদের দ্রুত বিল্ড ডিস্ট্রিবিউট করতে এবং টেস্টারদের কাছে সরাসরি শেয়ার করতে সহায়ক, যাতে তারা ফিডব্যাক দিতে পারেন। Firebase App Distribution আপনাকে নির্দিষ্ট টেস্টারদের কাছে অটোমেটেড বিল্ড শেয়ার করার সুযোগ দেয় এবং বিভিন্ন বিল্ডের পারফরম্যান্স ও ক্র্যাশ রিপোর্ট মনিটর করতে সাহায্য করে।
Firebase App Distribution সেটআপ করার ধাপসমূহ:
ধাপ ১: Firebase প্রোজেক্ট তৈরি করা:
- Firebase Console এ যান: Firebase Console।
- একটি নতুন প্রোজেক্ট তৈরি করুন বা বিদ্যমান প্রোজেক্টে যোগ করুন।
- Android এবং iOS অ্যাপ Firebase প্রোজেক্টে যুক্ত করুন এবং প্রয়োজনীয় google-services.json (Android) এবং GoogleService-Info.plist (iOS) ফাইলগুলো আপনার Flutter প্রোজেক্টে যুক্ত করুন।
ধাপ ২: Firebase CLI ইনস্টল করা:
Firebase CLI ইনস্টল করার মাধ্যমে আপনি সহজেই আপনার প্রোজেক্টে Firebase কমান্ড ব্যবহার করতে পারবেন।
npm install -g firebase-tools
Firebase CLI ইনস্টল করার পরে, Firebase এ লগ ইন করুন:
firebase login
ধাপ ৩: firebase_app_distribution প্লাগইন Flutter প্রোজেক্টে যুক্ত করা:
pubspec.yaml ফাইলে firebase_app_distribution প্লাগইন যুক্ত করুন:
dependencies:
firebase_core: ^2.4.1
firebase_app_distribution: ^0.5.2
এরপর ডিপেন্ডেন্সি ইন্সটল করুন:
flutter pub get
ধাপ ৪: Android এবং iOS সেটআপ করা:
Android:
android/app/build.gradle ফাইলে নিচেরটি যুক্ত করুন:
apply plugin: 'com.google.firebase.appdistribution'
firebase_app_distribution এর জন্য কনফিগারেশন সেট করুন:
firebaseAppDistribution {
appId = "1:1234567890:android:abc123def456"
testers = "testers@example.com"
releaseNotesFile = "release-notes.txt"
}
iOS:
ios/Runner.xcworkspace ওপেন করুন এবং Signing & Capabilities সেকশনে গিয়ে অ্যাপ সাইনিং কনফিগার করুন।
Fastlane ব্যবহার করে iOS অ্যাপ Firebase এ ডিস্ট্রিবিউট করতে পারবেন। Fastlane সেটআপ করুন:
sudo gem install fastlane
ios ডিরেক্টরিতে fastlane ফোল্ডার তৈরি করুন:
fastlane init
Fastfile এ নিচের লেন যোগ করুন:
lane :distribute do
build_ios_app(
workspace: "Runner.xcworkspace",
scheme: "Runner"
)
firebase_app_distribution(
app: "1:1234567890:ios:abc123def456",
testers: "testers@example.com",
release_notes: "New features and bug fixes."
)
end
ধাপ ৫: Firebase App Distribution এ বিল্ড আপলোড করা:
Android অ্যাপ ডিস্ট্রিবিউট করা:
Android অ্যাপ বিল্ড করার জন্য এবং Firebase App Distribution এ আপলোড করার জন্য নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
Release Build তৈরি করুন:
flutter build apk --release
Firebase CLI ব্যবহার করে বিল্ড আপলোড করুন:
firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk --app 1:1234567890:android:abc123def456 --groups testers --release-notes "New features added."
iOS অ্যাপ ডিস্ট্রিবিউট করা:
Xcode এ iOS রিলিজ বিল্ড তৈরি করুন:
flutter build ios --release
Fastlane ব্যবহার করে বিল্ড ডিস্ট্রিবিউট করুন:
cd ios
fastlane distribute
ব্যাখ্যা:
- flutter build apk --release: Android অ্যাপের রিলিজ বিল্ড তৈরি করে।
- firebase appdistribution: Firebase CLI এর মাধ্যমে Android বিল্ড Firebase এ আপলোড করে।
- fastlane distribute: Fastlane এর মাধ্যমে iOS বিল্ড Firebase App Distribution এ আপলোড করে।
ধাপ ৬: Firebase App Distribution এ Testers যুক্ত করা:
Firebase Console এ গিয়ে:
- App Distribution -> Testers & Groups সিলেক্ট করুন।
- টেস্টারদের ইমেইল এড্রেস যুক্ত করুন।
- টেস্টারদের জন্য একটি গ্রুপ তৈরি করতে পারেন, যেমন internal testers বা beta testers।
ধাপ ৭: Testers এর জন্য বিল্ড শেয়ার করা:
Firebase App Distribution স্বয়ংক্রিয়ভাবে টেস্টারদের ইমেইলে একটি লিংক পাঠাবে, যেখান থেকে তারা অ্যাপটি ডাউনলোড এবং টেস্ট করতে পারবে। টেস্টারদের অ্যাপ ইনস্টল করার সময় ডিভাইসে Untrusted Developer অপশন এড়াতে Firebase Tester App ব্যবহার করতে বলা হতে পারে।
Continuous Integration (CI) সেটআপ (GitHub Actions, Bitrise):
Firebase App Distribution কে CI/CD প্রক্রিয়ার সাথে ইন্টিগ্রেট করা যায়, যাতে প্রতিবার কোড পুশ করার সময় স্বয়ংক্রিয়ভাবে বিল্ড এবং ডিস্ট্রিবিউট হয়।
GitHub Actions এর উদাহরণ:
name: Flutter CI/CD
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.0.0'
- name: Install dependencies
run: flutter pub get
- name: Build APK
run: flutter build apk --release
- name: Upload to Firebase App Distribution
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
run: firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk --app 1:1234567890:android:abc123def456 --groups testers
ব্যাখ্যা:
- flutter-action: GitHub Action এর মাধ্যমে Flutter সেটআপ করে।
- firebase appdistribution: বিল্ড ফাইল Firebase App Distribution এ আপলোড করে।
Firebase App Distribution এর সুবিধা:
- সহজ বিল্ড ডিস্ট্রিবিউশন: টেস্টারদের কাছে স্বয়ংক্রিয়ভাবে বিল্ড শেয়ার করা যায়।
- সেন্ট্রালাইজড ফিডব্যাক: টেস্টারদের ফিডব্যাক এক জায়গায় সংগঠিত করা যায়।
- ক্র্যাশ রিপোর্টিং: Firebase Crashlytics এর সাথে ইন্টিগ্রেশন করে ক্র্যাশ মনিটরিং করা যায়।
- বিল্ড ট্র্যাকিং: প্রতিটি বিল্ড এবং রিলিজের জন্য টেস্টারদের একটি ইতিহাস সংরক্ষণ করা যায়।
উপসংহার:
Firebase App Distribution ব্যবহার করে Flutter অ্যাপ্লিকেশন টেস্টিং এবং ডিস্ট্রিবিউশন প্রক্রিয়া দ্রুত, কার্যকর এবং সহজ করা যায়। CI/CD ইন্টিগ্রেশন করে ডেভেলপমেন্ট প্রক্রিয়াকে অটোমেটেড এবং স্কেলেবল করতে পারবেন, যা আপনাকে ডেভেলপমেন্টে সময় বাঁচাতে এবং কোড কোয়ালিটি উন্নত করতে সহায়ক।
Flutter অ্যাপে Automated Testing এবং Deployment Setup করা মানে হলো CI/CD (Continuous Integration/Continuous Deployment) প্রক্রিয়া ইমপ্লিমেন্ট করা, যা ডেভেলপমেন্ট চক্রকে আরও দ্রুত, কার্যকরী, এবং নির্ভরযোগ্য করে। এই প্রক্রিয়ার মাধ্যমে কোড স্বয়ংক্রিয়ভাবে বিল্ড, টেস্ট, এবং ডিপ্লয় করা হয়, যা ডেভেলপারদের জন্য ম্যানুয়াল কাজ কমিয়ে দেয় এবং ব্যবহারকারীদের জন্য একটি নির্ভরযোগ্য অ্যাপ তৈরি করে। Flutter অ্যাপে Automated Testing এবং Deployment Setup করার জন্য একটি গাইড নিচে ধাপে ধাপে ব্যাখ্যা করা হলো।
প্রয়োজনীয় টুলস এবং প্রিপারেশন
Flutter এ Automated Testing এবং Deployment Setup করার জন্য কিছু জনপ্রিয় CI/CD টুল ব্যবহার করা হয়, যেমন GitHub Actions, GitLab CI, Bitbucket Pipelines, এবং Jenkins। এখানে GitHub Actions ব্যবহার করে Flutter অ্যাপে CI/CD সেটআপের উদাহরণ দেওয়া হলো।
ধাপ ১: কোড রিপোজিটরি তৈরি এবং হোস্ট করা
- আপনার Flutter প্রজেক্ট GitHub এ হোস্ট করুন। GitHub এ থাকলে, GitHub Actions সহজেই ব্যবহার করা যাবে।
- নিশ্চিত করুন যে আপনার প্রজেক্টে
pubspec.yamlসঠিকভাবে কনফিগার করা আছে এবং সকল ডিপেন্ডেন্সি আপডেটেড আছে।
ধাপ ২: CI/CD কনফিগারেশন ফাইল তৈরি করা
- ফোল্ডার তৈরি:
- আপনার প্রোজেক্টের রুট ডিরেক্টরিতে
.github/workflowsনামে একটি ফোল্ডার তৈরি করুন।
- আপনার প্রোজেক্টের রুট ডিরেক্টরিতে
- YAML ফাইল তৈরি:
.github/workflowsফোল্ডারের মধ্যেflutter_ci.ymlনামে একটি YAML ফাইল তৈরি করুন এবং নিচের কোডটি যোগ করুন:
name: Flutter CI/CD
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 'stable'
- name: Install dependencies
run: flutter pub get
- name: Run tests
run: flutter test
- name: Build APK
run: flutter build apk --release
- name: Upload APK Artifact
uses: actions/upload-artifact@v2
with:
name: app-release.apk
path: build/app/outputs/flutter-apk/app-release.apk
- name: Build iOS App
if: runner.os == 'macOS'
run: flutter build ios --release
- name: Deploy iOS to TestFlight
if: runner.os == 'macOS'
run: xcrun altool --upload-app -f build/ios/ipa/Runner.ipa -t ios -u ${{ secrets.APPLE_ID }} -p ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
ধাপে ধাপে ব্যাখ্যা:
on:
pushএবংpull_requestইভেন্ট কনফিগার করা হয়েছে, যা নির্দেশ করে যখনইmainব্রাঞ্চে কমিট বা পুল রিকোয়েস্ট হবে, CI প্রক্রিয়া চালু হবে।
jobs:
buildনামের একটি কাজ তৈরি করা হয়েছে, যাubuntu-latestভার্চুয়াল মেশিনে চলবে।
steps:
- Checkout code: রিপোজিটরির কোড ক্লোন করা।
- Install Flutter: Flutter এর
stableভার্সন ইনস্টল করা। - Install dependencies:
flutter pub getকমান্ড চালিয়ে ডিপেন্ডেন্সি ইনস্টল করা। - Run tests:
flutter testকমান্ড দিয়ে Unit এবং Widget টেস্ট চালানো। - Build APK:
flutter build apk --releaseকমান্ড দিয়ে প্রোডাকশনের জন্য APK বিল্ড করা। - Upload APK Artifact: বিল্ড করা APK সংরক্ষণ করা যাতে পরবর্তী স্টেপে ডিপ্লয় করা যায়।
- Build iOS App: iOS বিল্ড (macOS runner ব্যবহার করে) তৈরি করা।
- Deploy iOS to TestFlight: TestFlight এ IPA ফাইল আপলোড করা।
ধাপ ৩: সিক্রেট কনফিগারেশন যোগ করা
- GitHub Secrets:
- iOS অ্যাপ TestFlight এ আপলোড করার জন্য, GitHub রিপোজিটরিতে
APPLE_IDএবংAPPLE_APP_SPECIFIC_PASSWORDযোগ করুন। - GitHub রিপোজিটরির Settings -> Secrets -> Actions এ গিয়ে নতুন সিক্রেট যোগ করুন।
- iOS অ্যাপ TestFlight এ আপলোড করার জন্য, GitHub রিপোজিটরিতে
ধাপ ৪: টেস্টিং কনফিগারেশন করা
Flutter এ Automated Testing চালানোর জন্য, আপনি Unit Test, Widget Test, এবং Integration Test কনফিগার করতে পারেন।
Unit Test উদাহরণ:
// math_functions.dart
int add(int a, int b) => a + b;
// math_functions_test.dart
import 'package:flutter_test/flutter_test.dart';
import 'package:your_app/math_functions.dart';
void main() {
test('add function returns the sum of two numbers', () {
expect(add(2, 3), 5);
});
}
Widget Test উদাহরণ:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:your_app/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}
ধাপ ৫: ডিপ্লয়মেন্ট কনফিগার করা
- Android অ্যাপ ডিপ্লয়: GitHub Actions বা অন্য CI/CD টুলস ব্যবহার করে Google Play Store এ APK ডিপ্লয় করার জন্য
fastlaneব্যবহার করতে পারেন। - iOS অ্যাপ ডিপ্লয়: TestFlight এ IPA আপলোড করতে
xcrunব্যবহার করা হয়েছে, যা GitHub Secrets এর সাহায্যে সাইনিং তথ্য দিয়ে কাজ করে।
Flutter অ্যাপে CI/CD ইমপ্লিমেন্ট করার সুবিধা
স্বয়ংক্রিয় টেস্টিং এবং ডিপ্লয়মেন্ট:
- CI প্রক্রিয়া স্বয়ংক্রিয়ভাবে টেস্ট চালায় এবং যদি সফল হয়, তাহলে CD প্রক্রিয়া স্বয়ংক্রিয়ভাবে অ্যাপ প্রোডাকশনে ডিপ্লয় করে।
কোড কোয়ালিটি উন্নত:
- Automated Testing নিশ্চিত করে যে কোডের প্রতিটি অংশ সঠিকভাবে কাজ করছে এবং বাগ ধরা সহজ করে।
দ্রুত রিলিজ সাইকেল:
- Automated Deployment দিয়ে দ্রুত নতুন আপডেট রিলিজ করা সম্ভব হয়, যা ব্যবহারকারীদের নতুন ফিচার দ্রুত পৌঁছে দেয়।
পরামর্শ এবং বেস্ট প্র্যাকটিস
সিক্রেট এবং সেনসিটিভ ডেটা সুরক্ষা:
- GitHub, GitLab, বা Bitbucket এর সিক্রেটস ফিচার ব্যবহার করে আপনার সাইনিং তথ্য এবং API কী সংরক্ষণ করুন।
টেস্ট কভারেজ বৃদ্ধি করা:
- আপনার অ্যাপে বেশি টেস্ট কভারেজ রাখুন, বিশেষ করে ক্রিটিক্যাল ফিচারগুলোতে Integration Test ব্যবহার করুন, যা অ্যাপের সমগ্র ফ্লো পরীক্ষা করে।
রান টাইম অপ্টিমাইজেশন:
- আপনার CI/CD কনফিগারেশন অপ্টিমাইজ করুন যাতে রান টাইম কম হয়। প্রয়োজনীয়তা অনুযায়ী Parallel Jobs ব্যবহার করে বিল্ড এবং টেস্টিং প্রসেস দ্রুত করা যায়।
সংক্ষেপে CI/CD প্রক্রিয়া
| ধাপ | বিবরণ |
|---|---|
| কোড রিপোজিটরি প্রস্তুত | GitHub, GitLab, বা Bitbucket এ কোড হোস্ট করা। |
| YAML কনফিগারেশন | CI/CD কনফিগারেশন YAML ফাইল তৈরি করা। |
| সিক্রেট যোগ করা | GitHub Secrets ব্যবহার করে সেনসিটিভ তথ্য সংরক্ষণ। |
| Automated টেস্টিং | Unit, Widget, এবং Integration Test কনফিগার করা। |
| Deployment Setup | APK বা IPA ফাইল স্বয়ংক্রিয়ভাবে ডিপ্লয় করা। |
এই প্রক্রিয়া ব্যবহার করে Flutter অ্যাপে CI/CD সেটআপ করলে আপনি দ্রুত, কার্যকরী, এবং নির্ভরযোগ্য ডেভেলপমেন্ট চক্র ইমপ্লিমেন্ট করতে সক্ষম হবেন, যা অ্যাপের কোয়ালিটি এবং ডেলিভারি টাইম উন্নত করবে।
Read more