<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>CodePush</title>
 <link href="http://microsoft.github.io/code-push/blog/atom.xml" rel="self"/>
 <link href="http://microsoft.github.io/code-push/blog/"/>
 <updated>2016-10-13T17:07:00-07:00</updated>
 <id>http://microsoft.github.io/code-push/blog</id>
 <author>
   <name></name>
   <email></email>
 </author>

 
 <entry>
   <title>React Native for Windows + CodePush</title>
   <link href="http://microsoft.github.io/code-push/blog/articles/ReactNativeWindows.html"/>
   <updated>2016-04-13T00:00:00-07:00</updated>
   <id>http://microsoft.github.io/code-push/blog/articles/ReactNativeWindows</id>
   <content type="html">&lt;p&gt;We&amp;rsquo;re very excited about today&amp;rsquo;s announcement at &lt;a href=&quot;https://www.fbf8.com&quot;&gt;F8 2016&lt;/a&gt; that &lt;a href=&quot;https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform&quot;&gt;Universal Windows Platform support is coming to React Native&lt;/a&gt;! The CodePush team has been fortunate enough to work with thousands of developers in the React Native community, and the ability to target your app(s) at any Windows 10 device is an awesome opportunity that we look forward to seeing folks begin to take advantage of.&lt;/p&gt;

&lt;p&gt;Along with this announcement, we have also published a &lt;strong&gt;very early&lt;/strong&gt; version of Windows support for the React Native CodePush module, which will allow releasing updates to your React Native apps running on a Windows 10 PC, phone, Xbox One and even HoloLens (!), using the same developement workflow as iOS and Android: &lt;code&gt;code-push release-react MyApp windows&lt;/code&gt;. We want to make it as simple as possible to practice continuous delivery with React Native, and this support will extend that capability to millions of new devices.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/14446152/b1e1b766-0007-11e6-96a0-fa5d6beb37a7.PNG&quot; width=&quot;220&quot;  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/14477041/49cd7b60-00c0-11e6-8b12-d3825339d6ba.PNG&quot; width=&quot;630&quot;  /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NOTE: While the production F8 app uses CodePush, it doesn&amp;rsquo;t display an update prompt. We just added that for the sake of illustrating the concept more easily.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Current Support&lt;/h3&gt;

&lt;p&gt;The Windows implementation of CodePush currently has ~80% parity with the existing iOS and Android platforms, including all of the most commonly used features (e.g. updating assets, pivoting the install mode based on whether an update is mandatory or not). We were able to re-use 100% of our existing JavaScript code, and because React Native for Windows was architected to be conceptually similar to React Native for Android, it was a pretty straight forward port for our native code. We expect to implement the few remaining features in the next couple weeks, and will then maintain 100% parity across all three platforms moving forward.&lt;/p&gt;

&lt;p&gt;We haven&amp;rsquo;t published the Windows support to NPM yet, but if you want to check it out, you can view the source and/or install the bits from our &lt;a href=&quot;https://github.com/Microsoft/react-native-code-push/tree/windows-support&quot;&gt;Windows branch&lt;/a&gt;, which includes an updated readme with setup instructions. Additionally, if you want to check out a sample app that uses React Native for Windows and CodePush, the beautiful and open-sourced &lt;a href=&quot;https://github.com/fbsamples/f8app&quot;&gt;F8 App&lt;/a&gt; is a great example to play around with. The production version of the app already uses CodePush for iOS and Android, and we implemented a &lt;a href=&quot;https://github.com/CatalystCode/f8app/tree/CodePushWindows/windows&quot;&gt;fork of it&lt;/a&gt; which includes CodePush support on Windows. Clone the fork, run the setup instructions, and try it out! The above screenshots were taken using it, so feel free to have fun with running the app on the various device emulators.&lt;/p&gt;

&lt;h3&gt;Moving Forward&lt;/h3&gt;

