Flutter.dev: Pengiriman berkelanjutan dengan Flutter

Terjemahan artikel disiapkan pada malam awal kursus Pengembang Seluler Flutter .










Ikuti praktik terbaik pengiriman berkelanjutan (CD) dengan Flutter untuk memastikan bahwa aplikasi Anda dikirimkan ke penguji beta dan diuji secara teratur tanpa perlu manipulasi manual.



jalur cepat



Tutorial ini menunjukkan cara mengintegrasikan fastlane (toolkit open source) ke dalam alur kerja pengujian dan integrasi berkelanjutan (CI) yang ada seperti Travis atau Cirrus.



Pengaturan lokal Sangat



disarankan untuk menguji proses pembangunan dan penerapan secara lokal sebelum pindah ke awan. Anda juga dapat menerapkan penerapan berkelanjutan dari mesin lokal Anda.



  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 .
    • Untuk iOS, ikuti panduan penerapan beta Fastlane iOS . Semua pengeditan bisa sesederhana menambahkan lane, yang memanggil build_ios_appdengan export_method: 'app-store'dan upload_to_testflight. Di iOS, build tambahan akan diperlukan, karena itu flutter buildmembuat .app, bukan arsip .ipasuntuk rilis.


Anda sekarang siap untuk menerapkan secara lokal atau memigrasi penerapan Anda ke sistem integrasi berkelanjutan (CI).



Menerapkan Secara Lokal



  1. Bangun aplikasi Anda dalam mode rilis.

    • flutter build appbundle...
    • flutter build ios --release --no-codesign... Tidak perlu mendaftar sekarang, karena fastlane akan melakukan tanda tangan saat mengarsipkan.
  2. Jalankan skrip Fastfile di setiap platform.

    • cd android, lalu fastlane [ lane].
    • cd ios, lalu fastlane [ lane].




Mengonfigurasi Build dan Cloud Deployment



Pertama, ikuti petunjuk di bagian penyiapan lokal yang dijelaskan di bagian Penyiapan lokal untuk memastikan proses tersebut bekerja dengan benar sebelum pindah ke sistem cloud seperti Travis.



Hal utama yang perlu diperhatikan adalah karena instance cloud bersifat sementara dan tidak dapat diandalkan, Anda tidak boleh meninggalkan kredensial Anda, seperti JSON dari akun layanan Play Store atau sertifikat distribusi iTunes, di server.



Sistem Continuous Integration (CI) seperti Cirrus biasanya mendukung variabel lingkungan terenkripsi untuk menyimpan data pribadi.



Lakukan semua tindakan pencegahan untuk tidak mencetak nilai variabel ini ke konsol dalam skrip pengujian Anda. Variabel ini juga tidak boleh tersedia dalam permintaan penarikan sampai mereka digabungkan sehingga penyerang tidak dapat membuat permintaan penarikan yang akan mencuri rahasia ini. Berhati-hatilah saat berinteraksi dengan rahasia ini dalam permintaan tarik yang Anda terima dan gabungkan.



  1. Jadikan kredensial singkat.

    • Di Android:



      • Hapus kolom json_key_filedari Appfiledan simpan konten string JSON dalam variabel terenkripsi di sistem CI Anda. Gunakan argumen json_key_datain upload_to_play_storeuntuk membaca variabel lingkungan langsung ke Anda 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