Wikimedia Apps/Team/Android/Release process

This page documents the release process for the Android team.

Alpha releases
Alpha APKs are built automatically after patches get merged to master every 15 minutes and are available at android-builds.wmflabs.org.

Technical information
$ ssh android-builder.mobile.eqiad.wmflabs $ sudo -s $ sudo -u android-build /bin/bash $ cd /srv/builds
 * Web server backend login:
 * Gerrit repository that contains the web page that serves the Alpha download link, and the shell script that copies the latest Alpha from the CI server to the web server. After committing a change to this repo, log on to the android-builder server, and do a git pull on.

Beta releases
 Announce on that a new beta build is in progress and that merges should be held. Prepare your workspace. Ideally you should checkout a fresh copy of the repo into an empty directory, to avoid any unintended artifacts from Android Studio, gradle, etc.  Increment the patch version code. Consider updating the minor number.  Push the version increment patch. ...or alternatively  +2 the patch. For cherry-pickin' hotfix releases:  Start the release notes Etherpad cooking. Here are some helpful commands to look through the commit history, while filtering out uninteresting commits:  Confirm the version-bump patch has merged, and update your local repo with it.</li> Perform the actual build of the beta, production, and partner flavors. (Or wherever you keep the all-apks.sh file.) This script is confidential because some partners wish to maintain anonymity. However, it looks something like this: When the script finishes, all of the built APKs will be placed in the  directory. You'll notice that each flavor of the build has five APKs associated with it, one for each platform that we support: When distributing the APK manually (whether for a partner, user testing, etc.) always use the universal build. The non-universal builds are intended only for uploading to the Google Play Store. </li> Load the built APK onto the device and install/run it and see if everything functions as expected, as a sanity check. For bonus points, try it on an API 19 device. For extra bonus points, try it with a Kindle Fire device. For super bonus points, on one of the devices enable the "Don't keep activities" developer option, and make sure nothing breaks.</li> To install the APK programmatically onto multiple connected devices: </li> Do some light manual testing, including search, saved pages, reading lists, history, nearby, beta-only and prod-only features, light/dark/black themes, upgrade from a previous version, and new features and churn areas identified when generating release notes.</li> Upload the -r- to the Play Store production alpha. TODO: automate. </li> Push the tags. </li> Preserve the apks on releases.wikimedia.org. </li> Upload the releases to Google Drive too. </li> Verify the files were uploaded and move the old files to the "old" folder.</li> Review the alpha pre-launch test results. </li> Upload the -beta- to the Play Store beta production. TODO: automate.</li> Upload the -amazon- to the Appstore upcoming. TODO: automate.</li> Add the release to Mobile/Release_history under the Android section's "Release notes&lt;/translate&gt;". echo "|- &lt;translate>Release candidate alpha&lt;/translate>" With the following commit message: </li> Send email to mobile-l, cc android, and bcc volunteer contributors. Don't forget to call out volunteers! TODO: templatize.</li> Send email to TSG. TODO: templatize.</li> </ol>
 * arm64-v8a - used in most modern higher-end devices.
 * armeabi-v7a - used in older and lower-end devices.
 * x86 - used in some older and lower-end tablets.
 * x86_64 - used in some newer and higher-end tablets.
 * universal - combination of all above platforms, but much larger APK size.
 * Android || $APP_VER-r-$APP_DATE || || $APP_DATE || $(md5sum $RELEASE_DIR/wikipedia-*-r-*.apk|sed -r 's%(\W).*%\1%')||
 * 1) TODO: automate.

Production releases
Production releases are promotions from beta by the product owner. <ol> Check out the last beta and push the prod tags. </li> <li>Promote the Play Store alpha build to production and submit the Appstore build.</li> </ol>