&lt;p&gt;As the Windows support for React Native continues to evolve and mature, we&amp;rsquo;ll be improving the CodePush support as well, and will look forward to seeing the community response and contributions. In the meantime, please continue to &lt;a href=&quot;mailto:codepushfeed@microsoft.com&quot;&gt;send us feedback&lt;/a&gt;, ping us in the &lt;a href=&quot;https://discord.gg/0ZcbPKXt5bWxFdFu&quot;&gt;#code-push&lt;/a&gt; chanel on Reactiflux, and stay tuned for future feature investments!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Web-like release agility for React Native Apps</title>
   <link href="http://microsoft.github.io/code-push/blog/articles/DevOpsExp.html"/>
   <updated>2016-02-22T00:00:00-08:00</updated>
   <id>http://microsoft.github.io/code-push/blog/articles/DevOpsExp</id>
   <content type="html">&lt;p&gt;It’s been a few months since we opened up our beta program and we couldn’t be happier about all the support and excitement we&amp;rsquo;ve seen from the community! Thanks to your feedback we have made tons of fixes and added features to enable new scenarios that aim to make your React Native development cycle that much better. &lt;/p&gt;

&lt;p&gt;In lieu of the ReactJS Conf 2016, we want to emphasize how much we care about this community and making your DevOps experience as seamless as possible. For those of you who were not able to attend our session, we covered the integration between three products that enable you to provide Continuous Integration (CI) and Continuous Deployment (CD) for your React Native apps: VSTS, HockeyApp and CodePush. &lt;/p&gt;

&lt;p&gt;Visual Studio Team Services (formerly Visual Studio Online) and Team Foundation Services 2015, provide a cross-platform build system that allows you to easily configure builds for any platform you might want to target. By ading HockeyApp, you enable a robust beta distribution and reporting framework that allows you to deploy beta apps and collect feedback from internal or external testers. Finally, with CodePush you are able to build upon the beta capabilities provided by HockeyApp and deploy beta as well production updates, reaching the full cycle of your app’s distribution.   &lt;/p&gt;

&lt;p&gt;All of these services work great as single units, however for a great React Native CI and CD story, one that takes you seamlessly from build, to beta and finally to production, we hope you check out all three, as we continue to improve the integration between them.  &lt;/p&gt;

&lt;p&gt;Follow these links to get started with these great services:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Streamline the CI setup for your React Native app using &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vsclient.react-native-extension&quot;&gt;VSTS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/slowpath/react-native-hockeyapp&quot;&gt;Get started using HockeyApp&lt;/a&gt; for React Native&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://microsoft.github.io/code-push/docs/react-native.html#link-2&quot;&gt;Get started using CodePush&lt;/a&gt; for React Native&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate deployments to app stores from your automated CI builds using the &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms.hockeyappA&quot;&gt;HockeyApp&lt;/a&gt; and &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vsclient.code-push&quot;&gt;CodePush&lt;/a&gt; extensions  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thanks again for your interest and feedback thus far. We have many more improvements coming very soon, and look forward to put them on your hands! As always, please don’t hesitate to &lt;a href=&quot;mailto:codepush@microsoft.com&quot;&gt;ping us&lt;/a&gt; if you have questions or any issues. &lt;/p&gt;

&lt;p&gt;Thanks! &lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>CodePush enters "open beta"</title>
   <link href="http://microsoft.github.io/code-push/blog/articles/OpenBeta.html"/>
   <updated>2015-11-18T00:00:00-08:00</updated>
   <id>http://microsoft.github.io/code-push/blog/articles/OpenBeta</id>
   <content type="html">&lt;p&gt;It&amp;rsquo;s been roughly a month since we first released the CodePush &amp;ldquo;closed beta&amp;rdquo;, and we&amp;rsquo;ve received an unbelievable amount of support from the community in evaluating the service, filing bugs, giving feedback and helping improve overall quality. However, the amount of interest in the service far outweighed our expectations, and unfortunately, our ability to keep up with approving (and reaching out to) the incoming requests quickly became slower than we would have liked. Sorry to everyone that had to wait a while to get access!&lt;/p&gt;

&lt;p&gt;In order to improve our ability to engage with the community, and provide devs with a fully self-service experience for using CodePush, we are opening the beta program today so that anyone can get started immediately, without needing to explicitly request access from us! We&amp;rsquo;ve enabled this by simply adding a new &lt;code&gt;register&lt;/code&gt; command to the CLI, which provides the exact same experience as the existing &lt;code&gt;login&lt;/code&gt; command, but in addition to authenticating you, it creates a CodePush account that is linked to your GitHub or Microsoft account. Make sure you have the latest version of the CLI from NPM (&lt;code&gt;npm i -g code-push-cli@latest&lt;/code&gt;) and then check out the &lt;a href=&quot;http://microsoft.github.io/code-push/docs/getting-started.html&quot;&gt;docs&lt;/a&gt; for more details on getting started.&lt;/p&gt;

