Welcome to the #4 edition of The Modern Architect newsletter. In this edition I’m going tell you about mobile devops and what tools are at your disposal.
The Mobile Build Process
Compiling a mobile application for testing or distribution could include these steps:
fetching source code from git
bumping version numbers
downloading dependencies
running unit tests
compiling source code
code signing with certificates & profiles from Apple & Google.
These steps don’t even cover any complex scenarios such as running UI tests on simulators or devices, code scanning for vulnerabilities or quality, code coverage, uploading building to a distribution service, notifying users or sending crash symbols to crash reporting services.
It’s obvious to see with this many manual steps having a human perform these build steps is tedious, time consuming an error prone. The person doing builds can often be the bottle neck in a project with many teams needing to create test builds many times a day.
The solution to taming complex build processes is automation and that is what I am going to cover in the next section.
Mobile Dev Ops Tooling
DevOps is a methodology where tools and methodologies implemented throughout the software development lifecycle automate software development & operational tasks related to releasing software.
I’m going to cover different Mobile DevOps tools that can be used to get started on your mobile DevOps journey using the good, better, best approach.
Good - Script It
The simplest thing you could do is automate the build process using a local script that is checked into your source code repository. There is an open source mobile build automation framework by Google that I recommend called Fastlane for building your script. When its time to create a build any developer can checkout the code repository and execute the Fastlane script.
Better - Local Solutions
Xcode Server - Only recommended if you targeting Apple platforms exclusively but has limited featured compared the other products I am going to talk about.
Jenkins - An open source automation server that can be installed in any server and supports building mobile development projects via a number of plugins. Xcode Plug-in, Android Signing Plug-in.
Best - Cloud Solutions
Building a local mobile automation server requires an always on Mac computer which is configured in a very specific way that could be unique to every project. Maintaining build machines coupled with mobile build jobs being very time consuming and resource intensive provide enough reasons to build in the cloud to streamline your workloads and allow you free up your resources.
Xcode Cloud - Again only recommended if you support Apple Platforms exclusively.
Bitrise - Supports all major mobile platforms with pre-configured virtual machines that save you lots of time. Platforms include: IOS, Android, React Native, Flutter, Ionic, Cordova,
Azure DevOps - Includes Azure Pipelines which supports automated build, test, and deploy for any language, platform, and cloud provider.
Wrapping Up
As you can see there is lot of benefits to be gained by adopting DevOps Tools, I did not even have time to cover the DevOps practices that go hand in hand with DevOps tooling.
Please leave a comment if you have any feedback or suggestions. If you liked my post and feel it was of value, please share it.