Bagikan melalui


Merilis pembaruan CodePush menggunakan App Center CLI

Penting

Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang dapat Anda pertimbangkan untuk bermigrasi.

Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.

Penginstalan

  • Instal Node.js
  • Instal CLI App Center: npm install -g appcenter-cli

Memulai

  1. Buat akun App Center atau masuk melalui CLI menggunakan appcenter login perintah .
  2. Daftarkan aplikasi Anda dengan CodePush, dan secara opsional bagikan aplikasi Anda dengan pengembang lain di tim Anda.
  3. CodePush-ify aplikasi Anda dan arahkan ke penyebaran yang ingin Anda gunakan (Apache Cordova dan React Native).
  4. Rilis dan perbarui untuk aplikasi Anda.

Manajemen Akun

Sebelum Anda dapat mulai merilis pembaruan aplikasi, masuk dengan akun CodePush yang sudah ada atau buat akun App Center baru. Anda dapat melakukan ini dengan menjalankan perintah berikut setelah menginstal CLI:

appcenter login

Perintah ini akan meluncurkan browser, meminta Anda untuk mengautentikasi dengan akun GitHub atau Microsoft Anda. Setelah diautentikasi, ini akan membuat akun CodePush "ditautkan" ke identitas GitHub/MSA Anda, dan menghasilkan kunci akses yang dapat Anda salin/tempel ke CLI untuk masuk.

Catatan

Setelah mendaftar, Anda secara otomatis masuk dengan CLI, jadi sampai Anda secara eksplisit keluar, Anda tidak perlu masuk lagi dari komputer yang sama.

Autentikasi

Sebagian besar perintah dalam App Center CLI memerlukan autentikasi, jadi sebelum Anda dapat mulai mengelola akun Anda, masuk menggunakan akun GitHub atau Microsoft yang Anda gunakan saat mendaftar. Anda dapat melakukan ini dengan menjalankan perintah berikut:

appcenter login

Perintah ini akan meluncurkan jendela browser yang meminta Anda untuk mengautentikasi dengan akun GitHub atau Microsoft Anda. Ini akan menghasilkan kunci akses untuk menyalin-tempel ke CLI (akan meminta Anda untuk itu). Anda sekarang berhasil diautentikasi dan dapat dengan aman menutup jendela browser Anda.

Kapan saja Anda ingin memeriksa apakah Anda sudah masuk, Anda bisa menjalankan perintah berikut untuk menampilkan alamat email untuk sesi autentikasi Anda saat ini, nama pengguna, dan nama tampilan Anda:

appcenter profile list

Saat Anda masuk dari CLI, kunci akses Anda tetap berada di disk selama durasi sesi sehingga Anda tidak perlu masuk setiap kali Anda mencoba mengakses akun Anda. Untuk mengakhiri sesi Anda dan menghapus kunci akses ini, jalankan perintah berikut:

appcenter logout

Jika Anda lupa untuk keluar dari mesin, Anda tidak ingin meninggalkan sesi yang sedang berjalan (misalnya, laptop teman Anda), Anda dapat menggunakan perintah berikut untuk mencantumkan dan menghapus sesi masuk saat ini.

appcenter tokens list
appcenter tokens delete <machineName>

Token Akses

Untuk mengautentikasi terhadap layanan CodePush tanpa meluncurkan browser atau tanpa perlu menggunakan kredensial GitHub atau Microsoft Anda (misalnya, di lingkungan CI), Anda dapat menjalankan perintah berikut untuk membuat "token akses" (bersama dengan nama yang menjelaskan tujuannya):

appcenter tokens create -d "Azure DevOps Integration"

Kunci hanya akan ditampilkan sekali, jadi ingatlah untuk menyimpannya di suatu tempat jika diperlukan! Setelah membuat kunci baru, Anda dapat menentukan nilainya menggunakan --token bendera login perintah, yang memungkinkan Anda menggunakan autentikasi "headless", dibandingkan dengan meluncurkan browser.

appcenter login --token <accessToken>

Saat masuk menggunakan metode ini, token akses tidak akan secara otomatis membatalkan saat keluar, dan dapat digunakan dalam sesi mendatang hingga dihapus secara eksplisit dari server App Center. Namun, Anda harus keluar setelah sesi selesai, untuk menghapus kredensial Anda dari disk.

Manajemen Aplikasi

Sebelum menyebarkan pembaruan, buat aplikasi dengan App Center menggunakan perintah berikut:

appcenter apps create -d <appDisplayName> -o <operatingSystem>  -p <platform> 

Jika aplikasi Anda menargetkan Android dan iOS, sebaiknya buat aplikasi terpisah dengan CodePush. Satu untuk setiap platform. Dengan cara ini, Anda dapat mengelola dan merilis pembaruan secara terpisah, yang dalam jangka panjang, cenderung membuat semuanya lebih sederhana. Sebagian besar orang mencukupkan nama aplikasi dengan -Android dan -iOS. misalnya:

appcenter apps create -d MyApp-Android -o Android -p React-Native
appcenter apps create -d MyApp-iOS -o iOS -p Cordova

Catatan

Menggunakan aplikasi yang sama untuk Android dan iOS dapat menyebabkan pengecualian penginstalan karena paket pembaruan CodePush yang diproduksi untuk iOS akan memiliki konten yang berbeda dari pembaruan yang dihasilkan untuk Android.

Tip

Salah satu fungsionalitas baru yang penting di App Center CLI adalah kemampuan untuk mengatur aplikasi sebagai aplikasi saat ini menggunakan appcenter apps set-current <ownerName>/<appName>. Dengan mengatur aplikasi sebagai aplikasi saat ini, Anda tidak perlu menggunakan -a bendera di perintah CLI lainnya. Misalnya, perintah appcenter codepush deployment list -a <ownerName>/<appName> dapat disingkat menjadi appcenter codepush deployment list saat aplikasi saat ini diatur. Anda dapat memeriksa aplikasi mana yang ditetapkan sebagai aplikasi akun Anda saat ini menggunakan appcenter apps get-current. Mengatur aplikasi saat ini membuat mengetik sebagian besar perintah CLI lebih pendek.

Dengan CodePush asli, aplikasi secara otomatis memiliki dua penyebaran (Staging dan Production). Di App Center, Anda harus membuatnya sendiri menggunakan perintah berikut:

appcenter codepush deployment add -a <ownerName>/<appName> Staging
appcenter codepush deployment add -a <ownerName>/<appName> Production

Setelah membuat penyebaran, Anda dapat mengakses kunci penyebaran untuk kedua penyebaran menggunakan appcenter codepush deployment list --displayKeys, yang dapat Anda mulai gunakan untuk mengonfigurasi klien seluler Anda melalui SDK masing-masing (detail untuk Cordova dan React Native).

Jika Anda memutuskan bahwa Anda tidak menyukai nama yang Anda berikan ke aplikasi, Anda dapat mengganti namanya kapan saja menggunakan perintah berikut:

appcenter apps update -n <newName> -a <ownerName>/<appName>

Peringatan

Mengubah nama aplikasi dapat menghasilkan beberapa masalah tak terduga pada konfigurasi cabang dan build selama sekitar 48 jam.

Jika pada titik tertentu Anda tidak lagi memerlukan aplikasi, Anda dapat menghapusnya dari server menggunakan perintah berikut:

appcenter apps delete -a <ownerName>/<appName>

Berhati-hatilah saat menjalankan perintah ini karena aplikasi apa pun yang telah dikonfigurasi untuk menggunakannya akan berhenti menerima pembaruan.

Terakhir, jika Anda ingin mencantumkan semua aplikasi yang telah Anda daftarkan di server App Center, jalankan perintah berikut:

appcenter apps list

Kolaborasi Aplikasi