&lt;p&gt;As of now, everyone that previously requested beta access has been approved, and we hope to hear from many more of you soon! Thanks again for your interest and feedback thus far. We have many more improvements coming very soon, and look forward to being able to get it into the hands of more developers! As always, please don&amp;rsquo;t hesitate to &lt;a href=&quot;mailto:codepushfeed@microsoft.com&quot;&gt;ping us&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Continuous Delivery with CodePush and VSTS</title>
   <link href="http://microsoft.github.io/code-push/blog/articles/CDWithCodePushAndVSTS.html"/>
   <updated>2015-11-18T00:00:00-08:00</updated>
   <id>http://microsoft.github.io/code-push/blog/articles/CDWithCodePushAndVSTS</id>
   <content type="html">&lt;p&gt;While the &lt;a href=&quot;http://microsoft.github.io/code-push/docs/cli.html&quot;&gt;CodePush CLI&lt;/a&gt; provides a simple experience for managing your account, it could become pretty tedious doing manual deployments every time you need to release an update, particularly if you want to keep your dev/staging/etc. deployments always current. To better enable scripting a custom continuous delivery solution from your CI environment (e.g. Travis), we enhanced the CLI in the &lt;a href=&quot;http://microsoft.github.io/code-push/articles/CodePush1.1.html&quot;&gt;1.1 release&lt;/a&gt; with the ability to create access keys and authenticate with them &amp;ldquo;headlessly&amp;rdquo;, but we wanted to make it even simpler to automated this process E2E.&lt;/p&gt;

&lt;p&gt;To take advantage of the new &lt;a href=&quot;https://marketplace.visualstudio.com/#VSTS&quot;&gt;marketplace&lt;/a&gt; for Visual Studio Team Services (formally &amp;ldquo;Visual Studio Online&amp;rdquo;), we created a &lt;a href=&quot;http://marketplace.visualstudio.com/items/ms-vsclient.code-push&quot;&gt;CodePush extension&lt;/a&gt; which makes adding a deployment step to your CI build pipeline pretty easy, and composes really well with the &lt;a href=&quot;http://marketplace.visualstudio.com/items/ms-vsclient.cordova-extension&quot;&gt;Cordova Build&lt;/a&gt; extension and existing &lt;a href=&quot;https://github.com/Microsoft/vso-agent-tasks&quot;&gt;core support&lt;/a&gt; for JavaScript apps (e.g. Running Gulp scripts, installing NPM dependencies). If you&amp;rsquo;re already using VSTS/VSO, then install the extension now and give it a shot! Otherwise, we encourage you to check it out if you&amp;rsquo;re in the market for a simple and great CI/ALM solution.&lt;/p&gt;

&lt;h2&gt;Deploy Task&lt;/h2&gt;

&lt;p&gt;The CodePush task itself is pretty simple, and if you&amp;rsquo;re already familiar with the CLI, it provides all of the same input options as the &lt;code&gt;release&lt;/code&gt; command. Addtitionally, in order to make it simple to authenticate with the service from CI, it provides an &lt;code&gt;Access Key&lt;/code&gt; input that accepts a key value which you can generate using the existing &lt;code&gt;code-push access-key add&lt;/code&gt; command &lt;em&gt;(NOTE: Give your key a recognizeable name)&lt;/em&gt;. The task will automatically handle logging-in, performing the release, and then logging-out so that your session information isn&amp;rsquo;t left around on the machine.&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s it! Nothing too magical, but hopefully it makes the barrier of entry even simpler to perform these kind of automated deployments. For more info about the task inputs and/or how to get started with it, refer to the &lt;a href=&quot;https://github.com/Microsoft/code-push-vsts-extension#quick-start&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/11203765/1aca758a-8cac-11e5-8f27-02efaafccbe5.png&quot; alt=&quot;Example&quot;&gt;&lt;/p&gt;

