Vydávání aktualizací CodePush pomocí rozhraní příkazového řádku app center

Důležité

31. března 2025 je naplánované vyřazení z provozu. I když můžete dál používat Visual Studio App Center, dokud ho úplně vyřadíte, existuje několik doporučených alternativ, na které můžete zvážit migraci.

Přečtěte si další informace o časových osách a alternativách podpory.

Instalace

  • Instalace Node.js
  • Nainstalujte rozhraní příkazového řádku App Center: npm install -g appcenter-cli

začínáme

  1. Vytvořte účet App Center nebo se přihlaste přes rozhraní příkazového řádku pomocí appcenter login příkazu .
  2. Zaregistrujte aplikaci v CodePush a volitelně ji sdílejte s dalšími vývojáři ve vašem týmu.
  3. CodePush-ify vaši aplikaci a nasměrujte ji na nasazení, které chcete použít (Apache Cordova a React Native).
  4. Uvolněte a aktualizujte aplikaci.

Správa účtů

Než začnete vydávat aktualizace aplikací, přihlaste se pomocí stávajícího účtu CodePush nebo vytvořte nový účet App Center. Po instalaci rozhraní příkazového řádku to můžete provést spuštěním následujícího příkazu:

appcenter login

Tento příkaz spustí prohlížeč a požádá vás o ověření pomocí účtu GitHub nebo Microsoft. Po ověření vytvoří účet CodePush propojený s vaší identitou GitHubu nebo MSA a vygeneruje přístupový klíč, který můžete zkopírovat nebo vložit do rozhraní příkazového řádku a přihlásit se.

Poznámka

Po registraci jste automaticky přihlášeni pomocí rozhraní příkazového řádku, takže dokud se explicitně neodhlásíte, nemusíte se znovu přihlašovat ze stejného počítače.

Authentication

Většina příkazů v rozhraní příkazového řádku App Center vyžaduje ověření, takže než začnete spravovat svůj účet, přihlaste se pomocí účtu GitHub nebo Microsoft, který jste použili při registraci. Můžete to udělat spuštěním následujícího příkazu:

appcenter login

Tento příkaz spustí okno prohlížeče s žádostí o ověření pomocí účtu GitHub nebo Microsoft. Vygeneruje přístupový klíč pro zkopírování a vložení do rozhraní příkazového řádku (zobrazí se výzva). Teď jste úspěšně ověřeni a můžete bezpečně zavřít okno prohlížeče.

Kdykoli budete chtít zkontrolovat, jestli už jste přihlášení, můžete spuštěním následujícího příkazu zobrazit e-mailovou adresu pro aktuální relaci ověřování, uživatelské jméno a zobrazované jméno:

appcenter profile list

Když se přihlásíte z rozhraní příkazového řádku, váš přístupový klíč se po dobu trvání relace zachová na disku, abyste se nemuseli přihlašovat při každém pokusu o přístup ke svému účtu. Pokud chcete ukončit relaci a odstranit tento přístupový klíč, spusťte následující příkaz:

appcenter logout

Pokud se zapomenete odhlásit z počítače, na kterém nechcete nechat spuštěnou relaci (například přenosný počítač vašeho přítele), můžete použít následující příkazy k výpisu a odebrání aktuálních relací přihlášení.

appcenter tokens list
appcenter tokens delete <machineName>

Přístupové tokeny

Pokud chcete provést ověření ve službě CodePush bez spuštění prohlížeče nebo bez použití přihlašovacích údajů GitHubu nebo Microsoftu (například v prostředí CI), můžete spuštěním následujícího příkazu vytvořit "přístupový token" (spolu s názvem popisujícím, k čemu je určený):

appcenter tokens create -d "Azure DevOps Integration"

Klíč se zobrazí jenom jednou, takže ho nezapomeňte v případě potřeby někam uložit. Po vytvoření nového klíče můžete zadat jeho hodnotu pomocí příznaku --tokenlogin příkazu, který umožňuje používat "bezhlavé" ověřování místo spuštění prohlížeče.

appcenter login --token <accessToken>

Při přihlašování pomocí této metody přístupový token automaticky nevrátí platnost při odhlášení a je možné ho použít v budoucích relacích, dokud ho explicitně neodeberete ze serveru App Center. Po dokončení relace byste se ale měli odhlásit a odebrat přihlašovací údaje z disku.

Správa aplikací

Před nasazením aktualizací vytvořte pomocí app center aplikaci pomocí následujícího příkazu:

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

Pokud vaše aplikace cílí na Android i iOS, důrazně doporučujeme vytvořit samostatné aplikace pomocí CodePush. Jeden pro každou platformu. Tímto způsobem můžete spravovat a vydávat aktualizace pro ně samostatně, což z dlouhodobého hlediska má tendenci věci zjednodušit. Většina lidí název aplikace -Android zadá pomocí a -iOS. Například:

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

Poznámka

Použití stejné aplikace pro Android a iOS může způsobit výjimky instalace, protože balíček aktualizace CodePush vytvořený pro iOS bude mít jiný obsah než aktualizace pro Android.

Tip

Jednou z důležitých nových funkcí v rozhraní příkazového řádku app center je možnost nastavit aplikaci jako aktuální aplikaci pomocí appcenter apps set-current <ownerName>/<appName>. Když nastavíte aplikaci jako aktuální aplikaci, nemusíte používat -a příznak v jiných příkazech rozhraní příkazového řádku. Příkaz appcenter codepush deployment list -a <ownerName>/<appName> se například dá zkrátit na appcenter codepush deployment list , když je nastavená aktuální aplikace. Pomocí nástroje můžete zkontrolovat, která aplikace je nastavená jako aktuální aplikace appcenter apps get-currentvašeho účtu. Nastavení aktuální aplikace zkrátí psaní většiny příkazů ROZHRANÍ PŘÍKAZOVÉHO ŘÁDKU.

U původního CodePush měly aplikace automaticky dvě nasazení (Staging a Production). V App Center je nutné je vytvořit sami pomocí následujících příkazů:

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

Po vytvoření nasazení můžete získat přístup k klíčům nasazení pro obě nasazení pomocí appcenter codepush deployment list --displayKeysnástroje , který můžete začít používat ke konfiguraci mobilních klientů prostřednictvím příslušných sad SDK (podrobnosti o Cordově a React Native).

