Automation DevOps iOSDev

Apple Acquires BuddyBuild. Oh, My Xcode Server !

I didn’t expect that this will be my first blog post of 2018. On my holiday,  I read the tweet that ‘Apple Buys BuddyBuild’ and It raised my eyebrow, I blinked and read the tweet again. I quickly checked BuddyBuild twitter handle, there wasn’t any tweet, googled it and found that Tech Crunch, CNBC and BuddyBuild blog confirmed this news.

This news is certainly exciting news for me considering the work I am doing on iOS DevOps and CI/CD. I picked up the phone and congratulated Dennis on Twitter.

Me and BuddyBuild

It wasn’t too long that I met BuddyBuild team in person and got the pack of t-shirts delivered to me for my work on iOS CI Olympics 2017. I just had conversation personally and on Twitter with Dennis, Chris and Alysha at London BuddyBeers meetup in October 2017.

I got in touch with BuddyBuild when I was running iOS CI Olympics 2017. Being passionate about iOS Continuous Integration and Continuous Delivery, I have conducted Olympics of top 5 cloud-based iOS CI services with 20 different criteria and BuddyBuild was the winner. You can read series of blog post here

The final medal looked like this:  BB = BuddyBuild BR= Bitrise TC= TravisCI   NC= NeverCode CC= CircleCI

During this evaluation, I got huge support from BuddyBuild team to understand the key concepts and working of BuddyBuild. As BuddyBuild became winner, they posted the result of the Olympics on BuddyBuild blog iOS Continuous Integration & Deployment Comparision

BuddyBuild sent me some t-shirts that I distributed to my colleagues at Yoox Net-A-Porter.

Me and Xcode Server

Although I liked BuddyBuild a lot, I never tried to use it for the projects I am working on because we use TravisCI and I have set up fully automated end to end pipeline to deploy iOS apps straight to iTunes Connect using Fastlane.  Recently I set up some Xcode Server bots to iOS to get ad-hoc builds on devices and running XCUITests on real devices.  We keep looking for the new build system but my love for Apple developer tools never take me outside of Xcode Server. I love Xcode Server a lot, I hate Xcode Server a lot either way I was hooked into Xcode Server. That’s because of all my love towards Apple developer tools. I did lot of things on Xcode Server e.g

  • Wrote Ansible role for Xcode Server to manage mac Minis. Read detailed post here
  • Integrated Xcode Code Diagnostic tools with Xcode Server. Detailed post here
  • Integrated Slack with Xcode Server bots. Detailed post here
  • Wrote the detailed guide on setting up Over The Air installation. Detailed post here
  • Complained about its pitfalls on Twitter and submitted bugs to Apple. Read limitations here. Apple closed my bug report on Pull Request testing on Xcode Server as duplicate and never given me the details of the original bug.
  • After WWDC 2017 talk on Xcode Server, immediately published the blog with latest Xcode Server features. Read the Xcode Server + Xcode 9 blog here

All these things I have done so far looks like gone in vain. I don’t know what’s going to happen Xcode Server now. In reality, Xcode9 and Xcode Server are really playing well, apart from Pull Request testing support. Almost everything from code signing, automatic device registration, real device testing, over the air installation all became such painless. It was doing way much better than Jenkins, TeamCity and other self-hosted CI solution apart from Pull request testing.

Now I am keen to see what Apple will do with Xcode Server, Do they kill it completely? Or they will keep still keep it self-hosted CI solution and BuddyBuild became Cloud CI solution. Exciting times ahead!

What About Dear Fastlane

Latest Xcode Server almost removed the need for Fastlane as everything is inbuilt in the Xcode Server. BuddyBuild guesses everything looking at the Xcode projects in the repo and does its own things which hardly need Fastlane.  However, It works well for setting up scripted pipelines on TravisCI or CircleCI successfully as they don’t guess anything. Everything has to be scripted. The annoying thing about Fastlane is they trying to do too much, really really too much. Almost publishing the new version every day. Always chasing Apple, chasing Google, chasing Third Party integrations etc. Stay Calm, Fastlane!

Nowadays, Swift version of Fastlane is incredibly crazy Swift wrapper to execute Ruby commands. I wrote about my first impressions of Fastlane Swift here. It would be interesting to see how Fastlane will perform in the competitive iOS CI/CD world.

Where is the problem?

This is purely my personal opinion but I feel that Apple is not a problem, not the third parties. The basic problem remains in the amateur world of iOS Developers. I am not saying all but most of the iOS Developers only know Xcode and few Apple Frameworks, they can write complex Objective-C/Swift code but can’t run a single command from the terminal. How do you expect them to learn underlying tools that Xcode uses to perform all the iOS development activities like building, testing, archiving etc? How do you expect them to script iOS CI/CD pipelines using tools like Codesign, xcodebuild, plistbuddy, agvtool. These lazy buggers want Xcode to do all these things for them and if something goes wrong they have to put their blood and sweat in it. Some experienced developers whose beard goes grey by doing iOS development still find it hard to deal with code signing activities. Some developers are great at scripting and understand all these tools they won’t ever face these problems or they won’t need any automatic solutions to deal with CI/CD. They should understand the simple fact that knowing UIKit and some Apple Framework doesn’t make them good iOS developers, they should also learn command line tools and scripting languages to deal with CI/CD-related issues. They should take control of scripts and do whatever they wish rather than someone guesses whats on their mind and do the stuff for them.

Apple can’t make them happy all times

I am sure, Apple knows this problem that iOS developers want everything in Xcode and didn’t want to use scripting or command line tools. Every year, Apple puts new buttons in Xcode that does something under the hood. While t comes to the server, everything has to be scripted. Xcode Server is one the tool to allow developers to perform CI from Xcode itself. They introduced and solved the pain of code signing by automatic signing feature in Xcode. In short, Apple is trying hard to make them happy. The acquisition of BuddyBuild is another step to handle everything from Xcode.

What Next? What to Expect

It would be very exciting to see what will be announced in WWDC 2018. There are certain possibilities that might happen

  • Apple will keep Xcode Server as Self-hosted CI Sevice and BuddyBuild as Cloud CI Service.
  • BuddyBuild won’t support open-source projects so prepare to migrate to TravisCI, CircleCI or Bitrise.
  • Apple might kill Xcode Server completely and support only one CI service. If you running Xcode Bots with multiple mac Mini servers, then prepare yourself for other self-hosted CI solution like Jenkins, TeamCity etc
  • Expect Cloud Xcode Server or similar  in WWDC 2018
  • Might be device lab for running tests in the cloud in real devices. No CI has devices attached to the cloud at the moment. We have to use some sort of services like AWS Device farm, Saucelabs etc
  • Forget about Infrastructure as code. Assume that you won’t have control on CI/CD pipelines. Let them guess your Xcode project and do the stuff. Or depend on UI configuration browser or Xcode.
  • Be Ready to drag your development and distribution certificates from finder to Xcode or browser. Don’t worry someone else will take care of code signing activity which will be amazing.

Conclusion

BuddyBuild acted as the market leader by providing great services to the customer and great product. The bunch of nice and talented people now became part of Apple. I wish them good luck and expect some great product this year. Congratulations Dennis and team for such a great achievement. We all are excited to see what you build this year!