&lt;h2&gt;Cordova&lt;/h2&gt;

&lt;p&gt;While most of the task&amp;rsquo;s options are platform agnostic, in order to specify a valid value for the &lt;code&gt;Package Path&lt;/code&gt; field, you need to be able to easily build your app&amp;rsquo;s release assets from a CI environment. For Cordova, that means running either &lt;code&gt;cordova build &amp;lt;platformName&amp;gt;&lt;/code&gt; or &lt;code&gt;cordova prepare &amp;lt;platformName&amp;gt;&lt;/code&gt; (either is sufficient for a CodePush, but we recommend the later since it&amp;rsquo;s simpler), or the equivalent using a superset CLI (e.g. Ionic, PhoneGap, Tarifa, TACO).&lt;/p&gt;

&lt;p&gt;While you could script this yourself, the &lt;a href=&quot;http://marketplace.visualstudio.com/items/ms-vsclient.cordova-extension&quot;&gt;Cordova Build&lt;/a&gt; extension makes this easy to do, since it provides tasks for running either a build (using the &lt;a href=&quot;http://msdn.microsoft.com/Library/vs/alm/Build/cordova/cordova-build&quot;&gt;Cordova Build&lt;/a&gt; task) or a prepare (using the &lt;a href=&quot;http://msdn.microsoft.com/Library/vs/alm/Build/cordova/cordova-command&quot;&gt;Cordova Command&lt;/a&gt; task or &lt;a href=&quot;http://msdn.microsoft.com/Library/vs/alm/Build/cordova/ionic-command&quot;&gt;Ionic Command&lt;/a&gt;, with the &lt;code&gt;Command&lt;/code&gt; input set to &lt;code&gt;prepare &amp;lt;platformName&amp;gt;&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Using these tasks, along with the CodePush deploy task, you can easily configure a build + deploy workflow. Additionally, if your app needs to acquire NPM/Bower dependencies and/or run any Gulp scripts, there are built-in tasks in VSTS for that (no extension needed!). For more info on the Cordova Build extension, including how to get started with it, refer to the &lt;a href=&quot;https://github.com/Microsoft/vso-cordova-tasks#5-step-quick-start&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/11220739/3779322e-8d16-11e5-8443-1a3db51a88b6.png&quot; alt=&quot;Ionic Command Task&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NOTE: There are plans to introduce additional tasks for other Cordova-based CLIs such as PhoneGap and TACO, so stay tuned for updates on that front.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;React Native&lt;/h2&gt;

&lt;p&gt;Generating your release assets for a React Native app consists of calling the &lt;code&gt;react-native bundle&lt;/code&gt; CLI command, which produces the JS bundle you can subsequently pass to the &lt;code&gt;Package Path&lt;/code&gt; field of the CodePush task. The React Native CLI requires Node 4+, which isn&amp;rsquo;t installed by default on the VSTS hosted build machines, so your build script needs to &amp;ldquo;prime&amp;rdquo; the environment first, before being able to create the bundle (*).&lt;/p&gt;

&lt;p&gt;Currently, there isn&amp;rsquo;t a React Native extension for VSTS that handles the Node/React Native CLI acquisition for you (yet!), however, there are core VSTS tasks for running shell scripts, which enables you to achieve just about anything when needed. To that end, we created some &lt;a href=&quot;https://github.com/Microsoft/code-push-vsts-extension/tree/master/vsts-scripts&quot;&gt;setup scripts&lt;/a&gt; (use the Windows or OS X ones depending on your environment), that you can add to your repo for now, and run as part of your build setup.&lt;/p&gt;

&lt;p&gt;With these scripts in hand, your CI pipeline can be composed of the following three tasks/steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shell script&lt;/strong&gt; or &lt;strong&gt;Batch Script&lt;/strong&gt; (depending on if you&amp;rsquo;re using a Windows or OSX build machine)&amp;ndash;that points at either the &lt;code&gt;setup-react-native.sh&lt;/code&gt; or &lt;code&gt;setup-react-native.bat&lt;/code&gt; file respectively&amp;ndash;which handles installing the right Node version as well as the React Native CLI globally&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Command Line&lt;/strong&gt; task, which can be used to run the &lt;code&gt;react-native bundle&lt;/code&gt; command, passing the neccessary parameters for your app (e.g. platform, entry file name)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CodePush&lt;/strong&gt; deploy task, which points at the JS bundle created in #2&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/11228630/da50e2fe-8d42-11e5-812b-713faa56d9bc.png&quot; alt=&quot;React CI&quot;&gt;&lt;/p&gt;