Pokud se rozhodnete, že se vám název aplikace nelíbí, můžete ji kdykoli přejmenovat pomocí následujícího příkazu:

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

Upozornění

Změna názvu aplikace může generovat neočekávané problémy s konfigurací a sestaveními větve po dobu přibližně 48 hodin.

Pokud už nějakou aplikaci nepotřebujete, můžete ji ze serveru odebrat pomocí následujícího příkazu:

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

Při provádění tohoto příkazu buďte opatrní, protože všechny aplikace, které jsou nakonfigurované pro jeho použití, přestanou dostávat aktualizace.

Pokud chcete zobrazit seznam všech aplikací, které jste zaregistrovali na serveru App Center, spusťte následující příkaz:

appcenter apps list

Spolupráce s aplikacemi

Pokud budete spolupracovat s dalšími vývojáři na stejné aplikaci CodePush, můžete je přidat jako spolupracovníky pomocí portálu App Center podle následujících pokynů:

  1. Na portálu App Center vyberte aplikaci, do které chcete přidat spolupracovníky.
  2. V navigační oblasti na levé straně stránky klikněte na Nastavení.
  3. Klikněte na odkaz Spolupracovníci .
  4. V nabídce spolupracovníci zadejte e-mailové adresy spolupracovníků, kteří je mají pozvat.

Důležité

Funkce Spolupracovníci App Center očekávají, že každý spolupracovník už je zaregistrovaný v App Center pomocí zadané e-mailové adresy.

Po přidání budou mít všichni spolupracovníci ve sdílené aplikaci okamžitě následující oprávnění:

  1. Zobrazení aplikace, jejích spolupracovníků, nasazení a historie verzí
  2. Vydání aktualizací pro jakékoli nasazení aplikace
  3. Zvýšení úrovně aktualizace mezi nasazeními aplikace
  4. Vrácení jakéhokoli nasazení aplikace zpět
  5. Oprava všech vydaných verzí v rámci libovolného nasazení aplikace

Spolupracovníci nemůžou provádět žádnou z následujících akcí:

  1. Přejmenování nebo odstranění aplikace
  2. Vytvoření, přejmenování nebo odstranění nových nasazení v rámci aplikace
  3. Vymazání historie verzí nasazení
  4. Přidání nebo odebrání spolupracovníků z aplikace (*)

Poznámka

Vývojář může sám sebe odebrat jako spolupracovníka z aplikace, která s ním byla sdílena.

Pokud už s vámi někdo nepracuje na aplikaci, můžete ho časem odebrat jako spolupracovníka pomocí této nabídky spolupracovníka na portálu.

Kdykoli budete chtít zobrazit seznam všech spolupracovníků, kteří byli přidáni do aplikace, můžete navštívit nabídku spolupracovníků na portálu.

Správa nasazení

Z pohledu CodePush je aplikace pojmenovaným seskupením pro jedno nebo více "nasazení". I když aplikace představuje koncepční "obor názvů" nebo "obor" pro konkrétní verzi aplikace specifické pro platformu (například port aplikace Foo pro iOS), její nasazení představují skutečný cíl pro vydávání aktualizací (pro vývojáře) a synchronizaci aktualizací (pro koncové uživatele). Nasazení umožňují mít v daném okamžiku několik "prostředí" pro každou aplikaci a pomáhají modelovat realitu, kterou aplikace obvykle přesouvají z osobního prostředí vývojáře na testovací, qa nebo přípravné prostředí, než se nakonec dostanou do produkčního prostředí.

Poznámka

Jak uvidíte níže, releasepříkazy a promoterollback vyžadují, aby fungovaly název aplikace i název nasazení, protože je to kombinace těchto dvou, která jednoznačně identifikuje distribuční bod (například chci vydat aktualizaci aplikace pro iOS pro mé beta testery).

Kdykoli je aplikace zaregistrovaná ve službě CodePush, doporučujeme vytvořit následující nasazení: Staging a Production. To vám umožní začít vydávat aktualizace do interního prostředí, kde můžete důkladně otestovat každou aktualizaci před jejich odesláním koncovým uživatelům. Tento pracovní postup je důležitý pro zajištění připravenosti vydaných verzí pro hromadnou spotřebu a jedná se o postup, který je na webu zaveden již dlouhou dobu.

Pokud je pro vaše potřeby dostačující pracovní a produkční verze aplikace, nemusíte dělat nic jiného. Pokud ale chcete nasazení alfa, dev atd., můžete je snadno vytvořit pomocí následujícího příkazu:

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

Podobně jako u aplikací můžete i nasazení odebrat a přejmenovat pomocí následujících příkazů:

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

Kdykoli budete chtít zobrazit seznam nasazení, která konkrétní aplikace obsahuje, můžete spustit následující příkaz:

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

