Flutter.dev: التسليم المستمر مع Flutter

تم إعداد ترجمة المقال عشية بدء دورة Flutter Mobile Developer .










اتبع أفضل ممارسات التسليم المستمر (CD) مع Flutter لضمان تسليم تطبيقك إلى مختبري النسخة التجريبية واختباره بشكل منتظم دون الحاجة إلى معالجة يدوية.



الخط السريع



يوضح لك هذا البرنامج التعليمي كيفية دمج Fastlane ، مجموعة أدوات مفتوحة المصدر ، في مهام سير عمل الاختبار والتكامل المستمر (CI) الحالية مثل Travis أو Cirrus.



الإعداد المحلي



يوصى بشدة باختبار عملية الإنشاء والنشر محليًا قبل الانتقال إلى السحابة. يمكنك أيضًا تنفيذ النشر المستمر من جهازك المحلي.



  1. fastlane: gem install fastlane brew install fastlane. Fastlane.
  2. Flutter , , ,

    • flutter build appbundle;
    • flutter build ios --release --no-codesign.
  3. Fastlane .

    • fastlane init [project]/android.
    • fastlane init [project]/ios.
  4. , Appfile .

    • , package_name [project]/android/fastlane/Appfile AndroidManifest.xml.
    • , [project]/ios/fastlane/Appfile Info.plist. apple_id, itc_team_id, team_id .
  5. .

    • Supply , fastlane supply init Play Store . .json - .
    • ITunes Connect Appfile apple_id. FASTLANE_PASSWORD iTunes Connect. iTunes/TestFlight.
  6. .

    • Android : . .apk, « ». « » .aab/.apk, Play Store, Play Store.

      • , . . Play Store.
      • .
      • gradle release, android.buildTypes.release [project]/android/app/build.gradle.
    • iOS, TestFlight App Store, , .



  7. Fastfile .



    • Android - Fastlane Android. lane, upload_to_play_store. aab ../build/app/outputs/bundle/release/app-release.aab, , flutter build .
    • بالنسبة لنظام التشغيل iOS ، اتبع دليل نشر Fastlane iOS beta . يمكن أن تكون جميع عمليات التحرير بسيطة مثل الإضافة lane، والتي تستدعي build_ios_appمع export_method: 'app-store'و upload_to_testflight. على نظام iOS ، ستكون هناك حاجة إلى بنية إضافية ، لأنها flutter buildتخلق .appبدلاً من أرشيفات .ipasللإصدار.


أنت الآن جاهز للنشر محليًا أو ترحيل النشر الخاص بك إلى نظام تكامل مستمر (CI).



الانتشار محليا



  1. بناء التطبيق الخاص بك في وضع الإصدار.

    • flutter build appbundle...
    • flutter build ios --release --no-codesign... ليست هناك حاجة للتوقيع في الوقت الحالي ، لأن الخط السريع سيقوم بالتوقيع عند الأرشفة.
  2. قم بتشغيل البرنامج النصي Fastfile على كل نظام أساسي.

    • cd android، إذن fastlane [ lane].
    • cd ios، إذن fastlane [ lane].




تكوين البناء ونشر السحابة



أولاً ، اتبع التعليمات الواردة في قسم الإعداد المحلي الموضحة في قسم الإعداد المحلي للتأكد من أن العملية تعمل بشكل صحيح قبل الانتقال إلى نظام سحابي مثل Travis.



الشيء الرئيسي الذي يجب ملاحظته هو أنه نظرًا لأن المثيلات السحابية سريعة الزوال وغير موثوقة ، فلا يجب عليك ترك بيانات الاعتماد الخاصة بك ، مثل JSON لحساب خدمة متجر Play أو شهادة توزيع iTunes ، على الخادم. عادةً ما تدعم



أنظمة التكامل المستمر (CI) مثل Cirrus متغيرات البيئة المشفرة لتخزين البيانات الخاصة.



اتخذ جميع الاحتياطات لعدم طباعة قيم هذه المتغيرات إلى وحدة التحكم في البرامج النصية للاختبار. يجب ألا تكون هذه المتغيرات متاحة أيضًا في طلبات السحب حتى يتم دمجها حتى لا يتمكن المهاجمون من إنشاء طلب سحب يسرق هذه الأسرار. كن حذرًا عند التفاعل مع هذه الأسرار في طلبات السحب التي تقبلها وتدمجها.



  1. اجعل أوراق الاعتماد سريعة الزوال.

    • على Android:



      • قم بإزالة الحقل json_key_fileمن Appfileوتخزين محتوى سلسلة JSON في متغير مشفر على نظام CI الخاص بك. استخدام الوسيطة json_key_dataفي upload_to_play_storeقراءة متغير البيئة مباشرة إلى حسابك Fastfile.
      • (, base64) . CI
      • echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > /home/cirrus/[directory #   ,    gradle].keystore
    • iOS:



      • FASTLANE_PASSWORD CI.
      • CI . Fastlane Match .
  2. Gemfile gem install fastlane CI, fastlane . .



    • [project]/android [project]/ios Gemfile, :
    • source "https://rubygems.org"
      	 gem "fastlane"
    • bundle update Gemfile. Gemfile.lock .
    • bundle exec fastlane fastlane.
  3. CI, .travis.yml .cirrus.yml, .



    • Linux macOS.
    • Xcode macOS (, osx_image: xcode9.2).
    • . Fastlane CI CI.
    • , , , :



      • Bundler gem install bundler.
      • Android , Android SDK ANDROID_SDK_ROOT.
      • bundle install [project]/android [project]/ios.
      • , Flutter SDK PATH.
    • CI:



      • flutter build appbundle flutter build ios --release --no-codesign, .
      • cd android cd ios
      • bundle exec fastlane [ lane]






      . Cirrus Flutter.





      , .








All Articles