Wikimedia Apps/How to release an app

This is meant as a generic set of instructions. Your app may have subsequent steps that trump the ones documented below. Check with your tech lead to be sure.

= Versioning = Release versions should follow this scheme:. . -


 * A bug fix only release will increase the bit.
 * A release containing new features will increase the bit, and set bit to 0
 * A major overhaul of the code base will increase the release bit, and set and to 0.
 * The bit is set for non-stable releases, eg 'beta' or 'rc' (release candidate). This bit is only appended for non-stable releases. In the event of multiple beta or rc releases, append an incrementing digit. For instance, if current beta is 1.2.3-beta, but you need to make another beta release for the same version, it would become 1.2.3-beta1.

= Building for devices =

Android

 * 1) Generate release notes via
 * 2) Release manager increments any internal version code/name in app (eg /assets/www/js/config.js)
 * 3) Release Manager makes sure that android:versionCode in AndroidManifest.xml has been incremented for this release. Increment android:versionName if this is not a beta/alpha release. (look in /AndroidManifest.xml)
 * 4) Release Manager commits the above. Commit message heading 'Release . . - ' commit body the content of RELEASE_NOTES (this reminds us the important of useful commit message headings!)
 * 5) Release Manager picks a branch point for this version
 * 6) Release Manager builds an apk and verifies against units tests, functionality, etc
 * 7) http://developer.android.com/training/basics/firstapp/running-app.html
 * 8) Release Manager/tech lead tags branch point after verifying the build
 * 9) ex. 'git tag v1.2' https://github.com/wikimedia/WLMMobile/commits/v1.1
 * 10) Sign APK (if you don't have the signing key ask Tomasz or Arthur)
 * 11) CLI: http://developer.android.com/tools/publishing/app-signing.html
 * 12) Eclipse: http://stackoverflow.com/questions/3417122/how-to-use-eclipse-to-create-released-signed-apk
 * 13) Create md5 hash of the apk
 * 14) Upload apk to download.wikimedia.org (ask Tomasz)
 * 15) Hand APK over to Product for inclusion in the market
 * 16) Product adds the new version market listing
 * 17) Product adds what's new section distilled down from tech change set
 * 18) Product activates on delivery date
 * 19) Product updates http://www.mediawiki.org/wiki/Mobile/Release_history with new release, md5sum, download link

iOS

 * 1) Build according to our old docs
 * 2) Create a new version in itunes connect
 * 3) Archive the build
 * 4) Submit
 * 5) Publish after apple review is done

= App-specific notes =

WLM Mobile
The release version of the app currently exists in the remote branch 'commons-upload'. This is intended to preserve different config settings for development vs release. When a branch point is picked for the release, it should be merged into commons-upload, and the release tag applied to the commons-upload branch.

Version bumps need configuration changes in assets/www/js/config.js and AndroidManifest.xml.