Metriky instalace mají následující význam:

  • Aktivní – počet úspěšných instalací, na kterých je aktuálně spuštěná tato verze (pokud uživatel aplikaci otevřel, zobrazila by se nebo spustila tato verze). Toto číslo se změní s tím, jak koncoví uživatelé upgradovali na tuto verzi nebo mimo tuto verzi. Tato metrika ukazuje celkový počet aktivních uživatelů i procento z celkové cílové skupiny, které představuje. To usnadňuje určení distribuce aktualizací, které vaši uživatelé aktuálně používají, a také odpovědi na otázky typu "Kolik mých uživatelů obdrželo moji nejnovější aktualizaci?".

  • Total – celkový počet úspěšných instalací, které tato aktualizace celkově přijala. Toto číslo se vždy zvyšuje jenom s tím, jak ho noví uživatelé nebo zařízení instalují, takže je vždy nadmnožinou celkového počtu aktivních uživatelů. Aktualizace se považuje za úspěšnou, jakmile notifyApplicationReady byla nainstalována (nebo sync). V okamžiku, kdy je aktualizace stažena a je označena jako úspěšná, se bude hlásit jako čekající aktualizace (podrobnosti najdete níže).

  • Čeká na vyřízení – kolikrát se tato verze stáhla, ale ještě nebyla nainstalovaná (aplikace se kvůli použití změn restartovala). Tato metrika se tedy zvyšuje při stahování aktualizací a s instalací odpovídajících stažených aktualizací klesá. Tato metrika se primárně vztahuje na aktualizace, které nejsou nakonfigurované tak, aby se nainstalovaly okamžitě, a pomáhá poskytnout širší přehled o přijetí verze pro aplikace, které při instalaci aktualizace spoléhají na obnovení nebo restartování aplikace (například chci vrátit aktualizaci zpět a zajímá mě, jestli si ji někdo ještě stáhl). Pokud jste nakonfigurovali aktualizace tak, aby se nainstalovaly okamžitě, ale stále se zobrazují čekající aktualizace, je pravděpodobné, že při spuštění aplikace nevoláte notifyApplicationReady (nebo sync), což je metoda, která začne posílat sestavy instalace a označí nainstalované aktualizace jako považované za úspěšné.

  • Vrácení zpět – kolikrát byla tato verze automaticky vrácena zpět na klientovi. V ideálním případě by toto číslo mělo být nula a v takovém případě se tato metrika ani nezobrazuje. Pokud jste ale vydali aktualizaci, která v rámci procesu instalace obsahuje chybu, modul plug-in CodePush vrátí koncového uživatele zpět k předchozí verzi a ohlásí tento problém serveru. To umožňuje koncovým uživatelům zůstat odblokované, pokud dojde k přerušení verzí, a když se tato telemetrie zobrazí v rozhraní příkazového řádku, můžete identifikovat chybné verze a reagovat na ně jejich vrácením zpět na server.

  • Uvedení – udává procento uživatelů, kteří mají nárok na tuto aktualizaci. Tato vlastnost se zobrazí jenom u verzí, které představují "aktivní" uvedení, a proto mají procento uvedení menší než 100 %. Navíc vzhledem k tomu, že nasazení může mít v daném okamžiku pouze jedno aktivní zavedení, bude tento popisek k dispozici pouze v nejnovější verzi v rámci nasazení.

  • Zakázáno – označuje, jestli je verze označená jako zakázaná, a proto ji koncoví uživatelé můžou stáhnout. Tato vlastnost se zobrazí pouze u verzí, které jsou zakázané.

Když buňka metriky hlásí No installs recorded, znamená to, že server pro tuto verzi neviděl žádnou aktivitu. Důvodem může být buď to, že se vyloučily verze modulů plug-in, které zahrnovaly podporu telemetrie, nebo se zatím se serverem CodePush nesynchronovali žádní koncoví uživatelé. Jakmile dojde k instalaci, v rozhraní příkazového řádku se začnou zobrazovat metriky pro tuto verzi.

Vydává se Aktualizace

Jakmile je vaše aplikace nakonfigurovaná tak, aby se dotazovala na aktualizace na serveru App Center, můžete pro ni začít vydávat aktualizace. Kvůli jednoduchosti a flexibilitě rozhraní příkazového řádku App Center obsahuje tři různé příkazy pro vydávání aktualizací:

  1. Obecné – Uvolní aktualizaci serveru App Center, která byla vygenerována externím nástrojem nebo skriptem sestavení (například úlohou Gulp, příkazem react-native bundle ). To poskytuje největší flexibilitu, pokud jde o přizpůsobení do stávajících pracovních postupů, protože se výhradně zabývá kroky specifickými pro CodePush a proces kompilace konkrétní aplikace nechává na vás.

  2. React Native – používá stejné funkce jako obecný příkaz k vydání verze, ale také zpracovává úlohu generování aktualizovaného obsahu aplikace za vás (sadu a prostředky JS), a nevyžaduje spuštění obou react-native bundle verzí a pak appcenter codepush release.

  3. Cordova – používá stejné funkce jako obecný příkaz k vydání verze, ale také zpracovává úlohu přípravy aktualizace aplikace za vás, místo toho, abyste spustili oba cordova prepare příkazy (nebo phonegap prepare) a pak appcenter codepush release.

Který z těchto příkazů byste měli použít, je většinou otázkou požadavků nebo preference. Doporučujeme ale použít příslušný příkaz pro konkrétní platformu (protože to výrazně zjednodušuje prostředí) a potom použít příkaz pro obecné účely release , pokud je potřeba větší kontrola.

Poznámka

Klienti můžou zjistit a stáhnout pouze 50 nejnovějších verzí v nasazení.

Vydává se Aktualizace (obecné)

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]

Parametr názvu aplikace

Tento parametr určuje název aplikace App Center, pro kterou se tato aktualizace vydává. Pokud ho chcete vyhledat, můžete seznam aplikací zobrazit spuštěním appcenter apps list příkazu .

Aktualizovat parametr obsahu

Tento parametr určuje umístění aktualizovaného kódu aplikace a prostředků, které chcete vydat. Můžete zadat buď jeden soubor (například sadu JS pro aplikaci React Native), nebo cestu k adresáři (například /platforms/ios/www složku pro aplikaci Cordova). K nasazení těchto změn nemusíte zazipovat více souborů nebo adresářů, protože rozhraní příkazového řádku je za vás automaticky zkomprimuje.

Je důležité, aby cesta, kterou zadáte, odkazovala na připravenou/přiloženou verzi vaší aplikace specifickou pro platformu. Následující tabulka popisuje, který příkaz byste měli spustit před vydáním, a také umístění, na které můžete později odkazovat pomocí parametru updateContentsPath :

