Aracılığıyla paylaş


App Center CLI kullanarak CodePush güncelleştirmelerini yayımlama

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

Yükleme

Başlarken

  1. App Center hesabı oluşturun veya komutunu kullanarak appcenter login CLI aracılığıyla oturum açın.
  2. Uygulamanızı CodePush'a kaydedin ve isteğe bağlı olarak uygulamanızı ekibinizdeki diğer geliştiricilerle paylaşın .
  3. CodePush-ify uygulamanızı kullanın ve kullanmak istediğiniz dağıtıma (Apache Cordova ve React Native) işaret edin.
  4. Uygulamanız için yayın ve güncelleştirme.

Hesap Yönetimi

Uygulama güncelleştirmelerini yayınlamaya başlamadan önce mevcut CodePush hesabınızla oturum açın veya yeni bir App Center hesabı oluşturun. CLI'yi yükledikten sonra aşağıdaki komutu çalıştırarak bunu yapabilirsiniz:

appcenter login

Bu komut, GitHub veya Microsoft hesabınızla kimlik doğrulamanızı isteyen bir tarayıcı başlatır. Kimlik doğrulamasından sonra GitHub/MSA kimliğinize "bağlı" bir CodePush hesabı oluşturur ve oturum açmak için CLI'ya kopyalayıp yapıştırabileceğiniz bir erişim anahtarı oluşturur.

Not

Kaydettikten sonra CLI ile otomatik olarak oturum açarsınız, bu nedenle açıkça oturumu kapatana kadar aynı makineden yeniden oturum açmanız gerekmez.

Kimlik Doğrulaması

App Center CLI'daki komutların çoğu kimlik doğrulaması gerektirir. Bu nedenle hesabınızı yönetmeye başlamadan önce, kaydolırken kullandığınız GitHub veya Microsoft hesabını kullanarak oturum açın. Bunu yapmak için aşağıdaki komutu yürütebilirsiniz:

appcenter login

Bu komut, GitHub veya Microsoft hesabınızla kimlik doğrulamanızı isteyen bir tarayıcı penceresi başlatır. CLI'ya kopyalayıp yapıştırmak için bir erişim anahtarı oluşturur (sizden bunu ister). Kimliğiniz başarıyla doğrulandı ve tarayıcı pencerenizi güvenli bir şekilde kapatabilirsiniz.

Oturum açıp açmadığınızı denetlemek istediğinizde, geçerli kimlik doğrulama oturumunuzun e-posta adresini, kullanıcı adınızı ve görünen adınızı görüntülemek için aşağıdaki komutu çalıştırabilirsiniz:

appcenter profile list

CLI'dan oturum açtığınızda erişim anahtarınız oturumunuz boyunca diskte kalır, böylece hesabınıza her erişmeye çalıştığınızda oturum açmanız gerekmez. Oturumunuzu sonlandırmak ve bu erişim anahtarını silmek için aşağıdaki komutu yürütebilirsiniz:

appcenter logout

Çalışan oturumu açık bırakmak istemediğiniz bir makinede oturumu kapatmayı unutursanız (örneğin, arkadaşınızın dizüstü bilgisayarı), geçerli oturum açma oturumlarını listelemek ve kaldırmak için aşağıdaki komutları kullanabilirsiniz.

appcenter tokens list
appcenter tokens delete <machineName>

Erişim Belirteçleri

Tarayıcı başlatmadan veya GitHub veya Microsoft kimlik bilgilerinizi (örneğin, ci ortamında) kullanmaya gerek kalmadan CodePush hizmetinde kimlik doğrulaması yapmak için aşağıdaki komutu yürüterek bir "erişim belirteci" oluşturabilirsiniz (bunun ne için olduğunu açıklayan bir adla birlikte):

appcenter tokens create -d "Azure DevOps Integration"

Anahtar yalnızca bir kez görüntülenir, bu nedenle gerekirse bir yere kaydetmeyi unutmayın! Yeni anahtarı oluşturduktan sonra, tarayıcıyı --token başlatmanın aksine "başsız" kimlik doğrulamasını kullanmanıza olanak tanıyan komutun bayrağını login kullanarak değerini belirtebilirsiniz.

appcenter login --token <accessToken>

Bu yöntemi kullanarak oturum açarken, erişim belirteci oturumu kapatma sırasında otomatik olarak geçersiz kılınmayacak ve App Center sunucusundan açıkça kaldırılana kadar gelecekteki oturumlarda kullanılabilir. Ancak, oturumunuz tamamlandıktan sonra kimlik bilgilerinizi diskten kaldırmak için oturumunuzu kapatmanız gerekir.

Uygulama Yönetimi

Güncelleştirmeleri dağıtmadan önce aşağıdaki komutu kullanarak App Center ile bir uygulama oluşturun:

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

Uygulamanız hem Android hem de iOS'yi hedefliyorsa CodePush ile ayrı uygulamalar oluşturmanızı kesinlikle öneririz. Her platform için bir tane. Bu şekilde, güncelleştirmeleri ayrı ayrı yönetebilir ve yayımlayabilirsiniz. Bu da uzun vadede işleri daha basit hale getirme eğilimindedir. Çoğu kişi ve ile uygulama adını sonekler -Android-iOS. örneğin:

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

Not

Android ve iOS için aynı uygulamayı kullanmak, iOS için üretilen CodePush güncelleştirme paketi Android için üretilen güncelleştirmeden farklı içeriğe sahip olacağı için yükleme özel durumlarına neden olabilir.

İpucu

App Center CLI'daki önemli yeni işlevlerden biri, kullanarak appcenter apps set-current <ownerName>/<appName>bir uygulamayı geçerli uygulama olarak ayarlayabilme özelliğidir. Bir uygulamayı geçerli uygulama olarak ayarlayarak bayrağını diğer CLI komutlarında kullanmanız -a gerekmez. Örneğin, geçerli uygulama ayarlandığında komutu appcenter codepush deployment list -a <ownerName>/<appName> olarak kısaltılabilir appcenter codepush deployment list . kullanarak appcenter apps get-currenthangi uygulamanın hesabınızın geçerli uygulaması olarak ayarlandığını kontrol edebilirsiniz. Geçerli uygulamanın ayarlanması çoğu CLI komutunun daha kısa yaz olmasını sağlar.

Özgün CodePush ile uygulamalar otomatik olarak iki dağıtıma (Staging ve Production) sahip oldu. App Center'da aşağıdaki komutları kullanarak bunları kendiniz oluşturmanız gerekir:

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

Dağıtımları oluşturduktan sonra, mobil istemcilerinizi ilgili SDK'ları appcenter codepush deployment list --displayKeys(Cordova ve React Native ayrıntıları) aracılığıyla yapılandırmak için kullanmaya başlayabileceğiniz kullanarak her iki dağıtımın dağıtım anahtarlarına erişebilirsiniz.

Bir uygulamaya verdiğiniz adı beğenmemeye karar verirseniz, istediğiniz zaman aşağıdaki komutu kullanarak yeniden adlandırabilirsiniz:

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

Uyarı

