2018: Biggest Shakeup in Years for iOS Release and CI/CD Process. How to Prepare for 2019

In 2018,  Mobile DevOps and CI/CD world have been shaken up by some big announcements and news. These announcements are either from Apple or from the open-source communities,  but these will change the traditional ways of doing CI/CD for iOS apps for sure. In this post, we will look back in 2018 to look forward in  2019.  We will see what has been changed in 2018 in the Mobile DevOps and Continuous Delivery for iOS apps and how it will potentially impact the iOS release and CI/CD process in 2019.

1. Apple + BuddyBuild

On new years day of 2018,  Apple acquired BuddyBuild and things in Mobile DevOps changes drastically. BuddyBuild is one of the great cloud CI/CD services for mobile apps. Since BuddyBuild becomes part of Apple, they have discontinued the support for Android apps. Also stopped receiving the new customers for iOS apps. This news was one of the big shocks for the companies using BuddyBuild service for both Android and iOS. These companies need to hunt for another CI/CD service for the Android apps which results in the costly migration work. This was also a big lesson for the companies using the Cloud-based CI/CD services, it makes them think whether to manage the mobile infrastructure in-house or outsource it to other companies.  We have covered the pros and cons of managing the mobile DevOps infrastructure in-house here.  Apple and BuddyBuild merger also put the future of Xcode Serve in question. This is also an alarm bell for the companies using the Xcode Server at the moment.

Looking Forward To 2019:

  • Looking for common cross-platform mobile CI/CD solutions for both Android and iOS? It’s time to look for other mobile-specific CI/CD services like Travis CI, Nevercode, Bitrise, Circle CI etc whatever suitable for your project infrastructure. Or Manage the mobile Infrastructure in-house using Jenkins, TeamCity etc if you have dedicated resources with skills.
  • Looking for iOS only solution? Wait till WWDC what Apple + BuddyBuild has to offer before moving to any other services.
  • Existing Xcode Server users can carry on using as it is, till we get news on the future of Xcode Server.

 

2. App Store Connect API

Another breaking news in 2018 was Apple’s announcement of AppStore Connect API. At WWDC 2018, an official API has been announced to talk to both Apple Developer portal and iTunes Connect. Apple has also combined Developer Portal and iTunes Connect and rebranded it as ‘App Store Connect”. There are great WWDC sessions on What’s New in App Store Connect and Automating App Store Connect

App Store Connect API is standard RESTful API based on JWT (JSON Web Tokens) for authentication and can be accessed from all platforms. With App Store Connect API, we can automate almost everything related to App Store including

  • Managing certificates, provisioning profiles, managing device ID and bundle ID
  • Managing users, roles and App access of App Store Connect
  • Managing TestFlight and Beta Testers and Public Links
  • Downloading financial reports and Sales reports

XCBlog has covered the App Store Connect API in details in the earlier post. The App Store Connect API will remove lots of third-party tools from the current CI/CD process. No wonder, there will be hundreds of open-source tools comes in the market that uses App Store Connect API under the hood.

Looking Forward To 2019:

The App Store Connect API will remove lots of third-party tools from the current CI/CD process. No wonder, there will be hundreds of open-source tools comes in the market that uses App Store Connect API under the hood. Be prepared to use those shiny new tools or write your own custom tool to match your project requirements using the App Store Connect API.

3. Retiring Fastlane

Fastlane has been used for automating iOS deployment pipelines for many iOS apps and it served well so far. As Apple has drastically improved the automation workflow in Xcode Server and third-party CI/CD services handle most of the underlying automation, the use of Fastlane tools getting redundant. Apple never provided an API to connect to Apple Developer portal or iTunes Connect. That’s the reason most of the iOS Developer has chosen Fastlane for automating iOS deployment pipelines. However, with Apple’s announcement of AppStore Connect API, most of the Fastlane tools will become redundant and sooner or later has to replaced with native Apple developer tools. The Fastlane community also become quiet on Twitter and Github, the project on Fastlane CI has been deprecated as well. This indicates that Fastlane has to be retired sooner or later. Be prepared for the shiny tools and App Store Connect API.

Looking Forward To 2019:

The bits of Fastlane tools like scan, gym will still work fine to build and test an iOS app but sooner or later you will have to adopt the new flow based on App Store Connect API. Prepare yourself to decommission Fastlane tools which are no longer needed e.g boarding.

Sooner or later, you have to migrate to the new workflow so it would be a great idea to start preparing for new tools and retire Fastlane and Ruby thingy from iOS projects.

4. TestFlight Enhancements + Phased Releases

Apple has launched TestFlight public links support where we can share the link and get peoples to test out the beta app. Public links can be sent out to up to the 10K testers but we can set the limit. The links can be disabled or enabled anytime to control the numbers testers. The most of the TestFlight features like creating groups, assigning builds to the group, manage public links, manage testers and test information can be automated using an App Store Connect API. The Phased releases for Continuous delivery + TestFlight enhancements can work together better for fearless releases.

Looking Forward To 2019:

Start using the public links for the TestFlight builds but be careful while sharing. There is the risk to leak the features to the public before we release. Start automating the process of managing the testers, group using the App Store Connect API.  Take a benefit of Phased release to test specific features in production without risk.

5. App Store Connect- iOS App

Apple also launched “App Store Connect” iOS app so that we can perform almost all the activities from the iOS devices without the need to go to the website. In the iOS app, we can

  • See the Trends, Sales, and Updates, In-App Purchases, App Bundles
  • All our Apps and ability to switch to the development team.
  • Detailed App Information, release/reject apps, manage user reviews and set up notification

There are many things about pre-orders, In-App-Purchases etc from the iOS App.

Looking Forward To 2019:

Make use of iOS app to manage the all the App Store Connect features from your mobile.

6. New Xcode Build System

Xcode New Build System has been activated by default in Xcode 10. You can read complete release note of the new build system here. We have covered the internal details of the new build system in our previous blog post. The new build setting can be activated from Xcode Files-> Project/Workspace Settings and we can toggle between legacy and new build system. On the CI server, from command line using the xcodebuild then we have to pass additional parameter -UseModernBuildSystem=YES  will also force the new build system. You can read more about the Xcode new build system can be used on the previous XCBlog here. Using the modern build system, we can improve the Swift build time drastically by following some basic tips mentioned here.

Looking Forward To 2019:

Xcode new build system is designed to find the issues that can not be determined with the usual flow. We may need to adapt our iOS apps to help build the system to its job properly. We might get some failures when the new build system is enabled, we should fix those on a fly.

7. AI-Based & Parallel Testing

There are many AI-based, codeless mobile testing tools emerging in the market which takes an iOS app, generate test scenarios and execute them in the cloud. These tools also report basic issues in the apps without any configuration. Currently, there are few AI/ML-based mobile testing tools available in the market e.g test.ai for the mobile testing. The Applitoolsuses AI for visual regression testing. Bitbar announced the AI-driven app testing solution also known as AI Testbot to test mobile apps using Artificial Intelligence. These tools might change how QA activities performed in future and how AI-based tools can be used to support the iOS testing efforts.

Apple also improving the testing technologies every year. In 2018, support for the parallel testing has been announced to the next level by parallelizing test suites within single simulator by creating clones of the simulators. Xcode creates a different runner process under the hood and each process gets specific tests assigned. This reduces the test execution dramatically. More about Xcode Parallel testing here.

Looking Forward To 2019:

Make use of AI-based testing tools for testing iOS apps and adopt the parallel testing support for XCTest.

8. Easy Ways of Deploying IPA files

As of now, there were limited option to deploy the IPA files to the App Store Connect. The most common options are local Xcode, Application loader, Fastlane, ITMSTrasporter or altool. You can read in details about these options in details here. However, at 2018, we got couple more options to deploy the IPA files

  • Using ITMSTrasporter from Linux Server. Details here
  • Using xcodebuild to upload IPA file directly to App Store. Details here

This will allow CI/CD servers to upload the pre-generated IPA files to the App Store more smoothly or even from the Linux servers.

Looking Forward To 2019:

Deploying iOS apps from the command line using xcodebuild tool using exportOptionsPlist. GIve it a try to transfer IPA files to linux servers and use ITMSTransporter to deploy the apps to App Store.

9. CI for Mobile SDK and Swift Libraries

As the popularity of mobile apps is growing, most companies need architecture to build mobile apps faster. Therefore, in order to assure the quality and reuse existing code in multiple apps, companies started to build reusable software development kits (SDKs) and libraries so that the code can be easily reused in multiple apps. As the library code can affect multiple clients, it’s essential to ensure that the code quality of the SDK meets the requirements of all clients. In most of the companies, there is a setup of CI/CD infrastructure for the main apps but none for the libraries and SDKs. In reality, continuous integration for libraries and SDKs is very important, even more, important than CI for the main apps.

Continuous Integration for Mobile SDK can be achieved by various cloud-based CI services, one of my example post on Nevercode blog here how it can be done with Nevercode but it can be done with other CI services that you are using at the moment.

Looking Forward To 2019:

The trend of adding the CI for iOS SDKs and libraries will definitely increase in the near future so get all your mobile SDK and libraries on the CI server.

10. GitHub Actions

GitHub has launched the service GitHub Action which can be used for CI/CD of the Swift Packages from the Linux based docker containers. The detailed blog post how to setup CI/CD with Github Action for Swift packages here. The Github Actions can be considered as GitHub’s own CI/CD solution inbuilt within Github itself. The developers can create workflows using the GUI Editor or from the code.

Currently, this service is limited to the Linux Docker-based builds but who knows we can get the macOS images to use the GitHub actions. We can wait and watch what GitHub Actions brings to iOS development in the near future.

Looking Forward To 2019:

Keep an eye on GitHub Actions roadmap for iOS CI/CD.

Conclusion

In 2018, there are so many good things happened to release the iOS apps smoothly. Keeping all those news in the mind, we can prepare for 2019 and see what is coming next for the iOS release and CI/CD process. Hope I have covered the most of the stories from 2018, please let me know what you think & also ping me if I have missed anything