Platforma Příkaz Připravit Cesta k balíčku (vzhledem ke kořenovému adresáři projektu)
Cordova (Android) cordova prepare android ./platforms/android/assets/www Adresář
Cordova (iOS) cordova prepare ios ./platforms/ios/www Adresář
React Native wo/assets (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <bundleOutput> --dev false --bundle-output Hodnota možnosti
React Native s prostředky (Android) react-native bundle --platform android --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false --assets-dest Hodnota možnosti , která by měla představovat nově vytvořený adresář, který zahrnuje prostředky aplikace a sadu JS.
React Native wo/assets (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <bundleOutput> --dev false --bundle-output Hodnota možnosti
React Native s prostředky (iOS) react-native bundle --platform ios --entry-file <entryFile> --bundle-output <releaseFolder>/<bundleOutput> --assets-dest <releaseFolder> --dev false --assets-dest Hodnota možnosti , která by měla představovat nově vytvořený adresář, který zahrnuje prostředky aplikace a sadu JS.

Parametr cílové binární verze

Tento parametr určuje store nebo binární verzi aplikace, pro kterou vydáváte aktualizaci, takže aktualizaci dostanou jenom uživatelé, kteří používají danou verzi, zatímco uživatelé se starší nebo novější verzí binárního souboru aplikace ne. Je užitečná z následujících důvodů:

  1. Pokud uživatel používá starší binární verzi, je možné, že v aktualizaci CodePush došlo k zásadním změnám, které by nebyly kompatibilní s tím, co používá.

  2. Pokud uživatel používá novější binární verzi, předpokládá se, že to, co používá, je novější (a potenciálně nekompatibilní) s aktualizací CodePush.

Pokud byste někdy chtěli aktualizaci, která bude cílit na více verzí binárního souboru z Obchodu s aplikacemi, umožníme vám také zadat parametr jako výraz semver rozsahu. Tímto způsobem získá aktualizaci každé klientské zařízení s verzí binárního souboru, která splňuje výraz rozsahu (semver.satisfies(version, range) vrátí true). Příklady platných výrazů semver rozsahu jsou následující:

Výraz rozsahu Kdo aktualizaci získá
1.2.3 Jenom zařízení, na kterých běží konkrétní binární verze 1.2.3 vaší aplikace
* Všechna zařízení nakonfigurovaná pro využívání aktualizací z aplikace CodePush
1.2.x Zařízení s hlavní verzí 1, podverzi 2 a jakoukoli opravnou verzí aplikace
1.2.3 - 1.2.7 Zařízení s libovolnou binární verzí mezi 1.2.3 (inclusive) a 1.2.7 (inclusive)
>=1.2.3 <1.2.7 Zařízení s libovolnou binární verzí mezi 1.2.3 (včetně) a 1.2.7 (s výhradním přístupem)
1.2 Ekvivalent k >=1.2.0 <1.3.0
~1.2.3 Ekvivalent k >=1.2.3 <1.3.0
^1.2.3 Ekvivalent k >=1.2.3 <2.0.0

Poznámka

Pokud výraz semver aplikace začíná speciálním znakem prostředí nebo operátorem, jako >je , ^nebo ** *, nemusí se příkaz spustit správně, pokud nezabalíte hodnotu do uvozovek, protože prostředí neposkytne správné hodnoty našemu procesu rozhraní příkazového řádku. Proto je nejlepší zabalit parametr aplikace targetBinaryVersion do dvojitých uvozovek při volání release příkazu, appcenter codepush release -a <ownerName>/<appName> updateContents ">1.2.3"například .

Následující tabulka popisuje hodnotu verze, kterou CodePush očekává, že rozsah semver vaší aktualizace bude vyhovovat pro každý příslušný typ aplikace:

Platforma Zdroj binární verze
Cordova Atribut <widget version> v souboruconfig.xml
React Native (Android) Vlastnost android.defaultConfig.versionName v souboru build.gradle projektu
React Native (iOS) Klíč CFBundleShortVersionString v souboru Info.plist
React Native (Windows) Klíč <Identity Version> v souboru Package.appxmanifest

Poznámka

Pokud binární verzi v souborech metadat chybí verze opravy, například , 2.0bude považována za verzi 0opravy , tj 2.0 -> 2.0.0. .

Parametr názvu nasazení

Tento parametr určuje, do kterého nasazení chcete aktualizaci vydat. Výchozí hodnota je Staging, ale až budete připraveni na nasazení do Production, nebo do některého z vlastních nasazení, stačí explicitně nastavit tento argument.

Tip

Parametr lze nastavit pomocí nebo --deployment-name-d.

Parametr popisu

Tento parametr poskytuje volitelný protokol změn pro nasazení. Hodnota se přepne na klienta, aby se při zjištění aktualizace aplikace mohlo rozhodnout ji zobrazit koncovému uživateli (například prostřednictvím dialogového okna "Co je nového?"). Tento řetězec přijímá řídicí znaky, například \n a \t , abyste mohli do popisů zahrnout formátování prázdných znaků pro lepší čitelnost.

Tip

Tento parametr lze nastavit pomocí .--description

Zakázaný parametr

Tento parametr určuje, jestli mají koncoví uživatelé stáhnout aktualizaci, nebo ne. Pokud zůstane neurčené, aktualizace nebude zakázaná. Místo toho si ho uživatelé stáhounou v okamžiku, kdy vaše aplikace zavolá sync. Tento parametr může být užitečný, pokud chcete vydat aktualizaci, která není okamžitě k dispozici, dokud ji explicitně neopravíte a nechcete, aby si ji koncoví uživatelé stáhli (například byl vydán příspěvek na blogu s oznámením).

Tip

Tento parametr lze nastavit pomocí nebo --disabled-x.

Povinný parametr

Tento parametr určuje, jestli má být aktualizace považována za povinnou (například obsahuje kritickou opravu zabezpečení). Tento atribut se předá klientovi, který pak může rozhodnout, jestli a jak ho chce vynutit.

Poznámka

Tento parametr je příznak, takže jeho absence značí, že verze je volitelná, a jeho přítomnost značí, že je povinná. Můžete mu zadat hodnotu (například --mandatory true), ale pro označení vydané verze jako povinné stačí zadat --mandatory .

Povinný atribut je jedinečný, protože server ho podle potřeby dynamicky upraví, aby se zajistilo, že se pro koncové uživatele zachová sémantika vydaných verzí aplikace. Představte si například, že jste vydali následující tři aktualizace aplikace:

Vydat Povinné?
v1 No
v2 Yes
v3 No

Pokud koncový uživatel aktuálně používá v1a dotazuje se serveru na aktualizaci, odpoví v3 (protože je to nejnovější verze), ale dynamicky převede vydání na povinné, protože mezi tím byla vydána povinná aktualizace. Toto chování je důležité, protože kód obsažený v v3 je přírůstkový oproti kódu zahrnutého v v2. Cokoli, co je povinné v2 , v3 bude i nadále povinné pro každého, kdo ještě nezístane v2.

Pokud koncový uživatel aktuálně používá nástroj v2a dotazuje se serveru na aktualizaci, odpoví příkazem v3, ale ponechá verzi jako volitelnou. Důvodem je to, že už obdrželi povinnou aktualizaci, a proto není nutné měnit zásady .v3 Toto chování je důvod, proč říkáme, že server "dynamicky převede" povinný příznak, protože pokud jde o vydání, jeho povinný atribut bude vždy uložen pomocí hodnoty, kterou jste zadali při jeho vydávání. Průběžně se mění jenom při odpovídání na kontrolu aktualizací od koncového uživatele.

Popsané chování se vás týká jenom v případě, že vydáte aktualizaci, která je označená jako mandatory. Server změní optional verzi na mandatory pouze v případě, že existují propletené mandatory aktualizace, jak je znázorněno výše.

Verze označená jako mandatory nebude nikdy převedena na optional.

Tip

Tento parametr lze nastavit pomocí nebo --mandatory-m*

Žádný parametr chyby duplicitní verze

Tento parametr určuje, že pokud je aktualizace identická s nejnovější verzí nasazení, mělo by rozhraní příkazového řádku místo chyby generovat upozornění. Je to užitečné pro scénáře kontinuální integrace, kde se očekává, že malé úpravy můžou aktivovat verze, u kterých se nezměnil žádný produkční kód.

Parametr uvedení

Důležité

Aby se tento parametr projevil, musí koncoví uživatelé používat verzi 1.6.0-beta+ (pro Cordovu) nebo 1.9.0-beta+ (pro React Native) modulu plug-in CodePush. Pokud vydáte aktualizaci, která určuje vlastnost uvedení, žádný koncový uživatel se starší verzí modulů plug-in Cordova nebo React Native nebude mít nárok na aktualizaci. Dokud nepřijmete potřebnou verzi modulu plug-in CodePush specifické pro platformu (jak jsme zmínili dříve), nedoporučujeme nastavit hodnotu zavedení verzí aplikace, protože nikdo by ho nakonec nedostával.

Tento parametr určuje procento uživatelů (jako celé číslo mezi 1 a 100), kteří by měli mít nárok na přijetí této aktualizace. Může být užitečné, pokud chcete nové verze "vypouštět" s částí cílové skupiny aplikace (například 25 %) a získat zpětnou vazbu nebo watch výjimek nebo chybových ukončení, než ji zpřístupníte všem uživatelům. Pokud tento parametr není nastavený, nastaví se výchozí hodnota na 100%. Stačí ho nastavit tak, aby se omezil počet uživatelů, kteří ho dostanou.

Při používání funkce zavedení je potřeba mít na paměti několik dalších aspektů:

  1. Novou aktualizaci nemůžete vydat pro nasazení, jehož nejnovější verzí je "aktivní" uvedení (vlastnost uvedení není null). Než budete moct vydat další aktualizace nasazení, musí být uvedení dokončeno (nastavení rollout vlastnosti na 100).

  2. Pokud vrátíte zpět nasazení, jehož nejnovější vydaná verze je "aktivní", hodnota uvedení se vymaže a v podstatě se "deaktivuje" chování při zavádění.

  3. mandatory Na rozdíl od polí a description se při povýšení verze z jednoho nasazení do jiného vlastnost nerozšířujírollout, a proto pokud chcete, aby nová verze (v cílovém nasazení) měla hodnotu uvedení, musíte ji explicitně nastavit při volání promote příkazu.

Tip

Tento parametr lze nastavit pomocí nebo --rollout-r*

Vydávání Aktualizace (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]

Příkaz release-react je verze příkazu "vanilla" release specifická pro React Native, která podporuje všechny stejné parametry (například --mandatory, --description), ale zjednodušuje proces vydávání aktualizací provedením následujících dalších úloh:

  1. Spuštěním react-native bundle příkazu vygenerujete obsah aktualizace (balíček JS a prostředky), který se vydá na server CodePush. Používá co nejvíce rozumné výchozí hodnoty (například vytvoření jiného než vývojového sestavení za předpokladu, že vstupní soubor pro iOS má název index.ios.js), ale také zveřejňuje příslušné react-native bundle parametry, které umožňují flexibilitu (například --sourcemap-output).

  2. Odvození targetBinaryVersion této verze pomocí názvu verze zadaného v souborech Info.plist projektu (pro iOS) a build.gradle (pro Android).

Pro ilustraci rozdílurelease-react, který může příkaz udělat, ukazuje následující příklad, jak můžete vygenerovat a vydat aktualizaci pro React Native aplikaci pomocí příkazu vanillarelease:

mkdir ./CodePush

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

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

K dosažení ekvivalentního chování s příkazem release-react by se vyžadoval následující příkaz, který je méně náchylný k chybám:

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

Parametr názvu aplikace

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr názvu nasazení

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr popisu

Je to stejný parametr jako parametr popsaný v předchozí části.

Povinný parametr

Je to stejný parametr jako parametr popsaný v předchozí části.

Žádný parametr chyby duplicitní verze

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr uvedení

Je to stejný parametr jako parametr popsaný v předchozí části. Pokud není zadáno, bude verze dostupná všem uživatelům.

Parametr cílové binární verze

Je to stejný parametr jako parametr popsaný v předchozí části. Pokud zůstane neurčeno, ve výchozím nastavení se cílí na přesnou verzi zadanou v souborech Info.plist (pro iOS) a build.gradle (pro Android).

Parametr názvu sady

Tento parametr určuje název souboru, který se má použít pro vygenerovanou sadu JS. Pokud není zadaný, použije se standardní název sady pro zadanou platformu: main.jsbundle (iOS), index.android.bundle (Android) a index.windows.bundle (Windows).

Tip

Tento parametr lze nastavit pomocí nebo --bundle-name-b*

Vývojový parametr

Tento parametr určuje, jestli se má vygenerovat neminifikovaná sada js pro vývoj. Pokud není zadáno, nastaví se výchozí hodnota na false místo, kde jsou upozornění zakázaná a sada se minifikuje.

Tip

Tento parametr lze nastavit pomocí --development*

Zakázaný parametr

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr vstupního souboru

Tento parametr určuje relativní cestu ke kořenovému nebo vstupnímu souboru JavaScriptu aplikace. Pokud soubor není zadaný, použije se výchozí hodnotaindex.ios.js (pro iOS), index.android.js (pro Android) nebo index.windows.bundle (pro Windows), pokud soubor existuje, nebo index.js jinak.

Tip

Tento parametr lze nastavit pomocí nebo --entry-file-e*

Parametr souboru Gradle (jenom Android)

Tento parametr určuje relativní cestu k souboru build.gradle , kterou by rozhraní příkazového řádku mělo použít při pokusu o automatické určení cílové binární verze pro vydání. Tento parametr je určen pouze pro pokročilé scénáře, protože rozhraní příkazového řádku automaticky najde soubor build.gradle projektu ve standardních React Native projektech. Pokud se ale soubor gradle projektu nachází v libovolném umístění, které rozhraní příkazového řádku nemůže zjistit, pak pomocí tohoto parametru můžete pokračovat ve vydávání aktualizací CodePush, aniž byste museli explicitně nastavovat --target-binary-version parametr. Vzhledem k tomu, že build.gradle je požadovaný název souboru, zadáním cesty k obsahující složce nebo úplné cesty k samotnému souboru dosáhnete stejného efektu.

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

Tip

Tento parametr lze nastavit pomocí nebo --gradle-file-g*

Parametr souboru Plist (jenom iOS)

Tento parametr určuje relativní cestu k souboru Info.plist , který by rozhraní příkazového řádku mělo použít při pokusu o automatické rozpoznání cílové binární verze pro vydání. Tento parametr je určený jenom pro pokročilé scénáře, protože rozhraní příkazového řádku může automaticky najít soubor Info.plist projektu ve standardních React Native projektech a pomocí parametru --plistFilePrefix můžete podporovat soubory plist pro jednotlivé prostředí (například STAGING-Info.plist). Pokud se ale plist projektu nachází v libovolném umístění, které rozhraní příkazového řádku nemůže zjistit, pak pomocí tohoto parametru můžete pokračovat ve vydávání aktualizací CodePush, aniž byste museli explicitně nastavovat --target-binary-version parametr.

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

Tip

Tento parametr lze nastavit pomocí nebo --plist-file-p*

Parametr předpony souboru Plist (jenom iOS)

Tento parametr určuje předponu názvu souboru Info.plist , kterou by rozhraní příkazového řádku mělo použít při pokusu o automatické určení cílové binární verze pro vydání. To může být užitečné, pokud jste vytvořili soubory plist pro jednotlivé prostředí (například DEV-Info.plist, STAGING-Info.plist) a chcete vydat aktualizace CodePush, aniž byste museli explicitně nastavovat --target-binary-version parametr. Zadáním příkazu --plist-file-prefixbude rozhraní příkazového řádku hledat soubor s názvem <prefix>-Info.plist, nikoli Info.plist (což je výchozí chování) v následujících umístěních: ./ios a ./ios/<appName>. Pokud se soubor plist projektu nenachází v některém z těchto adresářů (například vaše aplikace je nativní aplikace pro iOS s vloženými zobrazeními RN) nebo používá úplně jiné zásady vytváření názvů souborů, zvažte použití parametru --plist-file .

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

Výstupní parametr mapování zdroje

Tento parametr určuje relativní cestu, kam se má zapsat soubor zdrojové mapy vygenerované sady JS. Pokud zůstane neurčené, zdrojové mapy se negenerují.

Tip

Tento parametr lze nastavit pomocí nebo --sourcemap-output-s*

Název konfigurace sestavení

Název konfigurace sestavení, která určuje binární verzi, na kterou chcete tuto verzi cílit. Například "Debug" nebo "Release" (jenom iOS).

Poznámka

Tento parametr by se měl použít při sestavování pomocí Xcode 11 a novějších, aby se přepsala výchozí konfigurace používaná Xcode.

Uvolnění Aktualizace (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]

Příkaz release-cordova je verze příkazu "vanilla" release specifická pro Cordovu, která podporuje všechny stejné parametry (například --mandatory, --description), ale zjednodušuje proces vydávání aktualizací provedením následujících dalších úloh:

  1. Spuštěním cordova prepare příkazu (nebo phonegap prepare) vygenerujete obsah aktualizace (složka www ), která bude vydána na server CodePush.

  2. Odvození targetBinaryVersion této verze pomocí názvu verze, který je zadán v souboruconfig.xml projektu.

Pro ilustraci rozdílu release-cordova , který může příkaz udělat, ukazuje následující příklad, jak můžete vygenerovat a vydat aktualizaci pro aplikaci Cordova pomocí příkazu vanilla release :

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

K dosažení ekvivalentního chování s příkazem release-cordova by se vyžadoval následující příkaz, který je méně náchylný k chybám:

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

Parametr názvu aplikace

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr názvu nasazení

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr popisu

Je to stejný parametr jako parametr popsaný v předchozí části.

Povinný parametr

Je to stejný parametr jako parametr popsaný v předchozí části.

Žádný parametr chyby duplicitní verze

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr uvedení

Je to stejný parametr jako parametr popsaný v předchozí části. Pokud není zadáno, bude verze dostupná všem uživatelům.

Parametr cílové binární verze

Je to stejný parametr jako parametr popsaný v předchozí části. Pokud není zadáno, příkaz ve výchozím nastavení cílí jenom na zadanou verzi v metadatech projektu (Info.plist , pokud je tato aktualizace určená pro klienty iOS, a build.gradle pro klienty Androidu).

Zakázaný parametr

Je to stejný parametr jako parametr popsaný v předchozí části.

Parametr sestavení

Tento parametr určuje, jestli chcete při generování aktualizovaných webových cordova prepare prostředků místo (což je výchozí chování) spouštětcordova build. Je to užitečné, pokud váš projekt zahrnuje funkce před nebo po sestavení (například k transpilování TypeScriptu), a proto spuštění cordova prepare CodePush nestačí k vytvoření a vydání aktualizace. Pokud zůstane neurčené, nastaví se výchozí hodnota na false.

Tip

Tento parametr lze nastavit pomocí nebo --build-b*

Opravy metadat aktualizace

Po vydání aktualizace může dojít ke scénářům, kdy budete chtít upravit jeden nebo více atributů metadat (například jste zapomněli označit opravu kritické chyby jako povinnou, chcete zvýšit procento zavedení aktualizace). Můžete to snadno provést spuštěním následujícího příkazu:

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]

Poznámka

Tento příkaz neumožňuje úpravu skutečného obsahu aktualizace vydané verze (například www složky aplikace Cordova). Pokud chcete reagovat na verzi, u které bylo zjištěno, že je poškozená, měli byste ji okamžitě vrátit zpět pomocí příkazu vrácení zpět a v případě potřeby vydat novou aktualizaci s příslušnou opravou, jakmile bude k dispozici.

Kromě <ownerName>/<appName> parametrů a deploymentNamejsou všechny parametry volitelné, takže můžete pomocí tohoto příkazu aktualizovat jeden atribut nebo všechny najednou. Volání příkazu patch bez zadání příznaku atributu způsobí no-op.

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

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

Parametr popisku

Označuje, kterou verzi (například v23) chcete aktualizovat v rámci zadaného nasazení. Pokud je vynecháte, požadované změny se použijí na nejnovější verzi v zadaném nasazení. Pokud chcete vyhledat popisek vydané verze, kterou chcete aktualizovat, můžete spustit appcenter codepush deployment history příkaz a odkazovat na Label sloupec.

Povinný parametr

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje aktualizovat, jestli má být vydání považováno za povinné nebo ne. Věnujte pozornost tomu, že --mandatory a --mandatory true jsou ekvivalentní, ale absence tohoto příznaku není ekvivalentní --mandatory falsek . Pokud je parametr vynechán, nedojde k žádné změně hodnoty povinné vlastnosti cílové verze. Nastavením tohoto parametru na hodnotu --mandatory false explicitně nastavíte verzi jako volitelnou.

Parametr popisu

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje aktualizovat popis verze (například jste při vydání udělali překlep nebo jste zapomněli přidat popis). Pokud je tento parametr vynechán, nedojde k žádné změně hodnoty vlastnosti description cílové verze.

Zakázaný parametr

Jedná se o stejný parametr jako parametr popsaný v předchozí části a umožňuje aktualizovat, jestli má být verze zakázaná nebo ne. Věnujte pozornost --disabled a --disabled true jsou ekvivalentní, ale absence tohoto příznaku není ekvivalentní --disabled falsek . Pokud je parametr vynechán, nedojde k žádné změně hodnoty zakázané vlastnosti cílové verze. Nastavením tohoto parametru na --disabled false hodnotu explicitně nastavíte získání vydané verze, pokud byla dříve zakázaná.

Parametr uvedení

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje zvýšit procento uvedení cílové verze. Tento parametr lze nastavit pouze na celé číslo, jehož hodnota je větší než aktuální hodnota uvedení. Pokud navíc chcete zavedení "dokončit" a zpřístupnit verzi všem, můžete tento parametr nastavit na --rollout 100hodnotu . Pokud je tento parametr vynechán, hodnota parametru uvedení cílové verze se nezmění.

Kromě toho, jak je uvedeno výše, když vydáte aktualizaci bez uvedení hodnoty, bude se s ní zacházet stejně jako s nastavením uvedení na 100hodnotu . Pokud jste vydali aktualizaci bez uvedení, nemůžete změnit vlastnost uvedení prostřednictvím patch příkazu, protože by se to považovalo za snížení procenta uvedení.

Parametr cílové binární verze

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje aktualizovat rozsah semveru , který označuje, se kterými binárními verzemi je verze kompatibilní. To může být užitečné, pokud jste při původním vydání aktualizace udělali chybu (například jste zadali 1.0.0 , ale mysleli 1.1.0jste ) nebo pokud chcete zvětšit nebo zmenšit rozsah verzí, který verze podporuje (například jste zjistili, že s 1.1.2 verzí nakonec nefunguje). Pokud je tento parametr vynechán, nedojde k žádné změně hodnoty vlastnosti verze cílové verze.

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

Propagace Aktualizace

Jakmile otestujete aktualizaci pro konkrétní nasazení (například Staging) a chcete ji zvýšit "podřízenou" (například vývoj-příprava>, přípravná-produkční> verze), můžete pomocí následujícího příkazu zkopírovat verzi z jednoho nasazení do jiného:

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] 