Jika Anda akan bekerja dengan pengembang lain di aplikasi CodePush yang sama, Anda dapat menambahkannya sebagai kolaborator menggunakan portal App Center dengan mengikuti serangkaian instruksi di bawah ini:

  1. Di portal App Center, pilih aplikasi yang ingin Anda tambahkan kolaboratornya
  2. Di area navigasi di sisi kiri halaman, klik Pengaturan
  3. Klik tautan Kolaborator
  4. Dalam menu kolaborator, masukkan alamat email kolaborator untuk mengundang mereka.

Penting

Fitur Kolaborator App Center mengharapkan bahwa setiap kolaborator telah terdaftar di App Center menggunakan alamat email yang ditentukan.

Setelah ditambahkan, semua kolaborator akan segera memiliki izin berikut di aplikasi bersama:

  1. Melihat aplikasi, kolaborator, penyebaran, dan riwayat rilisnya
  2. Merilis pembaruan untuk salah satu penyebaran aplikasi
  3. Mempromosikan pembaruan antara salah satu penyebaran aplikasi
  4. Gulung balik penyebaran aplikasi apa pun
  5. Patch rilis apa pun dalam salah satu penyebaran aplikasi

Kolaborator tidak dapat melakukan salah satu tindakan berikut:

  1. Mengganti nama atau menghapus aplikasi
  2. Membuat, mengganti nama, atau menghapus penyebaran baru dalam aplikasi
  3. Menghapus riwayat rilis penyebaran
  4. Menambahkan atau menghapus kolaborator dari aplikasi (*)

Catatan

Pengembang dapat menghapus dirinya sebagai kolaborator dari aplikasi yang dibagikan dengan mereka.

Seiring waktu, jika seseorang tidak lagi mengerjakan aplikasi dengan Anda, Anda juga dapat menghapusnya sebagai kolaborator menggunakan menu kolaborator ini di portal.

Kapan saja Anda ingin mencantumkan semua kolaborator yang telah ditambahkan ke aplikasi, Anda dapat mengunjungi menu kolaborator di portal.

Manajemen Penyebaran

Dari perspektif CodePush, aplikasi adalah pengelompokan bernama untuk satu atau beberapa "penyebaran". Meskipun aplikasi mewakili "namespace" konseptual atau "cakupan" untuk versi aplikasi khusus platform (misalnya, port iOS aplikasi Foo), penyebarannya mewakili target aktual untuk merilis pembaruan (untuk pengembang) dan menyinkronkan pembaruan (untuk pengguna akhir). Penyebaran memungkinkan Anda memiliki beberapa "lingkungan" untuk setiap aplikasi dalam penerbangan pada waktu tertentu, dan membantu memodelkan realitas bahwa aplikasi biasanya berpindah dari lingkungan pribadi pengembang ke lingkungan pengujian/QA/penahapan, sebelum akhirnya masuk ke produksi.

Catatan

Seperti yang akan Anda lihat di bawah ini, releaseperintah , promote dan rollback mengharuskan nama aplikasi dan nama penyebaran berfungsi, karena ini adalah kombinasi dari keduanya yang secara unik mengidentifikasi titik distribusi (misalnya, saya ingin merilis pembaruan aplikasi iOS saya ke penguji beta saya).

Setiap kali aplikasi terdaftar dengan layanan CodePush, kami sarankan Anda membuat penyebaran berikut: Staging dan Production. Ini memungkinkan Anda untuk mulai merilis pembaruan ke lingkungan internal, di mana Anda dapat menguji setiap pembaruan secara menyeluruh sebelum mendorongnya ke pengguna akhir Anda. Alur kerja ini sangat penting untuk memastikan rilis Anda siap untuk dikonsumsi massal, dan merupakan praktik yang telah ditetapkan di web untuk waktu yang lama.

Jika memiliki versi penahapan dan produksi aplikasi Anda sudah cukup untuk memenuhi kebutuhan Anda, maka Anda tidak perlu melakukan hal lain. Namun, jika Anda menginginkan penyebaran alfa, dev, dll. , Anda dapat dengan mudah membuatnya menggunakan perintah berikut:

appcenter codepush deployment add -a <ownerName>/<appName> <deploymentName>

Seperti halnya aplikasi, Anda juga dapat menghapus dan mengganti nama penyebaran, menggunakan perintah berikut:

appcenter codepush deployment remove -a <ownerName>/<appName> <deploymentName>
appcenter codepush deployment rename -a <ownerName>/<appName> <deploymentName> <newDeploymentName>

Kapan saja Anda ingin melihat daftar penyebaran yang disertakan aplikasi tertentu, Anda dapat menjalankan perintah berikut:

appcenter codepush deployment list -a <ownerName>/<appName>

Metrik penginstalan memiliki arti berikut:

  • Aktif - Jumlah penginstalan yang berhasil yang saat ini menjalankan rilis ini (jika pengguna membuka aplikasi Anda, mereka akan melihat/menjalankan versi ini). Nomor ini akan berubah saat pengguna akhir meningkatkan ke dan menjauh dari rilis ini. Metrik ini menunjukkan total pengguna aktif, serta persentase keseluruhan audiens Anda yang diwakili. Ini memudahkan untuk menentukan distribusi pembaruan yang saat ini dijalankan pengguna Anda, serta menjawab pertanyaan seperti "Berapa banyak pengguna saya yang telah menerima pembaruan terbaru saya?".

  • Total - Jumlah total penginstalan yang berhasil yang diterima pembaruan ini secara keseluruhan. Jumlah ini hanya pernah meningkat saat pengguna/perangkat baru menginstalnya, sehingga selalu merupakan superset dari total jumlah aktif. Pembaruan dianggap berhasil setelah notifyApplicationReady (atau sync) dipanggil setelah diinstal. Di antara saat pembaruan diunduh, dan ditandai sebagai berhasil, pembaruan akan dilaporkan sebagai pembaruan "tertunda" (lihat di bawah ini untuk detailnya).

  • Tertunda - Frekuensi rilis ini diunduh, tetapi belum diinstal (aplikasi dimulai ulang untuk menerapkan perubahan). Jadi, metrik ini meningkat saat pembaruan diunduh, dan menurun saat pembaruan yang diunduh terkait diinstal. Metrik ini terutama berlaku untuk pembaruan yang tidak dikonfigurasi untuk segera diinstal, dan membantu memberikan gambaran yang lebih luas tentang adopsi rilis untuk aplikasi yang mengandalkan resume atau restart aplikasi untuk menerapkan pembaruan (misalnya, saya ingin mengembalikan pembaruan dan saya ingin tahu apakah ada yang telah mengunduhnya). Jika Anda telah mengonfigurasi pembaruan untuk segera diinstal, dan masih melihat pembaruan tertunda yang dilaporkan, kemungkinan Anda tidak memanggil notifyApplicationReady (atau sync) pada awal aplikasi, yang merupakan metode yang mulai mengirim laporan penginstalan dan menandai pembaruan yang diinstal karena dianggap berhasil.

  • Pembatalan - Frekuensi rilis ini secara otomatis digulung balik pada klien. Idealnya angka ini harus nol, dan dalam hal ini, metrik ini bahkan tidak ditampilkan. Namun, jika Anda merilis pembaruan yang menyertakan crash sebagai bagian dari proses penginstalan, plugin CodePush akan mengembalikan pengguna akhir ke rilis sebelumnya, dan melaporkan masalah itu kembali ke server. Ini memungkinkan pengguna akhir Anda untuk tetap tidak diblokir jika rilis rusak, dan dengan melihat telemetri ini di CLI, Anda dapat mengidentifikasi rilis yang salah dan meresponsnya dengan menggulungnya kembali di server.

  • Peluncuran - Menunjukkan persentase pengguna yang memenuhi syarat untuk menerima pembaruan ini. Properti ini hanya akan ditampilkan untuk rilis yang mewakili peluncuran "aktif", sehingga, memiliki persentase peluncuran yang kurang dari 100%. Selain itu, karena penyebaran hanya dapat memiliki satu peluncuran aktif pada waktu tertentu, label ini hanya akan ada pada rilis terbaru dalam penyebaran.

  • Dinonaktifkan - Menunjukkan apakah rilis telah ditandai sebagai dinonaktifkan atau tidak, sehingga, dapat diunduh oleh pengguna akhir. Properti ini hanya akan ditampilkan untuk rilis yang dinonaktifkan.