&lt;p&gt;Beyond automating your CodePush deployments, if you want to setup an automated build for generating your  ipa and/or apk files, you can use the &lt;strong&gt;Xcode Build&lt;/strong&gt; and &lt;strong&gt;Gradle&lt;/strong&gt; tasks that are already built into VSTS. &lt;/p&gt;

&lt;p&gt;Additionally, while VSTS provides Windows-based build machines, &lt;a href=&quot;http://connect.macincloud.com&quot;&gt;MacinCloud&lt;/a&gt; released first-class support today for running your VSTS builds on OSX machines, so that is definitely worth checking out once you need to run your automated iOS builds.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(NOTE: Besides using the cloud-hosted build machines, VSTS also lets you setup and run your own build machine using their cross-platform &lt;a href=&quot;https://github.com/Microsoft/vso-agent&quot;&gt;build agent&lt;/a&gt;, which lets you install any additional dependecies your builds may require)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Send us feedback&lt;/h2&gt;

&lt;p&gt;We&amp;rsquo;re pretty excited about this experience, and there&amp;rsquo;s lot of cool stuff happening for &amp;ldquo;mobile DevOps&amp;rdquo;, but we definitely want to continue making it simpler (including first-class support for React Native), so stay tuned!&lt;/p&gt;

&lt;p&gt;In the meantime, if you have any feedback/comments/etc. please don&amp;rsquo;t hesitate to &lt;a href=&quot;mailto:codepushfeed@microsoft.com&quot;&gt;ping us&lt;/a&gt;. We need your help with ensuring we fully accomodate the CI/CD workflow for CodePush for any unique scenarios you may have. Thanks!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>CodePush 1.1 (beta) released</title>
   <link href="http://microsoft.github.io/code-push/blog/articles/CodePush1.1.html"/>
   <updated>2015-11-04T00:00:00-08:00</updated>
   <id>http://microsoft.github.io/code-push/blog/articles/CodePush1.1</id>
   <content type="html">&lt;p&gt;As part of our commitment to respond quickly to all of the great developer feedback we&amp;rsquo;ve been getting, we&amp;rsquo;ve released an update to the CodePush service, management CLI and client SDKs for both Cordova and React Native. You can update any of these components immediately via NPM, and then refer to the docs, which have been updated to account for the changes.&lt;/p&gt;

&lt;p&gt;The 1.1 update includes a handful of bug fixes (thanks for everyone who helped report issues!) that we hope will improve reliability. Additionally, we also addressed the following feature requests that should help enable some important/common scenarios.&lt;/p&gt;

&lt;h2&gt;CodePush.sync()&lt;/h2&gt;