Příkaz promote vytvoří novou verzi pro cílové nasazení, která obsahuje přesný kód a metadata (popis, povinná a cílová binární verze) z nejnovější verze zdrojového nasazení. I když můžete použít release příkaz k ruční migraci aktualizace z jednoho prostředí do jiného promote , má tento příkaz následující výhody:

  1. Je to rychlejší, protože nemusíte znovu smontovat prostředky vydané verze, které chcete publikovat, ani si pamatovat popis nebo binární verzi pro vydání zdrojového nasazení.

  2. Je méně náchylný k chybám, protože operace zvýšení úrovně zajišťuje, že přesně to, Stagingco jste už testovali ve zdrojovém nasazení (například ), bude aktivní v cílovém nasazení (například Production).

Doporučujeme, aby všichni uživatelé využili výhod automaticky vytvořených Staging prostředí a Production prostředí a provedli všechny verze přímo do Staginga pak promote po příslušném Production testování.Staging

Parametr popisu

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje přepsat popis, který se použije pro upřednostněnou verzi. Pokud není zadáno, nová verze zdědí popis z verze, která je upřednostněna.

Zakázaný parametr

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje přepsat hodnotu zakázaného příznaku, který se použije pro upřednostněnou verzi. Pokud není zadáno, nová verze zdědí zakázanou vlastnost z verze, která je upřednostněna.

