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
- yüklemeNode.js
- App Center CLI'sını yükleyin:
npm install -g appcenter-cli
Başlarken
- App Center hesabı oluşturun veya komutunu kullanarak
appcenter login
CLI aracılığıyla oturum açın. - Uygulamanızı CodePush'a kaydedin ve isteğe bağlı olarak uygulamanızı ekibinizdeki diğer geliştiricilerle paylaşın .
- CodePush-ify uygulamanızı kullanın ve kullanmak istediğiniz dağıtıma (Apache Cordova ve React Native) işaret edin.
- 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-current
hangi 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:
- App Center portalında, ortak çalışanları eklemek istediğiniz uygulamayı seçin
- Sayfanın sol tarafındaki gezinti alanında Ayarlar'a tıklayın
- Ortak Çalışanlar bağlantısına tıklayın
- 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:
- Uygulamayı, ortak çalışanlarını, dağıtımlarını ve yayın geçmişini görüntüleme
- Uygulamanın dağıtımlarından herhangi birine yönelik güncelleştirmeleri yayınla
- Uygulamanın dağıtımlarından herhangi biri arasında güncelleştirme yükseltme
- Uygulamanın dağıtımlarından herhangi birini geri alma
- 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:
- Uygulamayı yeniden adlandırma veya silme
- Uygulama içinde yeni dağıtımlar oluşturma, yeniden adlandırma veya silme
- Dağıtımın yayın geçmişini temizleme
- 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, release
promote
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ıktannotifyApplicationReady
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 recorded
bu, 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:
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.React Native - Genel yayın komutuyla aynı işlevselliği kullanır, ancak hem hem de
react-native bundle
appcenter codepush release
komutunu ç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.Cordova - Genel yayın komutuyla aynı işlevselliği kullanır, ancak hem (veya
phonegap prepare
)appcenter codepush release
hem decordova 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:
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.
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) | CFBundleShortVersionString Info.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 0
2.0 -> 2.0.0
sahip 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 Staging
kullanılır, ancak öğesine veya kendi özel dağıtımlarınızdan birine dağıtmaya Production
hazır olduğunuzda bu bağımsız değişkeni açıkça ayarlayın.
İpucu
parametresi veya -d
kullanı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 --description
ayarlanabilir.
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 sync
kullanı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 -x
kullanı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 v1
ve 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 v2
davranış önemlidir. Zorunlu hale gelen v2
her şey, henüz edinmemiş v2
olan herkes için zorunlu hale getirmektedirv3
.
Bir son kullanıcı şu anda çalıştırıyorsa v2
ve bir güncelleştirme için sunucuyu sorgularsa, ile v3
yanı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 v3
değ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 mandatory
iş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 optional
dö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 100
arası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:
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 olarak100
ayarlanması) gerekir.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".
ve alanlarının
mandatory
aksine, bir yayını bir dağıtımdan diğerine yükselttiğinizde özelliği yayılmazrollout
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ızdapromote
bunu açıkça ayarlamanızdescription
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:
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 ilgilireact-native bundle
parametreleri de kullanıma sunar (örneğin,--sourcemap-output
).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-prefix
belirterek, CLI şu konumlarda Info.plist (varsayılan davranıştır) yerine adlı <prefix>-Info.plist
bir 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:
cordova prepare
CodePush sunucusunda yayımlanacak güncelleştirme içeriğini (www klasörü) oluşturmak için (veyaphonegap prepare
) komutunu çalıştırma.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 false
olur.
İ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 deploymentName
dışı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 false
eş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 false
eş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 100
ayarlayabilirsiniz. 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ı 100
olarak 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:
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.
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 Staging
ve 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, description
bir 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 v2
ve bu nedenle hiç almamış v3
olan 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.
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 release
paketleri 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:
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)
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 release
release-react
(veya -k
) seçeneğini kullanmanız --private-key-path
gerekir.