Ketika sel metrik melaporkan No installs recorded, yang menunjukkan bahwa server belum melihat aktivitas apa pun untuk rilis ini. Ini bisa jadi karena sudah mencakup versi plugin yang menyertakan dukungan telemetri, atau belum ada pengguna akhir yang telah disinkronkan dengan server CodePush. Segera setelah penginstalan terjadi, Anda akan mulai melihat metrik yang terisi di CLI untuk rilis.

Melepaskan Updates

Setelah aplikasi Anda dikonfigurasi untuk mengkueri pembaruan terhadap server App Center, Anda dapat mulai merilis pembaruan untuknya. Untuk memberikan kesederhanaan dan fleksibilitas, App Center CLI menyertakan tiga perintah berbeda untuk merilis pembaruan:

  1. Umum - Merilis pembaruan ke server App Center yang dihasilkan oleh alat eksternal atau skrip build (misalnya, tugas Gulp, react-native bundle perintah ). Ini memberikan fleksibilitas terbanyak dalam hal penyesuaian dengan alur kerja yang ada, karena secara ketat berkaitan dengan langkah khusus CodePush, dan meninggalkan proses kompilasi khusus aplikasi kepada Anda.

  2. React Native - Menggunakan fungsionalitas yang sama dengan perintah rilis umum, tetapi juga menangani tugas menghasilkan konten aplikasi yang diperbarui untuk Anda (bundel JS dan aset), alih-alih mengharuskan Anda menjalankan keduanya react-native bundle lalu appcenter codepush release.

  3. Cordova - Menggunakan fungsionalitas yang sama dengan perintah rilis umum, tetapi juga menangani tugas menyiapkan pembaruan aplikasi untuk Anda, alih-alih mengharuskan Anda menjalankan keduanya cordova prepare (atau phonegap prepare) lalu appcenter codepush release.

Perintah mana yang harus Anda gunakan sebagian besar adalah masalah persyaratan atau preferensi. Namun, sebaiknya gunakan perintah khusus platform yang relevan untuk memulai (karena sangat menyederhanakan pengalaman), lalu gunakan perintah tujuan release umum jika/ketika kontrol yang lebih besar diperlukan.

Catatan

Hanya 50 rilis terbaru dalam penyebaran yang dapat ditemukan dan diunduh oleh klien.

Melepaskan Updates (Umum)

appcenter codepush release -a <ownerName>/<appName> -c <updateContentsPath> -t <targetBinaryVersion> -d <deploymentName>

[-t|--target-binary-version <version>]
[-с|--update-contents-path <updateContentsPath>]
[-r|--rollout <rolloutPercentage>]
[--disable-duplicate-release-error]
[-k|--private-key-path <privateKeyPath>]
[-m|--mandatory]
[-x|--disabled]
[--description <description>]
[-d|--deployment-name <deploymentName>]
[-a|--app <ownerName>/<appName>]
[--disable-telemetry]
[-v|--version]

Parameter nama aplikasi

Parameter ini menentukan nama aplikasi App Center tempat pembaruan ini dirilis. Jika ingin mencarinya, Anda dapat menjalankan appcenter apps list perintah untuk melihat daftar aplikasi Anda.

Memperbarui parameter konten

Parameter ini menentukan lokasi kode aplikasi dan aset yang diperbarui yang ingin Anda rilis. Anda dapat menyediakan satu file (misalnya, bundel JS untuk aplikasi React Native), atau jalur ke direktori (misalnya, /platforms/ios/www folder untuk aplikasi Cordova). Anda tidak perlu ZIP beberapa file atau direktori untuk menyebarkan perubahan tersebut, karena CLI akan secara otomatis melakukan ZIP untuk Anda.

Penting bahwa jalur yang Anda tentukan mengacu pada versi aplikasi Anda yang spesifik dan disiapkan/dibundel platform. Tabel berikut menguraikan perintah mana yang harus Anda jalankan sebelum merilis, serta lokasi yang nantinya dapat Anda lihat menggunakan updateContentsPath parameter :