Uygulama adının değiştirilmesi, dal yapılandırmasında ve derlemelerinde yaklaşık 48 saat boyunca beklenmeyen sorunlar oluşturabilir.

Bir noktada artık bir uygulamaya ihtiyacınız yoksa, aşağıdaki komutu kullanarak uygulamayı sunucudan kaldırabilirsiniz:

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

Kullanmak üzere yapılandırılmış tüm uygulamalar güncelleştirmeleri almayı durduracağı için bu komutu yürütürken dikkatli olun.

Son olarak, App Center sunucusuna kaydettiğiniz tüm uygulamaları listelemek istiyorsanız aşağıdaki komutu çalıştırın:

appcenter apps list

Uygulama İşbirliği

Aynı CodePush uygulamasında diğer geliştiricilerle çalışacaksanız, aşağıdaki yönergeleri izleyerek App Center portalını kullanarak bunları ortak çalışanlar olarak ekleyebilirsiniz:

  1. App Center portalında, ortak çalışanları eklemek istediğiniz uygulamayı seçin
  2. Sayfanın sol tarafındaki gezinti alanında Ayarlar'a tıklayın
  3. Ortak Çalışanlar bağlantısına tıklayın
  4. Ortak çalışanlar menüsünde, ortak çalışanların e-posta adreslerini girerek davet edin.

Önemli

App Center'ın Ortak Çalışanlar özelliği, her ortak çalışanın belirtilen e-posta adresini kullanarak App Center'a zaten kaydolmuş olmasını bekler.

Eklendikten sonra, paylaşılan uygulamada tüm ortak çalışanlar hemen aşağıdaki izinlere sahip olur:

  1. Uygulamayı, ortak çalışanlarını, dağıtımlarını ve yayın geçmişini görüntüleme
  2. Uygulamanın dağıtımlarından herhangi birine yönelik güncelleştirmeleri yayınla
  3. Uygulamanın dağıtımlarından herhangi biri arasında güncelleştirme yükseltme
  4. Uygulamanın dağıtımlarından herhangi birini geri alma
  5. Uygulamanın dağıtımlarından herhangi biri içindeki tüm yayınlara düzeltme eki uygulama

Ortak çalışanlar aşağıdaki eylemlerin hiçbirini yapamaz:

  1. Uygulamayı yeniden adlandırma veya silme
  2. Uygulama içinde yeni dağıtımlar oluşturma, yeniden adlandırma veya silme
  3. Dağıtımın yayın geçmişini temizleme
  4. Uygulamadaki ortak çalışanları ekleme veya uygulamadan kaldırma (*)

Not

Geliştirici, kendisiyle paylaşılan bir uygulamadan ortak çalışan olarak kendisini kaldırabilir.

Zaman içinde, birisi artık sizinle birlikte bir uygulama üzerinde çalışmıyorsa, portaldaki bu ortak çalışan menüsünü kullanarak bu uygulamayı ortak çalışan olarak da kaldırabilirsiniz.

Bir uygulamaya eklenmiş olan tüm ortak çalışanları listelemek istediğinizde portaldaki ortak çalışan menüsünü ziyaret edebilirsiniz.

Dağıtım Yönetimi

CodePush perspektifinden bakıldığında, uygulama bir veya daha fazla "dağıtım" için adlandırılmış bir gruplandırmadır. Uygulama, bir uygulamanın platforma özgü sürümü (örneğin, Foo uygulamasının iOS bağlantı noktası) için kavramsal bir "ad alanı" veya "kapsam" temsil ederken, dağıtımları güncelleştirmeleri yayımlama (geliştiriciler için) ve güncelleştirmeleri eşitleme (son kullanıcılar için) için gerçek hedefi temsil eder. Dağıtımlar, her uygulama için belirli bir anda birden çok "ortam" oluşturmanıza ve son olarak üretime geçmeden önce uygulamaların genellikle bir geliştiricinin kişisel ortamından test/soru-cevap/hazırlama ortamına geçişinin gerçekliğini modellemenize yardımcı olur.

Not

Aşağıda göreceğiniz gibi, releasepromote ve rollback komutlarının çalışması için hem uygulama adı hem de dağıtım adı gerekir çünkü bu, bir dağıtım noktasını benzersiz olarak tanımlayan ikisinin birleşimidir (örneğin, iOS uygulamamın bir güncelleştirmesini beta test edicilerime yayınlamak istiyorum).

Bir uygulama CodePush hizmetine her kaydedildiğinde aşağıdaki dağıtımları oluşturmanızı öneririz: Staging ve Production. Bu, güncelleştirmeleri son kullanıcılarınıza göndermeden önce kapsamlı bir şekilde test edebilmeniz için dahili bir ortamda güncelleştirme yayımlamaya başlamanıza olanak tanır. Bu iş akışı, yayınlarınızın toplu tüketime hazır olmasını sağlamak için kritik öneme sahiptir ve web'de uzun süredir oluşturulmuş bir uygulamadır.

Uygulamanızın hazırlama ve üretim sürümü gereksinimlerinizi karşılamak için yeterliyse başka bir şey yapmanız gerekmez. Ancak alfa, geliştirme vb. dağıtım istiyorsanız, aşağıdaki komutu kullanarak bunları kolayca oluşturabilirsiniz:

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

Uygulamalardaki gibi, sırasıyla aşağıdaki komutları kullanarak da dağıtımları kaldırabilir ve yeniden adlandırabilirsiniz:

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

Belirli bir uygulamanın içerdiği dağıtımların listesini görüntülemek istediğinizde aşağıdaki komutu çalıştırabilirsiniz:

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

