As mentioned in our previous post, at Oursky, we use Travis CI to build, test and automatically deploy our software applications. While the command line control has been super developer-friendly, we should also care about the feelings of less technical roles in the team, say PM, QA, and Designers. 🙂
Hence, we introduced Chima and Faseng, both are bots to assist the deployment process. (For cats in our office, see this post.)
What is ChatOps?
We learnt about this from GitHub — its open source chat bot (Hubot) for ops: automating deployment, graphing, monitoring, provisioning, tweeting, and many other things.
Over the years, we’ve been building loads of nicely-crafted iOS applications for our clients.
To keep everyone work closely, we send daily builds to our QA Team, beta users, clients, other team members. However, building an iOS is still painful for Project Manager — It involves compiling, uploading the app to TestFlight or HockeyApp,
setting up Crittercism for collecting crash reports (Those who have experience, should know that you have to upload dSym files for symbolic debug messages), notify everyone on Slack, etc.
Much better if we can automate all these with each Pull Request.
CI has delighted us (and other worldwide developers) by being able to :
Automate the unit-testing process
Standard build settings
Maintain a code repository
Support multiple build targets
However, whenever initiating a project, our engineers have to spare some time (and that’s not short) setting up configurations for CI, including dealing with iOS Provisioning profiles, build settings, dependencies, etc.
Upon spending time setting up a few iOS Apps,
“Are we repeating ourselves?” yelled the voice from inside.
We’ve also noticed that the bottleneck for delivering a build is at the “Developer → QA” process
In legacy time, upon a beta build delivery, the PM has to :
Ask the developer to push code to beta branch
Pull code from the beta branch
Fix cert and dependencies
Build the app
Upload to Testflight / Hockey App
Update dSym file at Crittercism
Notify QA Tester / Client the build is available
By building on Travis CI, we partially saved the PM’s life by automating the building and environment configuring process.
The well-built (and tested) project build is now ready for delivery.
Why don’t we further automate the delivery stage?
Beyond Auto-building – Automating the delivery process
Our engineers prepared a reusable script that basically helps initiate the Travis CI settings for every iOS project.
With proper settings and valid API keys, the deliverable built on Travis CI will then be delivered to other App distribution platforms.
Developers only have to put required the certificates, provisioning profiles and API Keys in the corresponding directories.
Then fill in the blanks for project settings in travis.yml.
The repository also includes scripts that enable signing and uploading. Project code will be compiled upon pushing to branches, then uploaded to Testflight / HockeyApp, and the dSym files will go to Crittercism as well.
Now, the latest build will be built and delivered automatically, available for beta testing in a minute.
Oh, we even have the build result pushed to Slack. So other team members in channel could keep track on the progress.
Life gets better
Required Set-up time for Travis CI : 1 day (Before) → 30mins (After)
Steps to deliver a build : Push, pull, fix dependencies, build, upload to various places, delivered (Before) → Push, delivered (After)
Bonus: Sometimes a project could be built on Bob’s machine but not in Ada’s.
Integrating the CI process also standardizes build settings among developers (CI setting as the standard).