Platform Siapkan perintah Jalur paket (relatif terhadap akar proyek)
Cordova (Android) cordova prepare android ./platforms/android/assets/www Direktori
Cordova (iOS) cordova prepare ios ./platforms/ios/www Direktori
React Native wo/assets (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <bundleOutput> --dev false --bundle-output Nilai opsi.
React Native dengan aset (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false --assets-dest Nilai opsi, yang harus mewakili direktori yang baru dibuat yang menyertakan aset aplikasi dan bundel JS
React Native wo/aset (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <bundleOutput> --dev false --bundle-output Nilai opsi
React Native dengan aset (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false --assets-dest Nilai opsi, yang harus mewakili direktori yang baru dibuat yang menyertakan aset aplikasi dan bundel JS

Parameter versi biner target

Parameter ini menentukan versi penyimpanan/biner aplikasi yang Anda rilis pembaruannya, sehingga hanya pengguna yang menjalankan versi tersebut yang akan menerima pembaruan, sementara pengguna yang menjalankan versi biner aplikasi yang lebih lama atau lebih baru tidak akan. Ini berguna karena alasan berikut:

  1. Jika pengguna menjalankan versi biner yang lebih lama, ada kemungkinan bahwa ada perubahan yang melanggar dalam pembaruan CodePush yang tidak akan kompatibel dengan apa yang mereka jalankan.

  2. Jika pengguna menjalankan versi biner yang lebih baru, maka dianggap bahwa apa yang mereka jalankan lebih baru (dan berpotensi tidak kompatibel) dengan pembaruan CodePush.

Jika Anda ingin pembaruan menargetkan beberapa versi biner app store, kami juga memungkinkan Anda menentukan parameter sebagai ekspresi rentang semver. Dengan begitu, setiap perangkat klien yang menjalankan versi biner yang memenuhi ekspresi rentang (semver.satisfies(version, range) pengembalian true) akan mendapatkan pembaruan. Contoh ekspresi rentang semver yang valid adalah sebagai berikut:

Ekspresi Rentang Siapa yang mendapatkan pembaruan
1.2.3 Hanya perangkat yang menjalankan versi 1.2.3 biner tertentu dari aplikasi Anda
* Perangkat apa pun yang dikonfigurasi untuk menggunakan pembaruan dari aplikasi CodePush Anda
1.2.x Perangkat yang menjalankan versi utama 1, versi minor 2, dan versi patch apa pun dari aplikasi Anda
1.2.3 - 1.2.7 Perangkat yang menjalankan versi biner apa pun antara 1.2.3 (inklusif) dan 1.2.7 (inklusif)
>=1.2.3 <1.2.7 Perangkat yang menjalankan versi biner apa pun antara 1.2.3 (inklusif) dan 1.2.7 (eksklusif)
1.2 Setara dengan >=1.2.0 <1.3.0
~1.2.3 Setara dengan >=1.2.3 <1.3.0
^1.2.3 Setara dengan >=1.2.3 <2.0.0

Catatan

Jika ekspresi semver aplikasi dimulai dengan karakter atau operator shell khusus seperti >, , ^atau ** *, perintah mungkin tidak dijalankan dengan benar jika Anda tidak membungkus nilai dalam tanda kutip karena shell tidak akan menyediakan nilai yang tepat untuk proses CLI kami. Jadi, yang terbaik adalah membungkus parameter aplikasi targetBinaryVersion dalam tanda kutip ganda saat memanggil release perintah, misalnya, appcenter codepush release -a <ownerName>/<appName> updateContents ">1.2.3".

Tabel berikut menguraikan nilai versi yang codePush harapkan rentang semver pembaruan Anda terpenuhi untuk setiap jenis aplikasi masing-masing:

Platform Sumber versi biner
Cordova Atribut <widget version> dalam file config.xml
React Native (Android) Properti android.defaultConfig.versionName dalam file build.gradle proyek
React Native (iOS) Kunci CFBundleShortVersionString dalam file Info.plist
React Native (Windows) Kunci <Identity Version> dalam file Package.appxmanifest

Catatan

Jika versi biner dalam file metadata kehilangan versi patch, misalnya, 2.0, itu akan diperlakukan sebagai memiliki versi patch dari 0, yaitu, 2.0 -> 2.0.0.

Parameter nama penyebaran

Parameter ini menentukan penyebaran mana yang ingin Anda rilis pembaruannya. Ini default ke Staging, tetapi ketika Anda siap untuk menyebarkan ke Production, atau salah satu penyebaran kustom Anda sendiri, cukup atur argumen ini secara eksplisit.

Tip

Parameter dapat diatur menggunakan atau --deployment-name-d.

Parameter deskripsi

Parameter ini menyediakan "log perubahan" opsional untuk penyebaran. Nilai disandingkan dengan klien sehingga ketika pembaruan terdeteksi, aplikasi Anda dapat memilih untuk menampilkannya ke pengguna akhir (misalnya, melalui dialog "Apa yang baru?"). String ini menerima karakter kontrol seperti \n dan \t sehingga Anda dapat menyertakan pemformatan spasi kosong dalam deskripsi Anda untuk meningkatkan keterbacaan.

Tip

Parameter ini dapat diatur menggunakan --description.

Parameter yang dinonaktifkan

Parameter ini menentukan apakah pembaruan harus dapat diunduh oleh pengguna akhir atau tidak. Jika dibiarkan tidak ditentukan, pembaruan tidak akan dinonaktifkan. Sebagai gantinya, pengguna akan mengunduhnya saat aplikasi Anda memanggil sync. Parameter ini bisa berharga jika Anda ingin merilis pembaruan yang tidak segera tersedia, sampai Anda secara eksplisit menambalnya dan ingin pengguna akhir mengunduhnya (misalnya, posting blog pengumuman ditayangkan).

Tip

Parameter ini dapat diatur menggunakan atau --disabled-x.

Parameter wajib

Parameter ini menentukan apakah pembaruan harus dianggap wajib atau tidak (misalnya, ini termasuk perbaikan keamanan penting). Atribut ini disandingkan dengan klien, yang kemudian dapat memutuskan apakah dan bagaimana mereka ingin menegakkannya.

Catatan

Parameter ini adalah "bendera", sehingga ketidakhadirannya menunjukkan bahwa rilis bersifat opsional, dan kehadirannya menunjukkan bahwa itu wajib. Anda dapat memberikan nilai untuknya (misalnya, --mandatory true), namun, menentukan --mandatory cukup untuk menandai rilis sebagai wajib.

Atribut wajib unik karena server akan secara dinamis memodifikasinya seperlunya untuk memastikan bahwa semantik rilis aplikasi dipertahankan untuk pengguna akhir Anda. Misalnya, bayangkan Anda merilis tiga pembaruan berikut ke aplikasi Anda:

Rilis Wajib?
v1 Tidak
v2 Ya
v3 Tidak

Jika pengguna akhir saat ini menjalankan v1, dan mereka meminta server untuk pembaruan, itu akan merespons dengan v3 (karena itu yang terbaru), tetapi akan secara dinamis mengonversi rilis menjadi wajib, karena pembaruan wajib dirilis di antaranya. Perilaku ini penting karena kode yang terkandung di dalamnya v3 inkremental dengan yang disertakan dalam v2. Apa pun yang membuat v2 wajib terus membuat v3 wajib bagi siapa pun yang belum memperoleh v2.

Jika pengguna akhir saat ini menjalankan v2, dan mereka meminta server untuk pembaruan, itu akan merespons dengan v3, tetapi membiarkan rilis sebagai opsional. Ini karena mereka sudah menerima pembaruan wajib, sehingga, tidak perlu mengubah kebijakan v3. Perilaku inilah sebabnya kami mengatakan bahwa server akan "secara dinamis mengonversi" bendera wajib, karena sejauh rilis berjalan, atribut wajibnya akan selalu disimpan menggunakan nilai yang Anda tentukan saat merilisnya. Ini hanya berubah dengan cepat seperlunya saat menanggapi pemeriksaan pembaruan dari pengguna akhir.

Perilaku yang dijelaskan hanya berlaku untuk Anda jika Anda merilis pembaruan yang ditandai sebagai mandatory. Server hanya akan mengubah optional rilis menjadi mandatory jika ada pembaruan terinterming mandatory seperti yang diilustrasikan di atas.

Rilis yang ditandai sebagai mandatory tidak akan pernah dikonversi ke optional.

Tip

Parameter ini dapat diatur menggunakan atau --mandatory-m*

Tidak ada parameter kesalahan rilis duplikat

Parameter ini menentukan bahwa jika pembaruan identik dengan rilis terbaru pada penyebaran, CLI harus menghasilkan peringatan alih-alih kesalahan. Ini berguna untuk skenario integrasi berkelanjutan di mana diharapkan bahwa modifikasi kecil dapat memicu rilis di mana tidak ada kode produksi yang berubah.

Parameter peluncuran

Penting

Agar parameter ini berlaku, pengguna akhir Anda harus menjalankan versi 1.6.0-beta+ (untuk Cordova) atau 1.9.0-beta+ (untuk React Native) plugin CodePush. Jika Anda merilis pembaruan yang menentukan properti peluncuran, tidak ada pengguna akhir yang menjalankan versi cordova atau plugin React Native yang lebih lama yang memenuhi syarat untuk pembaruan. Hingga Anda mengadopsi versi plugin CodePush khusus platform yang diperlukan (seperti yang disebutkan sebelumnya), kami tidak menyarankan untuk menetapkan nilai peluncuran pada rilis aplikasi, karena tidak ada yang akhirnya menerimanya.

Parameter ini menentukan persentase pengguna (sebagai bilangan bulat antara 1 dan 100) yang seharusnya memenuhi syarat untuk menerima pembaruan ini. Ini dapat membantu jika Anda ingin "menaikkan" rilis baru dengan sebagian audiens aplikasi (misalnya, 25%), dan mendapatkan umpan balik, atau watch untuk pengecualian atau crash, sebelum membuatnya tersedia secara luas untuk semua orang. Jika parameter ini tidak diatur, parameter defaultnya adalah 100%. Anda hanya perlu mengaturnya untuk membatasi berapa banyak pengguna yang akan menerimanya.

Saat menggunakan kemampuan peluncuran, ada beberapa pertimbangan tambahan yang perlu diingat:

  1. Anda tidak dapat merilis pembaruan baru untuk penyebaran yang rilis terbarunya adalah peluncuran "aktif" (properti peluncurannya non-null). Peluncuran perlu "diselesaikan" (mengatur rollout properti ke 100) sebelum Anda dapat merilis pembaruan lebih lanjut untuk penyebaran.

  2. Jika Anda mengembalikan penyebaran yang rilis terbarunya adalah peluncuran "aktif", nilai peluncuran akan dihapus, secara efektif "menonaktifkan" perilaku peluncuran

  3. mandatory Tidak seperti bidang dan description , ketika Anda mempromosikan rilis dari satu penyebaran ke penyebaran lainnya, itu tidak akan menyebarkan rollout properti, dan sebagainya, jika Anda ingin rilis baru (dalam penyebaran target) memiliki nilai peluncuran, Anda harus secara eksplisit mengaturnya saat Anda memanggil promote perintah.

Tip

Parameter ini dapat diatur menggunakan atau --rollout-r*

Merilis Updates (React Native)

appcenter codepush release-react -a <ownerName>/<appName> -d <deploymentName> -t <targetBinaryVersion>
[-t|--target-binary-version <targetBinaryVersion>]
[-o|--output-dir]
[-s|--sourcemap-output]
[-c|--build-configuration-name <arg>]
[--plist-file-prefix]
[-p|--plist-file]
[-g|--gradle-file]
[-e|--entry-file]
[--development]
[-b|--bundle-name <bundleName>]
[-r|--rollout <rolloutPercentage>]
[--disable-duplicate-release-error]
[-k|--private-key-path <privateKeyPath>]
[-m|--mandatory]
[-x|--disabled]
[--description <description>]
[-d|--deployment-name <deploymentName>]
[-a|--app <ownerName>/<appName>]
[--disable-telemetry]
[-v|--version]

Perintah release-react adalah versi khusus React Native dari perintah "vanilla"release, yang mendukung semua parameter yang sama (misalnya, --mandatory, --description), namun menyederhanakan proses merilis pembaruan dengan melakukan tugas tambahan berikut:

  1. react-native bundle Menjalankan perintah untuk menghasilkan konten pembaruan (bundel JS dan aset) yang akan dirilis ke server CodePush. Ini menggunakan default yang masuk akal sebanyak mungkin (misalnya, membuat build non-dev, dengan asumsi file entri iOS diberi nama index.ios.js), tetapi juga mengekspos parameter yang relevan react-native bundle untuk mengaktifkan fleksibilitas (misalnya, --sourcemap-output).

  2. Menyimpulkan targetBinaryVersion rilis ini dengan menggunakan nama versi yang ditentukan dalam file Info.plist (untuk iOS) dan build.gradle (untuk Android).

Untuk mengilustrasikan perbedaan yang release-react dapat dibuat perintah, contoh berikut menunjukkan bagaimana Anda dapat membuat dan merilis pembaruan untuk aplikasi React Native menggunakan perintah "vanillarelease":

mkdir ./CodePush

react-native bundle --platform ios \
--entry-file index.ios.js \
--bundle-output ./CodePush/main.jsbundle \
--assets-dest ./CodePush \
--dev false

appcenter codepush release -a <ownerName>/MyApp-iOS -c ./CodePush -t 1.0.0

Mencapai perilaku yang setara dengan release-react perintah akan memerlukan perintah berikut, yang kurang rawan kesalahan:

appcenter codepush release-react -a <ownerName>/MyApp-iOS

Parameter nama aplikasi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter nama penyebaran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter deskripsi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter wajib

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Tidak ada parameter kesalahan rilis duplikat

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter peluncuran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas. Jika dibiarkan tidak ditentukan, rilis akan tersedia untuk semua pengguna.

Parameter versi biner target

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas. Jika tidak ditentukan, defaultnya adalah menargetkan versi yang tepat yang ditentukan dalam file Info.plist (untuk iOS) dan build.gradle (untuk Android) aplikasi.

Parameter nama bundel

Parameter ini menentukan nama file yang harus digunakan untuk bundel JS yang dihasilkan. Jika dibiarkan tidak ditentukan, nama bundel standar akan digunakan untuk platform yang ditentukan: main.jsbundle (iOS), index.android.bundle (Android), dan index.windows.bundle (Windows).

Tip

Parameter ini dapat diatur menggunakan atau --bundle-name-b*

Parameter pengembangan

Parameter ini menentukan apakah akan menghasilkan bundel JS pengembangan yang tidak diminifikasi. Jika dibiarkan tidak ditentukan, defaultnya adalah false tempat peringatan dinonaktifkan dan bundel dikurangi.

Tip

Parameter ini dapat diatur menggunakan --development*

Parameter yang dinonaktifkan

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter file entri

Parameter ini menentukan jalur relatif ke file JavaScript root/entry aplikasi. Jika dibiarkan tidak ditentukan, defaultnya adalah index.ios.js (untuk iOS), index.android.js (untuk Android), atau index.windows.bundle (untuk Windows) jika file tersebut ada, atau index.js sebaliknya.

Tip

Parameter ini dapat diatur menggunakan atau --entry-file-e*

Parameter file Gradle (khusus Android)

Parameter ini menentukan jalur relatif ke file build.gradle yang harus digunakan CLI saat mencoba mendeteksi otomatis versi biner target untuk rilis. Parameter ini hanya dimaksudkan untuk skenario tingkat lanjut, karena CLI dapat secara otomatis menemukan file build.gradle proyek dalam proyek React Native "standar". Namun, jika file gradle proyek terletak di lokasi arbitrer, CLI tidak dapat menemukan, maka menggunakan parameter ini memungkinkan Anda untuk terus merilis pembaruan CodePush, tanpa perlu mengatur --target-binary-version parameter secara eksplisit. Karena build.gradle adalah nama file yang diperlukan, menentukan jalur ke folder yang berisi atau jalur lengkap ke file itu sendiri akan mencapai efek yang sama.

appcenter codepush release-react -a <ownerName>/MyApp-Android  -g "./foo/bar/"
appcenter codepush release-react -a <ownerName>/MyApp-Android  -g "./foo/bar/build.gradle"

Tip

Parameter ini dapat diatur menggunakan atau --gradle-file-g*

Parameter file Plist (hanya iOS)

Parameter ini menentukan jalur relatif ke file Info.plist yang harus digunakan CLI saat mencoba mendeteksi otomatis versi biner target untuk rilis. Parameter ini hanya dimaksudkan untuk skenario tingkat lanjut, karena CLI dapat secara otomatis menemukan file Info.plist proyek dalam proyek React Native "standar", dan Anda dapat menggunakan --plistFilePrefix parameter untuk mendukung file plist per lingkungan (misalnya, STAGING-Info.plist). Namun, jika plist proyek terletak di lokasi arbitrer, bahwa CLI tidak dapat menemukan, maka menggunakan parameter ini memungkinkan Anda untuk terus merilis pembaruan CodePush, tanpa perlu mengatur --target-binary-version parameter secara eksplisit.

appcenter codepush release-react -a <ownerName>/MyApp-iOS -p "./foo/bar/MyFile.plist"

Tip

Parameter ini dapat diatur menggunakan atau --plist-file-p*

Parameter awalan file Plist (hanya iOS)

Parameter ini menentukan awalan nama file dari file Info.plist yang harus digunakan CLI saat mencoba untuk secara otomatis mendeteksi versi biner target untuk rilis. Ini dapat berguna jika Anda telah membuat file plist per lingkungan (misalnya, DEV-Info.plist, STAGING-Info.plist), dan Anda ingin merilis pembaruan CodePush tanpa perlu mengatur --target-binary-version parameter secara eksplisit. Dengan menentukan --plist-file-prefix, CLI akan mencari file bernama <prefix>-Info.plist, bukan Info.plist (yang merupakan perilaku default), di lokasi berikut: ./ios dan ./ios/<appName>. Jika file plist proyek tidak terletak di salah satu direktori tersebut (misalnya, aplikasi Anda adalah aplikasi iOS asli dengan tampilan RN yang disematkan), atau menggunakan konvensi penamaan file yang sama sekali berbeda, maka pertimbangkan untuk menggunakan --plist-file parameter .

# Autodetect the target binary version of this release by looking up the
# app version within the STAGING-Info.plist file in either the ./ios or ./ios/<APP> directories.
appcenter codepush release-react -a <ownerName>/MyApp-iOS  --plist-file-prefix "STAGING"

# Tell the CLI to use your dev plist (`DEV-Info.plist`).
# The hyphen separator can be explicitly stated.
appcenter codepush release-react -a <ownerName>/MyApp-iOS --plist-file-prefix "DEV-"

Parameter output peta sumber

Parameter ini menentukan jalur relatif ke tempat file peta sumber bundel JS yang dihasilkan harus ditulis. Jika dibiarkan tidak ditentukan, peta sumber tidak akan dihasilkan.

Tip

Parameter ini dapat diatur menggunakan atau --sourcemap-output-s*

Nama konfigurasi build

Nama konfigurasi build yang menentukan versi biner yang ingin Anda targetkan rilis ini. Misalnya, "Debug" atau "Rilis" (hanya iOS).

Catatan

Parameter ini harus digunakan saat membangun dengan Xcode 11 dan yang lebih baru untuk mengambil alih konfigurasi default yang digunakan oleh Xcode.

Merilis Updates (Cordova)

appcenter codepush release-cordova -a <ownerName>/<appName> -d <deploymentName> -t <targetBinaryVersion>
[-t|--target-binary-version <targetBinaryVersion>]
[--is-release-build-type]
[-b|--build]
[-r|--rollout <rolloutPercentage>]
[--disable-duplicate-release-error]
[-k|--private-key-path <privateKeyPath>]
[-m|--mandatory]
[-x|--disabled]
[--description <description>]
[-d|--deployment-name <deploymentName>]
[-a|--app <ownerName>/<appName>]
[--disable-telemetry]
[-v|--version]

Perintah release-cordova ini adalah versi khusus Cordova dari perintah "vanilla" release , yang mendukung semua parameter yang sama (misalnya, --mandatory, --description), namun menyederhanakan proses merilis pembaruan dengan melakukan tugas tambahan berikut:

  1. cordova prepare Menjalankan perintah (atau phonegap prepare) untuk menghasilkan konten pembaruan (folder www) yang akan dirilis ke server CodePush.

  2. Menyimpulkan targetBinaryVersion rilis ini dengan menggunakan nama versi yang ditentukan dalam file config.xml proyek.

Untuk mengilustrasikan perbedaan yang release-cordova dapat dibuat perintah, contoh berikut menunjukkan bagaimana Anda dapat membuat dan merilis pembaruan untuk aplikasi Cordova menggunakan perintah "vanilla release ":

cordova prepare ios
appcenter codepush release -a <ownerName>/MyApp-iOS -c ./platforms/ios/www -t 1.0.0

Mencapai perilaku yang setara dengan release-cordova perintah akan memerlukan perintah berikut, yang kurang rawan kesalahan:

appcenter codepush release-cordova -a <ownerName>/MyApp-iOS

Parameter nama aplikasi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter nama penyebaran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter deskripsi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter wajib

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Tidak ada parameter kesalahan rilis duplikat

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter peluncuran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas. Jika dibiarkan tidak ditentukan, rilis akan tersedia untuk semua pengguna.

Parameter versi biner target

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas. Jika dibiarkan tidak ditentukan, perintah default hanya menargetkan versi yang ditentukan dalam metadata proyek (Info.plist jika pembaruan ini untuk klien iOS, dan build.gradle untuk klien Android).

Parameter yang dinonaktifkan

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter build

Parameter ini menentukan apakah Anda ingin menjalankan cordova build alih-alih cordova prepare (yang merupakan perilaku default), saat menghasilkan aset web yang diperbarui. Sangat berharga jika proyek Anda menyertakan sebelum atau sesudah build hook (misalnya, untuk menerjemahkan TypeScript), dan karenanya, menjalankan CodePush cordova prepare tidak cukup untuk membuat dan merilis pembaruan. Jika dibiarkan tidak ditentukan, defaultnya adalah false.

Tip

Parameter ini dapat diatur menggunakan atau --build-b*

Metadata Pembaruan Patching

Setelah merilis pembaruan, mungkin ada skenario di mana Anda ingin memodifikasi satu atau beberapa atribut metadata untuk itu (misalnya, Anda lupa menandai perbaikan bug penting sebagai wajib, Anda ingin meningkatkan persentase peluncuran pembaruan). Anda dapat dengan mudah melakukan ini dengan menjalankan perintah berikut:

appcenter codepush patch -a <ownerName>/<appName> <deploymentName> <existing-release-label>
[-r|--rollout <rolloutPercentage>]
[-d|--description <description>]
[-t|--target-binary-version <targetBinaryVersion>]
[-a|--app <ownerName>/<appName>]
[--disable-telemetry]
[-v|--version]

Catatan

Perintah ini tidak mengizinkan modifikasi konten pembaruan aktual dari rilis (misalnya, www folder aplikasi Cordova). Jika Anda ingin menanggapi rilis yang telah diidentifikasi rusak, Anda harus menggunakan perintah putar kembali untuk segera mengembalikannya, lalu jika perlu, rilis pembaruan baru dengan perbaikan yang sesuai saat tersedia.

Selain <ownerName>/<appName> dan deploymentName, semua parameter bersifat opsional, dan karenanya, Anda dapat menggunakan perintah ini untuk memperbarui satu atribut atau semuanya sekaligus. Memanggil patch perintah tanpa menentukan bendera atribut apa pun akan menghasilkan no-op.

# Mark the latest production release as mandatory
appcenter codepush patch -a <ownerName>/MyApp-iOS Production -m

# Increase the rollout for v23 to 50%
appcenter codepush patch -a <ownerName>/MyApp-iOS Production v23 -rollout 50%

Parameter label

Menunjukkan rilis mana (misalnya, v23) yang ingin Anda perbarui dalam penyebaran yang ditentukan. Jika dihilangkan, perubahan yang diminta akan diterapkan ke rilis terbaru dalam penyebaran yang ditentukan. Untuk mencari label untuk rilis yang ingin Anda perbarui, Anda bisa menjalankan appcenter codepush deployment history perintah dan merujuk ke Label kolom .

Parameter wajib

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda untuk memperbarui apakah rilis harus dianggap wajib atau tidak. Perhatikan bahwa --mandatory dan --mandatory true setara, tetapi tidak adanya bendera ini tidak setara --mandatory falsedengan . Jika parameter dihilangkan, tidak ada perubahan yang akan dilakukan pada nilai properti wajib rilis target. Atur parameter ini ke --mandatory false untuk secara eksplisit membuat rilis opsional.

Parameter deskripsi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda memperbarui deskripsi untuk rilis (misalnya, Anda membuat kesalahan ketik saat merilis, atau Anda lupa menambahkan deskripsi sama sekali). Jika parameter ini dihilangkan, tidak ada perubahan yang akan dilakukan pada nilai properti deskripsi rilis target.

Parameter yang dinonaktifkan

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda memperbarui apakah rilis harus dinonaktifkan atau tidak. Perhatikan --disabled dan --disabled true setara, tetapi tidak adanya bendera ini tidak setara dengan --disabled false. Jika parameter dihilangkan, tidak ada perubahan yang akan dilakukan pada nilai properti rilis target yang dinonaktifkan. Atur parameter ini ke --disabled false untuk secara eksplisit membuat rilis dapat diakuisisi, jika sebelumnya dinonaktifkan.

Parameter peluncuran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda meningkatkan persentase peluncuran rilis target. Parameter ini hanya dapat diatur ke bilangan bulat yang nilainya lebih besar dari nilai peluncuran saat ini. Selain itu, jika Anda ingin "menyelesaikan" peluncuran, dan membuat rilis tersedia untuk semua orang, Anda dapat mengatur parameter ini ke --rollout 100. Jika parameter ini dihilangkan, tidak ada perubahan yang akan dilakukan pada nilai parameter peluncuran rilis target.

Selain itu, seperti disebutkan di atas, ketika Anda merilis pembaruan tanpa nilai peluncuran, itu diperlakukan setara untuk mengatur peluncuran ke 100. Jika Anda merilis pembaruan tanpa peluncuran, Anda tidak dapat mengubah properti peluncurannya melalui patch perintah karena itu akan dianggap menurunkan persentase peluncuran.

Parameter versi biner target

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda memperbarui rentang semver yang menunjukkan versi biner mana yang kompatibel dengan rilis. Ini dapat berguna jika Anda membuat kesalahan saat awalnya merilis pembaruan (misalnya, Anda menentukan tetapi dimaksudkan 1.0.01.1.0) atau Anda ingin menambah atau mengurangi rentang versi yang didukung rilis (misalnya, Anda menemukan bahwa rilis tidak berfungsi sama 1.1.2 sekali). Jika parameter ini dihilangkan, tidak ada perubahan yang akan dilakukan pada nilai properti versi rilis target.

# Add a "max binary version" to an existing release
# by scoping its eligibility to users running >= 1.0.5
appcenter codepush patch -a <ownerName>/MyApp-iOS Staging -t "1.0.0 - 1.0.5"

Mempromosikan Updates

Setelah Menguji pembaruan terhadap penyebaran tertentu (misalnya, Staging), dan Anda ingin mempromosikannya "hilir" (misalnya, dev-staging>, staging-production>), Anda dapat menggunakan perintah berikut untuk menyalin rilis dari satu penyebaran ke penyebaran lainnya:

appcenter codepush promote -a <ownerName>/<appName> -s <sourceDeploymentName> -d <destDeploymentName>
[-s|--source-deployment-name <sourceDeploymentName>]
[-d|--destination-deployment-name <destDeploymentName>]
[-t|--target-binary-version <targetBinaryVersion>] 
[-r|--rollout <rolloutPercentage>]
[--disable-duplicate-release-error]
[--description <description>]
[-a|--app <ownerName>/<appName>] 
[--disable-telemetry] 

promote Perintah membuat rilis baru untuk penyebaran tujuan, yang mencakup kode dan metadata yang tepat (deskripsi, wajib, dan versi biner target) dari rilis terbaru penyebaran sumber. Meskipun Anda dapat menggunakan release perintah untuk "secara manual" memigrasikan pembaruan dari satu lingkungan ke lingkungan lain, promote perintah memiliki manfaat berikut:

  1. Ini lebih cepat, karena Anda tidak perlu menyusun ulang aset rilis yang ingin Anda terbitkan atau ingat deskripsi/versi biner yang untuk rilis penyebaran sumber.

  2. Ini kurang rawan kesalahan, karena operasi promosi memastikan bahwa hal yang tepat yang sudah Anda uji dalam penyebaran sumber (misalnya, Staging) akan menjadi aktif dalam penyebaran tujuan (misalnya, Production).

Kami menyarankan agar semua pengguna memanfaatkan lingkungan dan yang dibuat Staging secara otomatis, dan melakukan semua rilis langsung ke Staging, dan kemudian promote dari Staging ke Production setelah pengujian yang Production sesuai.

Parameter deskripsi

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda untuk mengambil alih deskripsi yang akan digunakan untuk rilis yang dipromosikan. Jika tidak ditentukan, rilis baru akan mewarisi deskripsi dari rilis yang dipromosikan.

Parameter yang dinonaktifkan

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda untuk mengambil alih nilai bendera yang dinonaktifkan yang akan digunakan untuk rilis yang dipromosikan. Jika tidak ditentukan, rilis baru akan mewarisi properti yang dinonaktifkan dari rilis yang dipromosikan.

Parameter wajib

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda untuk mengambil alih bendera wajib yang akan digunakan untuk rilis yang dipromosikan. Jika tidak ditentukan, rilis baru akan mewarisi properti wajib dari rilis yang dipromosikan.

Tidak ada parameter kesalahan rilis duplikat

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas.

Parameter peluncuran

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda menentukan apakah rilis yang baru dibuat hanya boleh tersedia untuk sebagian pengguna Anda. Tidak seperti parameter metadata rilis lainnya (misalnya, description), rollout rilis tidak dibawa/diwariskan sebagai bagian dari promosi, dan karenanya, Anda harus secara eksplisit mengatur ini jika Anda tidak ingin rilis yang baru dibuat tersedia untuk semua pengguna Anda.

Parameter versi biner target

Ini adalah parameter yang sama dengan yang dijelaskan di bagian di atas, dan memungkinkan Anda untuk mengambil alih versi biner target yang akan digunakan untuk rilis yang dipromosikan. Jika tidak ditentukan, rilis baru akan mewarisi properti versi biner target dari rilis yang dipromosikan.

# Promote the release to production and make it
# available to all versions using that deployment
appcenter codepush promote -a <ownerName>/MyApp-iOS -s Staging -d Production -t "*"

Updates Rolling Back

Riwayat rilis penyebaran tidak dapat diubah, sehingga Anda tidak dapat menghapus atau menghapus pembaruan setelah dirilis. Namun, jika Anda merilis pembaruan yang rusak atau berisi fitur yang tidak diinginkan, mudah untuk mengembalikannya menggunakan rollback perintah :

appcenter codepush rollback <ownerName>/<appName> <deploymentName>
appcenter codepush rollback -a <ownerName>/MyApp-iOS Production

Menjalankan perintah ini membuat rilis baru untuk penyebaran yang menyertakan kode dan metadata yang sama persis dengan versi sebelum yang terbaru. Misalnya, bayangkan Anda merilis pembaruan berikut ke aplikasi Anda:

Rilis Deskripsi Wajib
v1 Rilis awal! Ya
v2 Menambahkan fitur baru Tidak
v3 Perbaikan bug Ya

Jika Anda menjalankan perintah pada penyebaran tersebut rollback , rilis baru (v4) akan dibuat yang menyertakan konten rilis v2 .

Rilis Deskripsi Wajib
v1 Rilis awal! Ya
v2 Menambahkan fitur baru Tidak
v3 Perbaikan bug Ya
v4 (Putar kembali dari v3 ke v2) Menambahkan fitur baru Tidak

Pengguna akhir yang sudah diperoleh v3 sekarang akan "dipindahkan kembali" ke v2 saat aplikasi melakukan pemeriksaan pembaruan. Selain itu, setiap pengguna yang masih menjalankan v2, dan oleh karena itu, belum pernah memperoleh v3, tidak akan menerima pembaruan karena mereka sudah menjalankan rilis terbaru (inilah sebabnya mengapa pemeriksaan pembaruan kami menggunakan hash paket selain label rilis).

Jika Anda ingin mengembalikan penyebaran ke rilis selain sebelumnya (misalnya, v3 ->v2), Anda dapat menentukan parameter opsional --target-release :

appcenter codepush rollback -a <ownerName>/MyApp-iOS Production --target-release v34

Catatan

Rilis yang dihasilkan oleh pemutaran kembali akan diannotasikan dalam output deployment history perintah untuk membantu mengidentifikasinya dengan lebih mudah.

Menampilkan Riwayat Rilis

Anda dapat melihat riwayat 50 rilis terbaru untuk penyebaran aplikasi tertentu menggunakan perintah berikut:

appcenter codepush deployment history -a <ownerName>/<appName> <deploymentName>

Riwayat akan menampilkan semua atribut tentang setiap rilis (misalnya, label, wajib) serta menunjukkan apakah ada rilis yang dibuat karena promosi atau operasi putar kembali.

Riwayat Penyebaran

Selain itu, riwayat menampilkan metrik penginstalan untuk setiap rilis. Anda dapat melihat detail tentang cara menginterpretasikan data metrik dalam dokumentasi untuk perintah di deployment list atas.

Menghapus Riwayat Rilis

Anda dapat menghapus riwayat rilis untuk penyebaran menggunakan perintah berikut:

appcenter codepush deployment clear -a <ownerName>/<appName> <deploymentName>

Setelah menjalankan perintah ini, perangkat klien yang dikonfigurasi untuk menerima pembaruan menggunakan kunci penyebaran terkait tidak akan lagi menerima pembaruan yang telah dibersihkan. Perintah ini tidak dapat diubah, sehingga tidak boleh digunakan dalam penyebaran produksi.

Penandatanganan Kode

Apakah itu?

Penandatanganan kode adalah cara membuat tanda tangan digital untuk bundel yang nantinya dapat divalidasi di sisi klien sebelum penginstalan.

Mengapa kita membutuhkannya?

Pengembang ingin tahu bahwa kode yang mereka kirimkan adalah kode yang mereka tulis. Penandatanganan kode adalah mekanisme utama untuk memberikan jaminan tersebut dan dapat membantu mengurangi atau menghilangkan seluruh kelas serangan man-in-the-middle.

Bagaimana cara kerjanya?

Pertama, pengembang menghasilkan pasangan kunci asimetris: kunci privat akan digunakan untuk menandatangani bundel; kunci publik untuk verifikasi tanda tangan bundel. CodePush CLI kemudian menggunakan kunci privat untuk menandatangani bundel selama releaseperintah , dan release-cordovarelease-react . Kunci umum dikirim dengan aplikasi seluler. Kontrol atas pembuatan dan manajemen kunci ada di tangan pengembang.

Pada akhir perintah rilis, CLI menghitung hash konten bundel dan menempatkan nilai ini ke dalam JWT yang ditandatangani dengan kunci privat. Ketika plugin CodePush mengunduh bundel ke perangkat, plugin tersebut memeriksa .codepushrelease file yang berisi JWT dan memvalidasi tanda tangan JWT menggunakan kunci publik. Jika validasi gagal, pembaruan tidak diinstal.

Persyaratan untuk menggunakan fitur ini

Jika Anda berencana menggunakan fitur ini, lakukan langkah-langkah berikut:

  1. Menghasilkan pembaruan biner baru termasuk

    • plugin CodePush yang diperbarui mendukung Penandatanganan Kode
    • konfigurasikan sdk pendorongan kode Anda untuk menggunakan kunci umum Anda (lihat bagian SDK React Native yang relevan (iOS, Android) atau Cordova SDK untuk detailnya)
  2. Menghasilkan pembaruan CodePush baru yang menargetkan versi biner baru dan menentukan --private-key-path nilai parameter (atau -k)

Lihat tabel kompatibilitas kami untuk mengidentifikasi apakah fitur penandatanganan kode didukung dalam SDK/CLI Anda:

CodePush SDK Versi dari mana Penandatanganan Kode mendukung Platform yang Didukung Versi CLI CodePush minimal diperlukan
react-native-code-push 5.1.0 Android, iOS 2.1.0
cordova-plugin-code-push 1.10.0 Android, iOS 2.1.2

Pembuatan kunci

Penandatanganan kode mendukung kunci RSA yang dikodekan PEM (non-sertifikat) untuk penandatanganan. Anda dapat membuatnya melalui openssl seperti yang ditunjukkan di bawah ini:

# generate private RSA key and write it to private.pem file
openssl genrsa -out private.pem

# export public key from private.pem into public.pem
openssl rsa -pubout -in private.pem -out public.pem

Contoh kunci yang dihasilkan:

# public key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4moC3GsqF7YISFMQ0fnU
0rUF2xhxNqSGx9/GTxCynsQhR3hceroDXj3rAOTxnNkePB27uZfRDHrH3/LLoj9V
k2ghKRtfjDwXa85uDK8slSQDB9ZlD1TLQEJDZpKr1OTXY9VwbgtFaotSXoFmG3MO
RQeALCbrAgDxQ5Q2kJn6rfBuBoszfUz1qZqrlrY74Axerv1/UtTjL8uyF5r00Bxj
kvTveC2Pm5A3kq6QANktgfKWy9Ugs/4ykZF7fxfH+ukJW+iXwLACrdfzhegg/41H
5w06m30h0jqhIBZ3nbj5MN+qVbANHJMjz+fXqXx1Ovr1DfGtdKOku/BTWDxojCl1
iwIDAQAB
-----END PUBLIC KEY-----

# private key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA4moC3GsqF7YISFMQ0fnU0rUF2xhxNqSGx9/GTxCynsQhR3hc
eroDXj3rAOTxnNkePB27uZfRDHrH3/LLoj9Vk2ghKRtfjDwXa85uDK8slSQDB9Zl
D1TLQEJDZpKr1OTXY9VwbgtFaotSXoFmG3MORQeALCbrAgDxQ5Q2kJn6rfBuBosz
fUz1qZqrlrY74Axerv1/UtTjL8uyF5r00BxjkvTveC2Pm5A3kq6QANktgfKWy9Ug
s/4ykZF7fxfH+ukJW+iXwLACrdfzhegg/41H5w06m30h0jqhIBZ3nbj5MN+qVbAN
HJMjz+fXqXx1Ovr1DfGtdKOku/BTWDxojCl1iwIDAQABAoIBAQCdwf/8VS8fFlbv
DfHKXKlNp5RM9Nrtl/XRjro+nQPYXBBUHClT2gg+wiXcmalAAIhwmscSqhWe/G4I
PMRmaHrYGtYALnKE49nt5AgKDoSh5lW2QExqQkrcm08bSVcxH8J0bWPJSVE0y564
+rCKr8BhmLhWC0f0PXPeAoeCeceRKYX2oDgO8A0yZRSQUdRWiXOiQ4mUQ3IPCmBc
gD1JJNZ5kR4O904PZz5pbgyvN2t5BKOgLKq+x+8Pa8Rb21rFZKMHO8W04oKaRiGs
f4xwOBAWDOfzDKJzT5xepcPyycgjxcuvyKB2g8biWnDGGOTxDgqMX+R4XeP1aISC
h9bzfRoBAoGBAPREuPhIXRJOsIgSWAAiC5vhLZ9wWELWG95eibQm2SfpY4F0sPpE
lNQJ4yzC7J4BiApFzs1yxwwRmgpVd+wF9iMb4NSzaiTM7fju/Xv4aGhBqRXEokGF
v3QxIlbAwBqeL0rJAAadjbUTTO/u6sC80LI3bfPrn/z1hupZQGR559gjAoGBAO1J
xQ2ODVS4dSH2P+Ocd9LiUBPGyV97+MFixh6z1c2Fd3bNuiIhCxkrng45Dq0CkX84
nPUvtYxEQZoFvyB7gAm0SVlLHnJwBiq+Mp9g0UXSy6rZbjhiFkQs1W/W+Z2OIDsC
y+uXZT7No/J9VyjdrWzZJaBImO8/E4NONXWn8M95AoGACH97j+e0lTZ3ncRFm3uT
u9CRrcJSz8BzJ8FSORpA48qS06YjohFQvC+734rIgJa9DN5w22Tq19ik60cd7PAo
KACISd4UC0O147ssxmtV9oqSP1ef7XehuYEcGLiL9mEadBeaEKDalToeqxo8wIfR
GuIiySGhZ0ODdhO00coL7tECgYBargddD70udDNnICj4PbJY5928QQpxr/m3RZz6
3LTHDstBnosUQdZw7wc+3jUqjsG1gZgR5wKVMPx09N8+dZPPoZMqSZfAGelxajAE
UkaHTXBBwUfqyilCMnP6gofv2wGcK4xsYvXxEzslDxtA5b5By5Yic7vmKg+17Sxm
4yAW2QKBgDyEUzXq3Rrm7ZT720pPhuQDDSO0eHe1L1MUjTRsJ96GkIl0iqQCVgK8
A/6rFFTEeVf8L6GNMTwdtnDFz/CqIU+K1X4HLXmUY2suffWVxZ4KYqiEszCbyrdO
puayMcrx2unhKQyDYjUvD8GxHyquA+p52KDke2TkKfDxfzv0WOE1
-----END RSA PRIVATE KEY-----

Merilis pembaruan yang ditandatangani

Untuk merilis pembaruan yang ditandatangani, Anda harus menggunakan --private-key-path opsi (atau -k) untuk release perintah atau release-react .