Yükleme ölçümleri şu anlama gelir:

  • Etkin - Şu anda bu sürümü çalıştıran başarılı yüklemelerin sayısı (kullanıcı uygulamanızı açtığında bu sürümü görür/çalıştırır). Son kullanıcılar bu sürüme yükseltildikçe ve sürümden uzaklaştıkça bu sayı değişecektir. Bu ölçüm hem etkin kullanıcıların toplamını hem de genel hedef kitlenizin yüzde kaçını temsil ettiğini gösterir. Bu, kullanıcılarınızın şu anda çalıştırmakta olduğu güncelleştirmelerin dağıtımını belirlemeyi ve "En son güncelleştirmemi kaç kullanıcım aldı?" gibi soruları yanıtlamayı kolaylaştırır.

  • Toplam - Bu güncelleştirmenin genel olarak aldığı başarılı yüklemelerin toplam sayısı. Bu sayı yalnızca yeni kullanıcılar/cihazlar yükledikçe artar, bu nedenle her zaman toplam etkin sayının üst kümesi olur. Yüklendikten sonra bir güncelleştirme (veya sync) çağrıldıktan notifyApplicationReady sonra başarılı olarak kabul edilir. Bir güncelleştirmenin indirildiği ve başarılı olarak işaretlendiği an arasında, "beklemede" güncelleştirme olarak bildirilir (ayrıntılar için aşağıya bakın).

  • Beklemede - Bu sürümün indirilme ancak henüz yüklenmeme sayısı (uygulama değişiklikleri uygulamak için yeniden başlatıldı). Bu nedenle, güncelleştirmeler indirildikçe bu ölçüm artar ve ilgili indirilen güncelleştirmeler yüklendikçe azalır. Bu ölçüm öncelikli olarak hemen yüklenecek şekilde yapılandırılmamış güncelleştirmeler için geçerlidir ve bir güncelleştirmeyi uygulamak için uygulama özgeçmişini veya yeniden başlatmayı kullanan uygulamalar için sürüm benimsemenin daha geniş bir resmini sağlamaya yardımcı olur (örneğin, bir güncelleştirmeyi geri almak istiyorum ve henüz indirilip indirilmediğini merak ediyorum). Güncelleştirmeleri hemen yüklenecek şekilde yapılandırdıysanız ve hala bekleyen güncelleştirmelerin bildirildiğini görüyorsanız, yükleme raporlarını göndermeye başlayan ve yüklü güncelleştirmeleri başarılı olarak işaretleyen yöntem olan uygulama başlangıcında (veya sync) aramamış notifyApplicationReady olmanız olasıdır.

  • Geri Almalar - Bu sürümün istemcide otomatik olarak geri alınma sayısı. İdeal olarak bu sayı sıfır olmalıdır ve bu durumda bu ölçüm gösterilmez. Ancak, yükleme işleminin bir parçası olarak kilitlenme içeren bir güncelleştirme yayımladıysanız, CodePush eklentisi son kullanıcıyı önceki sürüme geri alır ve bu sorunu sunucuya geri bildirir. Bu, yayınlar bozulursa son kullanıcılarınızın engeli kaldırılmamasını sağlar ve CLI'da bu telemetriyi görerek hatalı yayınları belirleyebilir ve sunucuya geri döndürerek bunlara yanıt vekleyebilirsiniz.

  • Piyasaya Çıkma - Bu güncelleştirmeyi almaya uygun kullanıcıların yüzdesini gösterir. Bu özellik yalnızca "etkin" dağıtımı temsil eden sürümler için görüntülenir ve bu nedenle,% 100'den az bir dağıtım yüzdesine sahiptir. Ayrıca, bir dağıtımın herhangi bir anda yalnızca bir etkin dağıtımı olabileceğinden, bu etiket yalnızca dağıtım içindeki en son sürümde bulunur.

  • Devre dışı - Yayının devre dışı olarak işaretlenip işaretlenmediğini ve dolayısıyla son kullanıcılar tarafından indirilip indirilemeyeceğini gösterir. Bu özellik yalnızca devre dışı bırakılan sürümler için görüntülenir.

Ölçüm hücresi raporladığında No installs recordedbu, sunucunun bu sürüm için herhangi bir etkinlik görmediğini gösterir. Bunun nedeni, telemetri desteği içeren eklenti sürümlerinin engellenmesi veya henüz hiçbir son kullanıcının CodePush sunucusuyla eşitlenmemesi olabilir. Bir yükleme gerçekleşir gerçekleşmez, yayın için CLI'da ölçümlerin doldurulmaya başlanacağını göreceksiniz.

yayın Güncelleştirmeler

Uygulamanız App Center sunucusuna yönelik güncelleştirmeleri sorgulamak üzere yapılandırıldıktan sonra, güncelleştirmeleri yayımlamaya başlayabilirsiniz. App Center CLI, hem basitlik hem de esneklik sağlamak için güncelleştirmeleri yayınlamaya yönelik üç farklı komut içerir:

  1. Genel - App Center sunucusuna bir dış araç veya derleme betiği (örneğin, Bir Gulp görevi, react-native bundle komut) tarafından oluşturulan bir güncelleştirme yayınlar. Bu, CodePush'a özgü adımla sıkı bir şekilde ele alındığından ve uygulamaya özgü derleme işlemini size bıraktığından, mevcut iş akışlarına uyum açısından en fazla esnekliği sağlar.

  2. React Native - Genel yayın komutuyla aynı işlevselliği kullanır, ancak hem hem de react-native bundleappcenter codepush releasekomutunu çalıştırmanızı gerektirmek yerine güncelleştirilmiş uygulama içeriğini sizin için oluşturma görevini de (JS paketi ve varlıklar) işler.

  3. Cordova - Genel yayın komutuyla aynı işlevselliği kullanır, ancak hem (veya phonegap prepare) appcenter codepush releasehem de cordova prepare çalıştırmanızı gerektirmek yerine uygulama güncelleştirmesini sizin için hazırlama görevini de üstler.

Bu komutlardan hangisini kullanmanız gerektiği çoğunlukla gereksinimler veya tercihle ilgilidir. Ancak, başlamak için ilgili platforma özgü komutu kullanmanızı (deneyimi büyük ölçüde basitleştirdiğinden) ve daha fazla denetim gerektiğinde genel amaçlı release komutu kullanmanızı öneririz.

Not

Yalnızca bir dağıtımdaki en son 50 sürüm istemciler tarafından bulunabilir ve indirilebilir.

Güncelleştirmeler Serbest Bırakılıyor (Genel)

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]

Uygulama adı parametresi

Bu parametre, bu güncelleştirmenin yayımlandığı App Center uygulamasının adını belirtir. Aramak istiyorsanız, uygulama listenizi görmek için komutunu çalıştırabilirsiniz appcenter apps list .

İçindekiler parametresini güncelleştir

Bu parametre, güncelleştirilmiş uygulama kodunun ve yayınlamak istediğiniz varlıkların konumunu belirtir. Tek bir dosya (örneğin, bir React Native uygulaması için JS paketi) veya bir dizinin yolunu (örneğin, Cordova uygulamasının /platforms/ios/www klasörü) sağlayabilirsiniz. CLI bunları sizin için otomatik olarak sıkıştıracağı için, bu değişiklikleri dağıtmak için birden çok dosya veya dizini sıkıştırmanız gerekmez.

Belirttiğiniz yolun uygulamanızın platforma özgü, hazırlanmış/paketlenmiş sürümünü ifade ediyor olması önemlidir. Aşağıdaki tabloda, yayımlamadan önce hangi komutu çalıştırmanız gerektiği ve daha sonra parametresini updateContentsPath kullanarak başvurabileceğiniz konum özetlenmiştir:

Platform Hazırlama komutu Paket yolu (proje köküne göre)
Cordova (Android) cordova prepare android ./platforms/android/assets/www Dizin
Cordova (iOS) cordova prepare ios ./platforms/ios/www Dizin
React Native wo/assets (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <bundleOutput> --dev false Seçeneğin --bundle-output değeri.
Varlıkları React Native (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false Uygulamanın varlıklarını --assets-dest ve JS paketini içeren yeni oluşturulan dizini temsil etmesi gereken seçeneğin değeri
React Native wo/assets (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <bundleOutput> --dev false Seçeneğin --bundle-output değeri
Varlıkları React Native (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false Uygulamanın varlıklarını --assets-dest ve JS paketini içeren yeni oluşturulan dizini temsil etmesi gereken seçeneğin değeri

Hedef ikili sürüm parametresi

Bu parametre, güncelleştirmeyi yayımlamakta olduğunuz uygulamanın mağaza/ikili sürümünü belirtir, böylece yalnızca bu sürümü çalıştıran kullanıcılar güncelleştirmeyi alırken, uygulama ikili dosyasının eski veya daha yeni bir sürümünü çalıştıran kullanıcılar güncelleştirmeyi almaz. Aşağıdaki nedenlerle yararlıdır:

  1. Kullanıcı daha eski bir ikili sürüm çalıştırıyorsa, CodePush güncelleştirmesinde çalıştırdıklarıyla uyumlu olmayan hataya neden olan değişiklikler olabilir.

  2. Bir kullanıcı daha yeni bir ikili sürüm çalıştırıyorsa, çalıştırdıklarının CodePush güncelleştirmesi ile daha yeni (ve potansiyel olarak uyumsuz) olduğu varsayılır.

Bir güncelleştirmenin uygulama deposu ikili dosyasının birden çok sürümünü hedeflemesini isterseniz, parametreyi bir semver aralığı ifadesi olarak belirtmenize de izin veririz. Bu şekilde, ikilinin aralık ifadesini (semver.satisfies(version, range) döndürür true) karşılayan bir sürümünü çalıştıran tüm istemci cihazları güncelleştirmeyi alır. Geçerli semver aralığı ifadelerine örnek olarak şunlar verilebilir:

Aralık İfadesi Güncelleştirmeyi kim alır?
1.2.3 Yalnızca uygulamanızın belirli ikili sürümünü 1.2.3 çalıştıran cihazlar
* CodePush uygulamanızdaki güncelleştirmeleri kullanacak şekilde yapılandırılmış tüm cihazlar
1.2.x Ana sürüm 1, ikincil sürüm 2 ve uygulamanızın herhangi bir yama sürümünü çalıştıran cihazlar
1.2.3 - 1.2.7 (dahil) ile 1.2.7 (dahil) arasında 1.2.3 herhangi bir ikili sürümü çalıştıran cihazlar
>=1.2.3 <1.2.7 (dahil) ile 1.2.7 (özel) arasında 1.2.3 herhangi bir ikili sürümü çalıştıran cihazlar
1.2 Eşdeğer >=1.2.0 <1.3.0
~1.2.3 Eşdeğer >=1.2.3 <1.3.0
^1.2.3 Eşdeğer >=1.2.3 <2.0.0

Not

Uygulamanın semver ifadesi , ^veya ** * gibi >özel bir kabuk karakteri veya işleciyle başlıyorsa, değeri tırnak içine almazsanız komut doğru yürütülmeyebilir çünkü kabuk CLI işlemimize doğru değerleri sağlamaz. Bu nedenle, komutunu çağırırken release uygulamanın targetBinaryVersion parametresini çift tırnak içine almak en iyisidir; örneğin, appcenter codepush release -a <ownerName>/<appName> updateContents ">1.2.3".

Aşağıdaki tabloda CodePush'un ilgili her uygulama türü için güncelleştirmenizin semver aralığını karşılamasını beklediği sürüm değeri özetlenmiştir:

Platform İkili sürümün kaynağı
Cordova <widget version>config.xml dosyasındaki öznitelik
React Native (Android) android.defaultConfig.versionName Projenin build.gradle dosyasındaki özelliği
React Native (iOS) CFBundleShortVersionStringInfo.plist dosyasındaki anahtar
React Native (Windows) <Identity Version>Package.appxmanifest dosyasındaki anahtar

Not

Meta veri dosyalarındaki ikili sürümde bir düzeltme eki sürümü yoksa( örneğin, 2.0) düzeltme eki sürümüne 02.0 -> 2.0.0sahip olarak değerlendirilir.

Dağıtım adı parametresi

Bu parametre, güncelleştirmeyi hangi dağıtıma yayınlamak istediğinizi belirtir. varsayılan olarak Stagingkullanılır, ancak öğesine veya kendi özel dağıtımlarınızdan birine dağıtmaya Productionhazır olduğunuzda bu bağımsız değişkeni açıkça ayarlayın.

İpucu

parametresi veya -dkullanılarak --deployment-name ayarlanabilir.

Açıklama parametresi

Bu parametre, dağıtım için isteğe bağlı bir "değişiklik günlüğü" sağlar. Değer istemciye yuvarlanarak güncelleştirme algılandığında uygulamanızın son kullanıcıya görüntülemeyi seçebilmesini sağlar (örneğin, "Yenilikler?" iletişim kutusu aracılığıyla). Bu dize, ve gibi \n\t denetim karakterlerini kabul eder, böylece daha iyi okunabilirlik için açıklamalarınıza boşluk biçimlendirmesi ekleyebilirsiniz.

İpucu

Bu parametre kullanılarak --descriptionayarlanabilir.

Devre dışı bırakılmış parametre

Bu parametre, bir güncelleştirmenin son kullanıcılar tarafından indirilip indirilemeyeceğini belirtir. Belirtilmemiş olarak bırakılırsa güncelleştirme devre dışı bırakılmaz. Bunun yerine, uygulamanız çağrısında synckullanıcılar uygulamayı indirir. Açıkça düzeltme eki uygulamadığınız ve son kullanıcıların indirmesini isteyene kadar hemen kullanılabilir olmayan bir güncelleştirme yayınlamak istiyorsanız bu parametre değerli olabilir (örneğin, bir duyuru blog gönderisi yayına girdi).

İpucu

Bu parametre veya -xkullanılarak --disabled ayarlanabilir.

Zorunlu parametre

Bu parametre, güncelleştirmenin zorunlu kabul edilip edilmeyeceğini belirtir (örneğin, kritik bir güvenlik düzeltmesi içerir). Bu öznitelik, istemciye yuvarlanıp atılır ve istemcinin bunu nasıl ve nasıl zorunlu kılıp zorlayabileceğine kim karar verebilir.

Not

Bu parametre bir "bayrak" olduğundan, yokluğu yayının isteğe bağlı olduğunu ve varlığının zorunlu olduğunu gösterir. Buna bir değer sağlayabilirsiniz (örneğin, --mandatory true), ancak bir yayını zorunlu olarak işaretlemek için belirtmek --mandatory yeterlidir.

Zorunlu öznitelik benzersizdir çünkü sunucu, uygulama sürümlerinin semantiğinin son kullanıcılarınız için korunmasını sağlamak için gerekli şekilde dinamik olarak değiştirir. Örneğin, uygulamanızda aşağıdaki üç güncelleştirmesi yayımlamış olduğunuzu düşünün:

Yayınla Zorunlu?
v1 No
v2 Yes
v3 No

Bir son kullanıcı şu anda çalıştırıyorsa v1ve bir güncelleştirme için sunucuyu sorgularsa, ile v3 yanıt verir (en son sürüm olduğundan), ancak arasında zorunlu bir güncelleştirme yayınlandığından sürümü dinamik olarak zorunluya dönüştürür. içinde bulunan kod içinde bulunan v3 koda artımlı olduğundan bu v2davranış önemlidir. Zorunlu hale gelen v2 her şey, henüz edinmemiş v2olan herkes için zorunlu hale getirmektedirv3.

Bir son kullanıcı şu anda çalıştırıyorsa v2ve bir güncelleştirme için sunucuyu sorgularsa, ile v3yanıt verir, ancak sürümü isteğe bağlı olarak bırakır. Bunun nedeni, zorunlu güncelleştirmeyi zaten almış olmalarıdır ve bu nedenle ilkesini v3değiştirmeye gerek yoktur. Bu davranış, sunucunun zorunlu bayrağı "dinamik olarak dönüştüreceğini" söyleme nedenimizdir, çünkü yayın devam ettiği sürece zorunlu özniteliği her zaman yayınlanırken belirttiğiniz değer kullanılarak depolanır. Yalnızca son kullanıcıdan gelen güncelleştirme denetimine yanıt verirken gerektiğinde anında değiştirilir.

Açıklanan davranış yalnızca olarak mandatoryişaretlenmiş bir güncelleştirme yayımladığınızda sizin için geçerlidir. Sunucu yalnızca yukarıda gösterildiği gibi bir araya gelen mandatory güncelleştirmeler varsa sürümü mandatory olarak değiştiriroptional.

olarak mandatory işaretlenmiş bir sürüm hiçbir zaman olarak optionaldönüştürülmeyecektir.

İpucu

Bu parametre veya kullanılarak --mandatory ayarlanabilir -m*

Yinelenen yayın hatası parametresi yok

Bu parametre, güncelleştirmenin dağıtımdaki en son sürümle aynı olması durumunda CLI'nın hata yerine bir uyarı oluşturması gerektiğini belirtir. Küçük değişikliklerin üretim kodunun değişmediği sürümleri tetikleyebileceği beklenen sürekli tümleştirme senaryoları için yararlıdır.

Rollout parametresi

Önemli

Bu parametrenin etkili olması için son kullanıcılarınızın CodePush eklentisinin sürümünü 1.6.0-beta+ (Cordova için) veya 1.9.0-beta+ (React Native için) çalıştırıyor olması gerekir. Dağıtım özelliğini belirten bir güncelleştirme yayınlarsanız, Cordova'nın eski bir sürümünü veya React Native eklentilerini çalıştıran hiçbir son kullanıcı güncelleştirme için uygun olmaz. Platforma özgü CodePush eklentisinin gerekli sürümünü (daha önce belirtildiği gibi) benimseyene kadar, uygulamanın yayınlarında bir dağıtım değeri ayarlamanızı önermiyoruz, çünkü hiç kimse uygulamayı almaz.

Bu parametre, bu güncelleştirmeyi almaya uygun olması gereken kullanıcıların yüzdesini (ile 100arasında 1 bir tamsayı olarak) belirtir. Yeni sürümleri uygulamanın hedef kitlesinin bir bölümüyle ("örneğin, %25) "yayınlamak" ve geri bildirim almak ya da herkes için genel kullanıma sunmadan önce özel durumlar veya kilitlenmeler için watch istiyorsanız yararlı olabilir. Bu parametre ayarlı değilse, varsayılan olarak 100%olur. Yalnızca kaç kullanıcının alacağını sınırlayacak şekilde ayarlamanız gerekir.

Piyasaya çıkarma özelliğini kullanırken dikkat edilmesi gereken bazı ek noktalar vardır:

  1. En son sürümü "etkin" bir dağıtım olan bir dağıtımda yeni bir güncelleştirme yayımlayamazsınız (dağıtım özelliği null değildir). Dağıtımda daha fazla güncelleştirme yayımlayabilmeniz için önce dağıtımın rollout "tamamlanması" (özelliği olarak 100ayarlanması) gerekir.

  2. En son sürümü "etkin" bir dağıtım olan bir dağıtımı geri alırsanız, dağıtım değeri temizlenir ve dağıtım davranışı etkin bir şekilde "devre dışı bırakılır".

  3. ve alanlarının mandatory aksine, bir yayını bir dağıtımdan diğerine yükselttiğinizde özelliği yayılmaz rollout ve bu nedenle yeni sürümün (hedef dağıtımda) bir dağıtım değerine sahip olmasını istiyorsanız, komutu çağırdığınızda promote bunu açıkça ayarlamanız description gerekir.

İpucu

Bu parametre veya kullanılarak --rollout ayarlanabilir -r*

yayın Güncelleştirmeler (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]

release-react komut, "vanilla" release komutunun React Native özgü bir sürümüdür ve aynı parametrelerin tümünü (örneğin, --mandatory, --description) destekler, ancak aşağıdaki ek görevleri gerçekleştirerek güncelleştirmeleri yayımlama işlemini basitleştirir:

  1. CodePush sunucusuna react-native bundle yayımlanacak güncelleştirme içeriğini (JS paketi ve varlıklar) oluşturmak için komutunu çalıştırma. Mümkün olduğunca mantıklı varsayılanları kullanır (örneğin, bir iOS giriş dosyasının index.ios.jsolarak adlandırıldığından, geliştirme olmayan bir derleme oluşturmak), ancak esnekliği etkinleştirmek için ilgili react-native bundle parametreleri de kullanıma sunar (örneğin, --sourcemap-output).

  2. targetBinaryVersion Projenin Info.plist (iOS için) ve build.gradle (Android için) dosyalarında belirtilen sürüm adını kullanarak bu sürümün çıkarımını yapma.

Komutun release-react oluşturabileceği farkı göstermek için, aşağıdaki örnekte "vanilla" release komutunu kullanarak bir React Native uygulaması için nasıl güncelleştirme oluşturup yayımlayabileceğiniz gösterilmektedir:

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

komutuyla release-react eşdeğer bir davranış elde etmek için aşağıdaki komutun olması gerekir ve bu daha az hataya açıktır:

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

Uygulama adı parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Dağıtım adı parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Açıklama parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Zorunlu parametre

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Yinelenen yayın hatası parametresi yok

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Rollout parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır. Belirtilmemiş olarak bırakılırsa, sürüm tüm kullanıcıların kullanımına sunulacaktır.

Hedef ikili sürüm parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır. Belirtilmemiş olarak bırakılırsa, varsayılan olarak uygulamanın Info.plist (iOS için) ve build.gradle (Android için) dosyalarında belirtilen tam sürümü hedeflemektir.

Paket adı parametresi

Bu parametre, oluşturulan JS paketi için kullanılması gereken dosya adını belirtir. Belirtilmemiş olarak bırakılırsa, belirtilen platform için standart paket adı kullanılır: main.jsbundle (iOS), index.android.bundle (Android) ve index.windows.bundle (Windows).

İpucu

Bu parametre veya kullanılarak --bundle-name ayarlanabilir -b*

Geliştirme parametresi

Bu parametre, bir unminified, development JS paketi oluşturulup oluşturulmayacağını belirtir. Belirtilmemiş olarak bırakılırsa, false uyarıların devre dışı bırakıldığı ve paketin küçültüldüğü varsayılan değerdir.

İpucu

Bu parametre kullanılarak ayarlanabilir --development*

Devre dışı bırakılmış parametre

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Girdi dosyası parametresi

Bu parametre, uygulamanın kök/giriş JavaScript dosyasının göreli yolunu belirtir. Belirtilmemiş olarak bırakılırsa varsayılan olarak index.ios.js (iOS için), index.android.js (Android için) veya bu dosya varsa index.windows.bundle (Windows için) veya başka index.js .

İpucu

Bu parametre veya kullanılarak --entry-file ayarlanabilir -e*

Gradle dosya parametresi (yalnızca Android)

Bu parametre, yayın için hedef ikili sürümü otomatik olarak algılamaya çalışırken CLI'nin kullanması gereken build.gradle dosyasının göreli yolunu belirtir. CLI projenin build.gradle dosyasını "standart" React Native projelerde otomatik olarak bulabileceğinden, bu parametre yalnızca gelişmiş senaryolar için hazırlanmıştır. Ancak, projenin gradle dosyası rastgele bir konumda bulunuyorsa, CLI bulamıyorsa, bu parametreyi kullanmak, parametreyi açıkça ayarlamanıza --target-binary-version gerek kalmadan CodePush güncelleştirmelerini yayınlamaya devam etmenizi sağlar. Build.gradle gerekli bir dosya adı olduğundan, içeren klasörün yolunu veya dosyanın tam yolunu belirtmek aynı etkiyi elde eder.

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

İpucu

Bu parametre veya kullanılarak --gradle-file ayarlanabilir -g*

Plist dosya parametresi (yalnızca iOS)

Bu parametre, yayın için hedef ikili sürümü otomatik olarak algılamaya çalışırken CLI'nın kullanması gereken Info.plist dosyasının göreli yolunu belirtir. CLI projenin Info.plist dosyasını "standart" React Native projelerinde otomatik olarak bulabildiği ve ortam başına plist dosyalarını (örneğin, STAGING-Info.plist) desteklemek için parametresini kullanabileceğiniz --plistFilePrefix için bu parametre yalnızca gelişmiş senaryolara yöneliktir. Ancak, projenin plist'i rastgele bir konumda bulunuyorsa, CLI bulamıyorsa, bu parametreyi kullanmak, parametreyi açıkça ayarlamanıza gerek kalmadan CodePush güncelleştirmelerini yayınlamaya devam etmenize --target-binary-version olanak tanır.

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

İpucu

Bu parametre veya kullanılarak --plist-file ayarlanabilir -p*

Plist dosya ön eki parametresi (yalnızca iOS)

Bu parametre, yayın için hedef ikili sürümü otomatik olarak algılamaya çalışırken CLI'nın kullanması gereken Info.plist dosyasının dosya adı ön ekini belirtir. Ortam başına plist dosyaları (örneğin , DEV-Info.plist, STAGING-Info.plist) oluşturduysanız ve parametreyi açıkça ayarlamanıza --target-binary-version gerek kalmadan CodePush güncelleştirmelerini yayınlamak istiyorsanız bu yararlı olabilir. BIR --plist-file-prefixbelirterek, CLI şu konumlarda Info.plist (varsayılan davranıştır) yerine adlı <prefix>-Info.plistbir dosya arar: ./ios ve ./ios/<appName>. Projenin plist dosyası bu dizinlerden birinde değilse (örneğin, uygulamanız eklenmiş RN görünümlerine sahip yerel bir iOS uygulamasıysa) veya tamamen farklı bir dosya adlandırma kuralı kullanıyorsa parametresini --plist-file kullanmayı göz önünde bulundurun.

# 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-"

Kaynak eşleme çıkış parametresi

Bu parametre, oluşturulan JS paketinin kaynak eşleme dosyasının yazılması gereken göreli yolu belirtir. Belirtilmemiş olarak bırakılırsa kaynak eşlemeler oluşturulmaz.

İpucu

Bu parametre veya kullanılarak --sourcemap-output ayarlanabilir -s*

Derleme yapılandırma adı

Bu sürümü hedeflemek istediğiniz ikili sürümü belirten derleme yapılandırmasının adı. Örneğin, "Hata Ayıkla" veya "Yayın" (yalnızca iOS).

Not

Bu parametre, Xcode tarafından kullanılan varsayılan yapılandırmayı geçersiz kılmak için Xcode 11 ve üzeri ile oluşturulurken kullanılmalıdır.

Güncelleştirmeler Serbest Bırakılıyor (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]

Komutrelease-cordova, "vanilla" release komutunun Cordova'ya özgü bir sürümüdür ve aynı parametrelerin tümünü (örneğin , --mandatory--description) destekler, ancak aşağıdaki ek görevleri gerçekleştirerek güncelleştirmeleri yayınlama işlemini basitleştirir:

  1. cordova prepare CodePush sunucusunda yayımlanacak güncelleştirme içeriğini (www klasörü) oluşturmak için (veya phonegap prepare) komutunu çalıştırma.

  2. targetBinaryVersion Projenin config.xml dosyasında belirtilen sürüm adını kullanarak bu sürümün çıkarılmasını sağlayın.

Komutun release-cordova oluşturabileceği farkı göstermek için, aşağıdaki örnekte "vanilla" release komutunu kullanarak cordova uygulaması için nasıl güncelleştirme oluşturup yayımlayabileceğiniz gösterilmektedir:

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

komutuyla eşdeğer bir davranış elde release-cordova etmek için aşağıdaki komut gerekir ve bu daha az hataya açıktır:

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

Uygulama adı parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Dağıtım adı parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Açıklama parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Zorunlu parametre

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Yinelenen yayın hatası parametresi yok

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Rollout parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır. Belirtilmemiş olarak bırakılırsa, sürüm tüm kullanıcılar tarafından kullanılabilir hale getirilecektir.

Hedef ikili sürüm parametresi

Yukarıdaki bölümde açıklanan parametreyle aynıdır. Belirtilmemiş olarak bırakılırsa, komut varsayılan olarak projenin meta verilerinde yalnızca belirtilen sürümü hedeflemektir (bu güncelleştirme iOS istemcileri içinse Info.plist ve Android istemcileri için build.gradle ).

Devre dışı bırakılmış parametre

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Derleme parametresi

Bu parametre, güncelleştirilmiş web varlıklarınızı oluştururken (varsayılan davranış budur) yerine cordova prepare çalıştırmak cordova build isteyip istemediğinizi belirtir. Projeniz derleme kancalarından önce veya sonra (örneğin, TypeScript'i çevirmek için) içeriyorsa ve bu nedenle CodePush çalıştırması cordova prepare yapmak güncelleştirme oluşturmak ve yayınlamak için yeterli değildir. Belirtilmemiş olarak bırakılırsa, varsayılan olarak falseolur.

İpucu

Bu parametre veya kullanılarak --build ayarlanabilir -b*

Güncelleştirme Meta Verilerine Düzeltme Eki Uygulama

Bir güncelleştirmeyi yayınladıktan sonra, bir veya daha fazla meta veri özniteliğini değiştirmek istediğiniz senaryolar olabilir (örneğin, kritik bir hata düzeltmesini zorunlu olarak işaretlemeyi unuttunuz, güncelleştirmenin dağıtım yüzdesini artırmak istiyorsunuz). Aşağıdaki komutu çalıştırarak bunu kolayca yapabilirsiniz:

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]

Not

Bu komut, bir yayının gerçek güncelleştirme içeriğinin (örneğin, www Cordova uygulamasının klasörü) değiştirilmesine izin vermez. Bozuk olarak tanımlanan bir sürüme yanıt vermek istiyorsanız geri alma komutunu kullanarak hemen geri almalı ve gerekirse uygun düzeltmeyi içeren yeni bir güncelleştirme yayımlamalısınız.

ve deploymentNamedışında <ownerName>/<appName> tüm parametreler isteğe bağlıdır ve bu nedenle, tek bir özniteliği veya tümünü aynı anda güncelleştirmek için bu komutu kullanabilirsiniz. patch Herhangi bir öznitelik bayrağı belirtmeden komutun çağrılması işlem yapılmamasıyla sonuçlanır.

# 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%

Etiket parametresi

Belirtilen dağıtımda hangi sürümü (örneğin, v23) güncelleştirmek istediğinizi gösterir. Atlanırsa, istenen değişiklikler belirtilen dağıtımdaki en son sürüme uygulanır. Güncelleştirmek istediğiniz sürümün etiketini aramak için komutunu çalıştırabilir appcenter codepush deployment history ve sütuna Label bakabilirsiniz.

Zorunlu parametre

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve sürümün zorunlu kabul edilip edilmemesi gerektiğini güncelleştirmenize olanak tanır. ve --mandatory true öğesinin eşdeğer olduğuna --mandatory dikkat edin, ancak bu bayrağın olmaması ile --mandatory falseeşdeğer değildir. Parametresi atlanırsa, hedef sürümün zorunlu özelliğinin değerinde hiçbir değişiklik yapılmaz. Bir yayını açıkça isteğe bağlı hale getirmek için bu parametreyi --mandatory false olarak ayarlayın.

Açıklama parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve sürümün açıklamasını güncelleştirmenize olanak tanır (örneğin, yayınlarken yazım hatası yaptınız veya açıklama eklemeyi unuttunuz). Bu parametre atlanırsa, hedef sürümün description özelliğinin değerinde değişiklik yapılmaz.

Devre dışı bırakılmış parametre

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve sürümün devre dışı bırakılıp bırakılmayacağını güncelleştirmenizi sağlar. Dikkat edin --disabled ve --disabled true eşdeğerdir, ancak bu bayrağın olmaması ile --disabled falseeşdeğer değildir. Parametresi atlanırsa, hedef sürümün devre dışı özelliğinin değerinde değişiklik yapılmaz. Bu parametreyi --disabled false , daha önce devre dışı bırakılmışsa, yayın alınabilir duruma getirmek için olarak ayarlayın.

Rollout parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve hedef sürümün piyasaya çıkma yüzdesini artırmanıza olanak tanır. Bu parametre yalnızca değeri geçerli dağıtım değerinden büyük olan bir tamsayıya ayarlanabilir. Ayrıca, dağıtımı "tamamlamak" ve yayını herkesin kullanımına açmak istiyorsanız, bu parametreyi olarak --rollout 100ayarlayabilirsiniz. Bu parametre atlanırsa, hedef sürümün dağıtım parametresinin değerinde değişiklik yapılmaz.

Buna ek olarak, yukarıda belirtildiği gibi, bir güncelleştirmeyi piyasaya çıkarma değeri olmadan yayımladığınızda, dağıtımı 100olarak ayarlamaya eşdeğer olarak değerlendirilir. Bir güncelleştirmeyi piyasaya çıkarma olmadan yayımladıysanız, bunun rollout özelliğini komutu aracılığıyla patch değiştiremezsiniz çünkü bu, dağıtım yüzdesini düşürme olarak kabul edilir.

Hedef ikili sürüm parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve bir sürümün hangi ikili sürümlerle uyumlu olduğunu belirten semver aralığını güncelleştirmenize olanak tanır. Bu, ilk olarak bir güncelleştirmeyi yayımlarken bir hata yaptıysanız (örneğin, belirttiyseniz 1.0.0 ama demek istediyseniz 1.1.0) veya bir sürümün desteklediği sürüm aralığını artırmak veya azaltmak istiyorsanız (örneğin, bir sürümün artık birlikte 1.1.2 çalışmadığını keşfettiyseniz) yararlı olabilir. Bu parametre atlanırsa, hedef sürümün sürüm özelliğinin değerinde hiçbir değişiklik yapılmaz.

# 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"

Güncelleştirmeler Yükseltme

Belirli bir dağıtımda (örneğin, Staging) bir güncelleştirmeyi test ettikten ve bunu "aşağı akış" olarak yükseltmek istediğinizde (örneğin, geliştirme hazırlama>, hazırlama-üretim>), yayını bir dağıtımdan diğerine kopyalamak için aşağıdaki komutu kullanabilirsiniz:

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] 

komut, promote hedef dağıtım için kaynak dağıtımın en son sürümündeki tam kodu ve meta verileri (açıklama, zorunlu ve hedef ikili sürüm) içeren yeni bir sürüm oluşturur. Bir güncelleştirmeyi bir ortamdan release diğerine "el ile" geçirmek için komutunu kullanabilirsiniz ancak komutun promote aşağıdaki avantajları vardır:

  1. Yayımlamak istediğiniz yayın varlıklarını yeniden birleştirmeniz veya kaynak dağıtımın sürümüne yönelik açıklamayı/ikili sürümü anımsamanız gerekmediğinden daha hızlıdır.

  2. Yükseltme işlemi, kaynak dağıtımda zaten test ettiğiniz şeyin (örneğin, Staging) hedef dağıtımda etkin olmasını sağladığından daha az hataya açıktır (örneğin, Production).

Tüm kullanıcıların otomatik olarak oluşturulan Staging ve Production ortamlardan yararlanmasını ve tüm sürümleri doğrudan öğesine Stagingve ardından promote uygun testten Staging sonrasına gerçekleştirmesini Production öneririz.

Açıklama parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve yükseltilen sürüm için kullanılacak açıklamayı geçersiz kılmanıza olanak tanır. Belirtilmemişse, yeni sürüm yükseltilmekte olan sürümden açıklamayı devralır.

Devre dışı bırakılmış parametre

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve yükseltilen sürüm için kullanılacak devre dışı bayrağının değerini geçersiz kılmanıza olanak tanır. Belirtilmemişse, yeni sürüm yükseltilmekte olan yayından disabled özelliğini devralır.

Zorunlu parametre

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve yükseltilen sürüm için kullanılacak zorunlu bayrağı geçersiz kılmanıza olanak tanır. Belirtilmezse, yeni sürüm yükseltilmekte olan yayından zorunlu özelliği devralır.

Yinelenen yayın hatası parametresi yok

Yukarıdaki bölümde açıklanan parametreyle aynıdır.

Rollout parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve yeni oluşturulan sürümün kullanıcılarınızın yalnızca bir bölümü için kullanılabilir duruma getirilip getirilmeyeceğini belirtmenize olanak tanır. Diğer yayın meta veri parametrelerinden (örneğin, ) rollout farklı olarak, descriptionbir yayının sürümü yükseltme kapsamında taşınmaz/devralınır ve bu nedenle, yeni oluşturulan sürümün tüm kullanıcılarınız tarafından kullanılabilir olmasını istemiyorsanız bunu açıkça ayarlamanız gerekir.

Hedef ikili sürüm parametresi

Bu, yukarıdaki bölümde açıklanan parametreyle aynıdır ve yükseltilen sürüm için kullanılacak hedef ikili sürümü geçersiz kılmanıza olanak tanır. Belirtilmemişse, yeni sürüm yükseltilmekte olan yayından hedef ikili sürüm özelliğini devralır.

# 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 "*"

Güncelleştirmeler Geri Dönme

Dağıtımın yayın geçmişi sabittir, bu nedenle bir güncelleştirmeyi yayımlandıktan sonra silemez veya kaldıramazsınız. Ancak, bozuk veya istenmeyen özellikler içeren bir güncelleştirme yayınlarsanız, komutunu kullanarak rollback geri almak kolaydır:

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

Bu komutun yürütülmesi, dağıtım için en son sürümden önceki sürümle aynı kodu ve meta verileri içeren yeni bir sürüm oluşturur. Örneğin, uygulamanızda aşağıdaki güncelleştirmeleri yayımladığınızdan eminim:

Yayınla Description Zorunlu
v1 İlk sürüm! Yes
v2 Yeni özellik eklendi No
v3 Hata düzeltmeleri Yes

Bu dağıtımda rollback komutunu çalıştırdıysanız, yayının içeriğini v2 içeren yeni bir sürüm (v4) oluşturulur.

Yayınla Description Zorunlu
v1 İlk sürüm! Yes
v2 Yeni özellik eklendi No
v3 Hata düzeltmeleri Yes
v4 (v3'ten v2'ye geri alma) Yeni özellik eklendi No

Önceden edinilen v3 son kullanıcılar, uygulama bir güncelleştirme denetimi yaparken artık "geri taşınır" v2 . Buna ek olarak, hala çalıştıran v2ve bu nedenle hiç almamış v3olan kullanıcılar, en son sürümü zaten çalıştırdıkları için güncelleştirme almazlar (bu nedenle güncelleştirme denetimimiz yayın etiketine ek olarak paket karması kullanır).

Dağıtımı önceki sürümden farklı bir sürüme geri almak istiyorsanız (örneğin, v3 ->v2), isteğe bağlı --target-release parametresini belirtebilirsiniz:

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

Not

Geri alma tarafından üretilen sürüm, daha kolay tanımlanmasına yardımcı olmak için komutun çıkışında deployment history ek açıklama eklenir.

Yayın Geçmişini Görüntüleme

Aşağıdaki komutu kullanarak belirli bir uygulama dağıtımı için en son 50 sürümün geçmişini görüntüleyebilirsiniz:

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

Geçmiş, her sürümle ilgili tüm öznitelikleri (örneğin, etiket, zorunlu) görüntüler ve yükseltme veya geri alma işlemi nedeniyle herhangi bir yayın yapılıp yapılmadığını gösterir.

Dağıtım Geçmişi

Ayrıca, geçmiş her sürüm için yükleme ölçümlerini görüntüler. Yukarıdaki komutun belgelerinde deployment list ölçüm verilerini yorumlama hakkındaki ayrıntıları görüntüleyebilirsiniz.

Yayın Geçmişini Temizleme

Aşağıdaki komutu kullanarak dağıtımın yayın geçmişini temizleyebilirsiniz:

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

Bu komutu çalıştırdıktan sonra, ilişkili dağıtım anahtarını kullanarak güncelleştirmeleri alacak şekilde yapılandırılmış istemci cihazları artık temizlenmiş güncelleştirmeleri almaz. Bu komut geri alınamaz ve bu nedenle üretim dağıtımında kullanılmamalıdır.

Kod İmzalama

Nedir o?

Kod imzalama, daha sonra yüklemeden önce istemci tarafında doğrulanabilen paketler için dijital imzalar oluşturmanın bir yoludur.

Neden ihtiyacımız var?

Geliştiriciler, gönderdikleri kodun yazdıkları kod olduğunu bilmek ister. Kod imzalama, bu tür bir güvence sağlamaya yönelik birincil mekanizmadır ve ortadaki adam saldırıları sınıfının tamamını azaltmaya veya ortadan kaldırmaya yardımcı olabilir.

Nasıl çalışır?

İlk olarak geliştirici bir asimetrik anahtar çifti oluşturur: özel anahtar, paketleri imzalamak için kullanılır; paket imzası doğrulaması için ortak anahtar. Ardından CodePush CLI, release-react ve release-cordova komutları sırasında releasepaketleri imzalamak için özel anahtarı kullanır. Ortak anahtar mobil uygulamayla birlikte gönderilir. Anahtarların oluşturulması ve yönetimi üzerinde denetim geliştiricinin elindedir.

Yayın komutunun sonunda CLI, paketin içerik karması hesaplar ve bu değeri özel anahtarla imzalanmış bir JWT'ye yerleştirir. CodePush eklentisi bir cihaza paket indirdiğinde, JWT'yi .codepushrelease içeren dosyayı denetler ve ortak anahtarı kullanarak JWT imzasını doğrular. Doğrulama başarısız olursa güncelleştirme yüklenmez.

Bu özelliği kullanma gereksinimleri

Bu özelliği kullanmayı planlıyorsanız aşağıdaki adımları uygulayın:

  1. Dahil olmak üzere yeni ikili güncelleştirme oluşturma

    • CodePush eklentisi kod imzalamayı destekleyen güncelleştirildi
    • kod gönderme sdk'nızı ortak anahtarınızı kullanacak şekilde yapılandırın (ayrıntılar için ilgili React Native SDK (iOS, Android) veya Cordova SDK bölümlerine bakın)
  2. Yeni ikili sürümü hedefleyen ve (veya -k) parametre değerini belirten yeni bir --private-key-path CodePush güncelleştirmesi oluşturma

SDK/CLI'nızda kod imzalama özelliğinin desteklenip desteklenmediğini belirlemek için uyumluluk tablolarımıza bakın:

CodePush SDK Kod İmzalama'nın desteklediği sürüm Desteklenen Platformlar Minimum CodePush CLI sürümü gereklidir
react-native-code-push 5.1.0 Android, iOS 2.1.0
cordova-plugin-code-push 1.10.0 Android, iOS 2.1.2

Anahtar oluşturma

Kod imzalama, imzalama için PEM kodlanmış RSA anahtarlarını (sertifika olmayanlar) destekler. Bunları aşağıda gösterildiği gibi openssl aracılığıyla oluşturabilirsiniz:

# 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

Oluşturulan anahtarlar örneği:

# 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-----

İmzalı güncelleştirme yayınlıyor

İmzalı güncelleştirmeyi yayınlamak için veya komutu için releaserelease-react (veya -k) seçeneğini kullanmanız --private-key-path gerekir.