Some months ago I wrote about the pain that it was to create a new build, I’d like to update that with my current setup which is much better tho not still super optimal.
I have reduced the manual steps prone to failure as well as the bandwidth cost. The release and announcement part is still manual tho, so I still don’t to release for all platforms and forget to announce thru all channels.
The cocoon.io parts have been removed in favor of a pure Cordova/Crosswalk approach, which have made possible lots of automatisation.
Still, what takes more time is the manual process to be done for each different storefront via its own web interface. Each one requires different info, and all uploads have to be started and monitored manually. It’s pretty uncommon for a store to supply a command line tool.
This is the current process executed for each new release of Ananias:
Packaging
- Mark the new version in the source code (client and server)
- Execute the packaging script for each platform, it does the following:
- Generate a new JS bundle using browserify
- Generate the player’s manual
- Copy the required assets based on the platform
- Do platform specific things like using cordova/crosswalk, nw.js, signing and zipaligning APKs, etc.
- These are currently shell scripts, no fancy gulp or grunt for now
- Rename and zip the executable packages for Windows, Mac and Linux (Should add this to the script)
- Execute the cordova build for iOS
- Build changes log from git commit messages
Distribution
- Upload new build to web (ananiasgame.com/play) (About 15MB) (Only Standard edition)
- Deploy new server version and restart (About 1MB) (including executing migration database scripts)
- Upload to itch.io via web interface (About 200MB )
- Sign in to google play developers console
- Summarize change log for Google Play
- Upload both x86 and arm APKs (About 100 MB)
- Upload both APKs to Amazon via web interface (About 100MB)
- Upload to indiegamestand via web interface (About 200MB)
- Upload to gamejolt via web interface (About 200MB) (Only Standard Edition)
- Upload to IndieDB via web interface (About 200MB) (Only Standard Edition)
- Open xcarchive in xcode organizer
- Submit package to App Store
- Wait for processing
- Go to iTunes Connect
- Go to Testflight / External Testing
- Select new build to test
- Wait for beta review
- Go back to Testflight / External Testing
- Set the new build as active.
The process should be executed twice, once for the Standard Edition and then again for the Fellowship edition.
The dream of having a single web endpoint, and have all the clients deal with the updating is still far from happening.