Povinný parametr

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje přepsat povinný příznak, který se použije pro upřednostněnou verzi. Pokud není zadáno, nová verze zdědí povinnou vlastnost z verze, která je upřednostněna.

Žádný parametr chyby duplicitní verze

Jedná se o stejný parametr jako parametr popsaný v předchozí části.

Parametr uvedení

Jedná se o stejný parametr jako parametr popsaný v předchozí části a umožňuje určit, jestli se nově vytvořená verze má zpřístupnit jenom části uživatelů. Na rozdíl od jiných parametrů metadat vydané verze (například description) rollout se v rámci zvýšení úrovně nepřenese ani nezdědí, takže pokud nechcete, aby nově vytvořená verze byla dostupná všem uživatelům, musíte to explicitně nastavit.

Parametr cílové binární verze

Je to stejný parametr jako parametr popsaný v předchozí části a umožňuje přepsat cílovou binární verzi, která se použije pro upřednostněnou verzi. Pokud není zadáno, nová verze zdědí vlastnost cílové binární verze z verze, která je upřednostněna.

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

Vrácení zpět Aktualizace

Historie verzí nasazení je neměnná, takže po jejím vydání nemůžete aktualizaci odstranit ani odebrat. Pokud ale vydáte aktualizaci, která je poškozená nebo obsahuje nezamýšlené funkce, můžete ji snadno vrátit zpět pomocí rollback příkazu :

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