&lt;p&gt;Our client SDKs already included APIs which allowed your apps to check for the presence of an update and then subsequently download and apply it, customizing the user experience however you wished. While we think this &amp;ldquo;advanced API&amp;rdquo; is critical in allowing unexpected and custom scenarios to be more easily achievable, we also wanted to provide an API that allowed some common experiences to be possible with very little code. After talking to many users, we were able to infer a common user experience that we encapsulated in a new API method called &lt;code&gt;codePush.sync&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;CodePush.sync().then((status) =&amp;gt; {
    if (status == codePush.SyncStatus.UPDATE_APPLIED) {
        // Do any neccessary work here before the app
        // is restarted in order to apply the update
    }
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;sync&lt;/code&gt; method performs the update check, and handles displaying a notification to end-users when available. If a release is optional, the displayed dialog will allow ignoring it; otherwise, if the release is marked as mandatory, the end-user is required to install it before moving forward (this is useful for internal and testing scenarios). Additionally, you can choose to display your release description in the update notification and customize any string used in the dialog (e.g. buttons, header text).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cloud.githubusercontent.com/assets/116461/10925666/fca687b8-8244-11e5-919a-80e17a7d3156.png&quot; alt=&quot;CodePush update notification&quot;&gt;&lt;/p&gt;

&lt;p&gt;We hope this helps lower the barrier for getting started with CodePush, and we are interested in helping simplify other scenarios beyond what &lt;code&gt;sync&lt;/code&gt; currently provides (e.g. enable &amp;ldquo;silent mode&amp;rdquo; background updates). Check out the docs on this new method for more info (&lt;a href=&quot;http://localhost:3000/code-push/docs/react-native.html#codepushsync&quot;&gt;React Native&lt;/a&gt;, &lt;a href=&quot;localhost:3000/code-push/docs/cordova.html#codepushsync&quot;&gt;Cordova&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;Release promotion&lt;/h2&gt;

&lt;p&gt;A very common release practice is to submit an update to a dev or staging environment, test it, and then &amp;ldquo;promote&amp;rdquo; that update to your production environment. While this was possible previously by using the &lt;code&gt;code-push release&lt;/code&gt; command in our CLI, it wasn&amp;rsquo;t optimized for making this experience as simple as possible.&lt;/p&gt;

&lt;p&gt;To better accomodate this common scenario, we introduced a new command to the management CLI called &lt;code&gt;promote&lt;/code&gt; that simply allows you to copy the contents and metadata (e.g. description, app store version, mandatory) from one deployment to another.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;code-push promote &amp;lt;appName&amp;gt; &amp;lt;sourceDeploymentName&amp;gt; &amp;lt;targetDeploymentName&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With this addition, you can now easily do migrations between deployments (dev-&amp;gt;staging, staging-&amp;gt;production, etc.), which we hope should make your development process even smoother when using CodePush. Refer to the management CLI&amp;rsquo;s &lt;a href=&quot;http://localhost:3000/code-push/docs/cli.html&quot;&gt;documentation&lt;/a&gt; for more information.&lt;/p&gt;

&lt;h2&gt;CI integration/&amp;ldquo;headless releases&amp;rdquo;&lt;/h2&gt;

&lt;p&gt;Enabling &amp;ldquo;continuous delivery&amp;rdquo; workflows are really important to us, and our current authentication support in the CLI didn&amp;rsquo;t lend itself very well to running &amp;ldquo;headlessly&amp;rdquo; in a CI environment. To better support this, we have made three improvements to the CLI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;There is a new &lt;code&gt;code-push access-key add&lt;/code&gt; command that allows you to generate new access tokens that can be used to login from a CI server. When you run &lt;code&gt;code-push access-key ls&lt;/code&gt;, the list will display the description of the key so that you can revoke it as soon as you no longer need it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The existing &lt;code&gt;code-push login&lt;/code&gt; command now accepts a &lt;code&gt;--accessKey&lt;/code&gt; flag that allows you to authenticate using a created access key, as opposed to launching a browser to authenticate with either GitHub or your Microsoft account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The existing &lt;code&gt;code-push logout&lt;/code&gt; command now accepts a &lt;code&gt;--local&lt;/code&gt; flag that allows you to specify that you want to logout of the current user session (e.g. remove the session file from the machine), but that you don&amp;rsquo;t want to delete the key from the server. This way you can reuse a key for all your builds in a CI environment, but you don&amp;rsquo;t need to worry about leaving any authentication credentials lying around on the build machine.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the ability to create and authenticate with new keys, you can now easily script release automation in your CI environment. Moving forward, we plan to provide even better integration experiences with certain CI solutions, but in the meantime, we hope that this helps unblocks folks who would like to implement a CodePush-based continuous delivery workflow. Refer to the management CLI&amp;rsquo;s &lt;a href=&quot;http://localhost:3000/code-push/docs/cli.html&quot;&gt;documentation&lt;/a&gt; for more information.&lt;/p&gt;

&lt;h2&gt;Thank you!&lt;/h2&gt;

&lt;p&gt;It has been an absolute pleasure to engage with the Cordova and React Native communities thus far, and we want to continue saying thank you for all the bug reports, feedback, usage and overall awesomeness! We have many more improvements coming soon, and we would love to hear any any all suggestions, shout outs, hate mail, etc. that you have, so feel free to &lt;a href=&quot;mailto:codepushfeed@microsoft.com&quot;&gt;ping us&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 

</feed>
