Continuous Delivery (CD) is the ability to get changes of all types including new features, configuration changes, bug fixes and experiments into production, or into the hands of users, safely and quickly in a sustainable way. In order to be agile, we would need to ensure that developer productivity is not hindered and not much time is spent on manual processes to push changes out. Keeping this in mind, the following principles act as pillars for designing and developing the delivery pipeline for large scale Android applications:
* Automated deployment to the Google Play Store
* Unified APK
* Staged deployment
Automated deployment to the Google Play Store: Automated deployment to Google Play Store is supported by the use of Triple-T Gradle Play publisher plugin. This allows the upload of platform specific versions, removing the manual labor of uploading them one by one.
Unified APK: While Google Play Store allows developers to ship various versions of their APKs to different environments, it also provides mechanisms to promote one APK from one environment to another. For large scale applications, differentiating between alpha, beta and production sets the bandwidth to better rollout in stages.
Staged deployment: Staged deployment is necessary for the application, as it allows for options to halt the rollout as needed. This is extremely important, as rollbacks in apps are much harder to do, especially if there are databases involved.
Mohit Goenka is the Senior Engineering Manager on the Yahoo Mail Android team.