Spuštěním tohoto příkazu se pro nasazení vytvoří nová verze, která obsahuje přesně stejný kód a metadata jako verze před nejnovější verzí. Představte si například, že jste vydali následující aktualizace aplikace:

Vydat Description Povinné
v1 Počáteční vydání! Yes
v2 Přidání nové funkce No
v3 Opravy chyb Yes

Pokud jste spustili příkaz pro rollback toto nasazení, vytvoří se nová verze (v4), která bude obsahovat obsah této v2 verze.

Vydat Description Povinné
v1 Počáteční vydání! Yes
v2 Přidání nové funkce No
v3 Opravy chyb Yes
v4 (vrácení zpět z v3 na v2) Přidání nové funkce No

Koncoví uživatelé, kteří už získali v3 , se teď "přesunou zpět", když v2 aplikace provede kontrolu aktualizací. Kromě toho uživatelé, kteří stále používali v2, a proto nikdy nezískali v3, neobdrží aktualizaci, protože už mají spuštěnou nejnovější verzi (proto naše kontrola aktualizací používá kromě popisku verze také hodnotu hash balíčku).

Pokud chcete vrátit nasazení zpět na jinou verzi než předchozí verzi (například v3 ->v2), můžete zadat volitelný --target-release parametr:

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

Poznámka

Verze vytvořená vrácením zpět bude ve výstupu deployment history příkazu anotována, aby se snadněji identifikovala.

Zobrazení historie vydaných verzí

Pomocí následujícího příkazu můžete zobrazit historii 50 nejnovějších verzí pro konkrétní nasazení aplikace:

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

V historii se zobrazí všechny atributy jednotlivých verzí (například popisek, povinné) a také to, jestli byly nějaké verze provedeny z důvodu povýšení nebo operace vrácení zpět.

Historie nasazení

Kromě toho historie zobrazuje metriky instalace pro jednotlivé verze. Podrobnosti o tom, jak interpretovat data metrik, najdete v dokumentaci k výše uvedenému deployment list příkazu.

Vymazání historie vydaných verzí

Historii vydaných verzí nasazení můžete vymazat pomocí následujícího příkazu:

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

Po spuštění tohoto příkazu přestanou klientská zařízení nakonfigurovaná tak, aby přijímala aktualizace pomocí přidruženého klíče nasazení, přijímat aktualizace, které byly vymazány. Tento příkaz je nevratný, a proto by se neměl používat v produkčním nasazení.

Podepisování kódu

Co to je?

Podepisování kódu je způsob, jak vytvořit digitální podpisy pro sady, které lze později ověřit na straně klienta před instalací.

Proč ho potřebujeme?

Vývojáři chtějí vědět, že kód, který doručují, je kód, který napsali. Podepisování kódu je primárním mechanismem pro poskytování takové záruky a může pomoci zmírnit nebo eliminovat celou třídu útoků man-in-the-middle.

Jak to funguje?

Nejprve vývojář vygeneruje asymetrický pár klíčů: privátní klíč se použije k podepisování balíčků; veřejný klíč pro ověření podpisu balíčku. Rozhraní příkazového řádku CodePush pak pomocí privátního klíče podepisuje sady během releasepříkazů a release-reactrelease-cordova . Veřejný klíč se dodává s mobilní aplikací. Kontrolu nad generováním a správou klíčů má v rukou vývojář.

Na konci příkazu vydané verze rozhraní příkazového řádku vypočítá hodnotu hash obsahu sady a umístí ji do JWT podepsaného privátním klíčem. Když modul plug-in CodePush stáhne sadu prostředků do zařízení, zkontroluje .codepushrelease soubor obsahující JWT a ověří podpis JWT pomocí veřejného klíče. Pokud se ověření nezdaří, aktualizace se nenainstaluje.

Požadavky na používání této funkce

Pokud plánujete tuto funkci používat, proveďte následující kroky:

  1. Vytvořit novou binární aktualizaci, včetně

    • Aktualizovaný modul plug-in CodePush podporující podepisování kódu
    • nakonfigurujte sadu SDK pro nabízení kódu tak, aby používala váš veřejný klíč (podrobnosti najdete v příslušných oddílech React Native SDK (iOS, Android) nebo Cordova SDK).
  2. Vytvoření nové aktualizace CodePush, která cílí na novou binární verzi a určuje hodnotu parametru --private-key-path (nebo -k)

Informace o tom, jestli vaše sada SDK nebo rozhraní příkazového řádku podporuje funkci podepisování kódu, najdete v našich tabulkách kompatibility:

CodePush SDK Verze, ze které se podporuje podepisování kódu Podporované platformy Vyžaduje se minimální verze rozhraní příkazového řádku CodePush.
react-native-code-push 5.1.0 Android, iOS 2.1.0
cordova-plugin-code-push 1.10.0 Android, iOS 2.1.2

Generování klíčů

Podepisování kódu podporuje pro podepisování klíče RSA kódované PEM (jiné než certifikáty). Můžete je vygenerovat prostřednictvím openssl, jak je znázorněno níže:

# 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

Příklad vygenerovaných klíčů:

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

Vydává se podepsaná aktualizace

Pokud chcete vydat podepsanou aktualizaci, měli byste použít --private-key-path možnost (nebo -k) pro release příkaz nebo release-react .