Case Study
20 Apr 24 1 min. read

Waitrose: Successful Migration From Jenkins to Bitrise

How our mobile app developers helped Waitrose with a server migration.

From Jenkins to Bitrise.

This case study explains the migration journey Mindera undertook in collaboration with Waitrose & Partners to transition the Waitrose Grocery iOS/Android Apps CI/CD platform from Jenkins to Bitrise cloud infrastructure. Join us for this adventure and enjoy the journey!

Case Study Overview

  • Client: Waitrose & Partners
  • Industry: Retail
  • Project: Waitrose Grocery Apps iOS & Android
  • Tech used: Bitrise (previously Jenkins), Fastlane, BrowserStack, TestFlight

About Waitrose

Waitrose & Partners is a major British supermarket chain. Founded in 1904 as a high street shop in Acton, Waitrose was initially known as Waite, Rose, and Taylor but was later shortened to Waitrose with the departure of one of the founders. The business has always been focused on varied and high-quality products. After initially acquiring several small shops in Acton, Waitrose moved into wholesale trade, even supplying the Catterick army camp when World War One broke out!

Eventually, Waitrose began opening supermarkets after a series of award-winning window displays that promoted products from across the globe! Fast forward to 2023, Waitrose has 329 shops across Great Britain and the Channel Islands and a 5.1% share of the grocery market, making it the 12th largest grocery retailer in the UK.

Executive Summary

Mindera has a long-standing relationship with Waitrose Digital, a Partnership which started when Mindera were asked to work on the development of the Groceries Apps on iOS & Android. These Apps were designed/developed from scratch and launched in the AppStore/PlayStore in 2018/19. Since then, Mindera has continued to work in collaboration with Waitrose to maintain and implement new exciting features keeping Apps in sync with the latest technology and specifications. Recently Mindera undertook the CI/CD migration from Jenkins to Bitrise on both iOS & Android platforms

Six mobile phones in a diagonal formation, each displaying a different screenshot from the Waitrose app.

CI/CD Migration Journey

Why Migrate?

Since the start of the project (5+ years), we have been using Jenkins successfully as our CI/CD tool for both iOS & Android platforms. Over the years, projects have grown significantly in size and complexity, with a number of great feature implementations, the addition of new frameworks and supporting extensive test scenarios. Pretty exciting stuff right?

As the American novelist Nathaniel Hawthorne said, “Time flies over us, but leaves its shadow behind”, and this is no different for machines.

With the same computation power from day one, our on-prem machines began to exhibit signs of ageing and progressively slowed down due to the significantly increased build and test workload. As machines struggled to cope with the resource demands, we encountered problems within our pipeline, causing build/release delays. Not a good place to be!

Also, for the iOS platform, the final nail in the coffin was at the start of 2023. Our machines fell short of the prerequisites for updating to the latest macOS version. This meant we were unable to install the latest security or Xcode updates, depriving the team of access to Apple's newest features and advancements, which of course, was a concern for us and our partner! We’re Mindera and we love innovating and iterating to come up with solutions for our partners by working tirelessly on the problem.

So, without further ado, we embarked on migrating to Bitrise, a fully managed platform as a service (PaaS) solution.

Jenkins Vs Bitrise

A table comparison of Jenkins and Bitrise features.

Migration Steps

Both Android and iOS followed a similar approach to migrate to Bitrise. Each platform had its own unique set of hurdles to overcome in this process. We delve deeper into the iOS journey in this section, but first, a super quick note on the Android side.

The reshaping of the release process in Android demanded meticulous restructuring and automation to seamlessly adapt existing workflows to the Bitrise platform. Of course, there are many areas where the iOS and Android migration processes overlapped and faced common challenges; To avoid repetition and duplication and also save you time reading this, we will shine the magnifying glass solely on the iOS migration journey here.

1. Discovery Of Bitrise Suitability

The initial phase involved conducting a set of preliminary spikes (information gathering) to assess the feasibility of using Bitrise.

Our first task was to set up a pipeline for building and executing unit tests. We began by configuring the project repository and installing the necessary components for application building. Using Fastlane allowed us to leverage existing scripts, further streamlining the process and ensuring no unexpected changes occurred. Using the same script tooling, we proceeded to run our unit tests. To complete this pipeline, we created a trigger that would get initiated whenever a Merge Request was opened. So whenever our developers committed new code to our repository, this pipeline would download the code, build the application, and evaluate our unit tests.

After completing the initial spike, we allowed it to mature for a couple of months, making minor adjustments along the way. During this period, Jenkins remained our primary CI/CD platform.

Subsequently, we tackled the spike for UI tests. Since we had already laid some groundwork, our objective was to find a way to replace the iPhone 6s device (one of the oldest members of the iPhone family, can you believe it? It was required to run tests to cover all supported devices for the Waitrose App) connected to our Mac mini, with a cloud-based solution. Given that our partner was already using BrowserStack for other development purposes, we created a new pipeline on Bitrise that would build the app and send it there. BrowserStack would then execute the UI tests on the specified devices and provide us with the test results.

With these two spikes being a success, we were confident enough to proceed to the next step.

2. Beta Distribution

Beta distribution pipeline migration involved creating a release candidate and sending it to the App Store Connect portal, specifically TestFlight, which serves as a testing build repository, accessible to our Quality Assurance (QA) team. We use these builds to manually check for any potential regressions.

To send the build distribution to TestFlight, access to the portal is required. We achieved this by making use of the Bitrise Secrets feature. This functionality allowed us to store confidential information in an encrypted environment. Despite the data being protected, we have full access when the pipeline runs. This implementation significantly simplified security access for developers.

After this simple configuration, we just needed to set up the trigger for every new commit on the developer branch.

3. Release Distribution

Our release process follows a similar pattern to the Beta distribution; however, this time, it involves sending the build to the Waitrose App Store Connect.

This switch may appear straightforward, but it involved overcoming certain challenges.

As there weren't any built-in security features in Jenkins, an extra manual step was required to sign the application for every single release, which only the Waitrose team could perform. To address this issue, we moved to Bitrise, which allows us to securely store Certificates and API keys.

With this capability, the Waitrose team can log into Bitrise and add the necessary data securely. Although some additional configurations were required, Mindera successfully eliminated the manual steps, streamlining the process. As a result, Mindera developers/QAs can now directly upload the app to the Waitrose App Store without any manual intervention.

4. Final Wrap-Up And Ready To Go

We started strong and finished stronger! We ticked off a key milestone for our Partner, with the Apps pipeline running with Bitrise as the main CI engine now and Jenkins is history! There are a few minor tweaks to refine some tooling, tidy up leftover files/tests and then we will be onwards and upwards to utilise Bitrise to its maximum potential.

BitriseJenkins roadmap (4).png

What We Achieved For Our Partner

Initially, opting for Jenkins appeared cost-effective, but it came with numerous hidden expenses. Building and maintaining Jenkins required a multidisciplinary team, consuming valuable people power to ensure it stayed up-to-date. Moreover, the release process lacked full automation, and the system's inflexibility posed challenges.

However, after migrating to Bitrise, we successfully reduced the infrastructure overhead, minimised the efforts required for maintenance and also have a much more stable platform. We no longer have outdated software running the processes; we now benefit from a pool of devices to choose from, all managed by Bitrise.

Furthermore, our pipelines experienced significant speed improvements on both platforms. We have so far observed more than a 40% reduction in build times. With Bitrise's machines equipped with the new Apple silicon processor, enhanced computing power is available for pipelines. Saving time is always a win in projects like this!

Jenkins vs Bitrise average build time comparison table

Thanks to Bitrise's robust security features, we eliminated some manual steps in the app release process and moved closer to a fully automated CI/CD approach. This includes avoiding the need to resign the application and allowing us to streamline the upload step, resulting in a more efficient and consolidated release workflow.

Looking For A Tech Partner? We’ve Got You Covered!

Waitrose & Partners is one of many companies that Mindera has collaborated with to help with business goals in the digital sphere. By modernising web and mobile apps and developing products from scratch, Mindera’s teams have worked on this project and can’t wait to see it continue to gain ground.

If you require a tech partner for your business, visit our services page to discover what we offer. We’d love to work as an extension of your team and help your company achieve its goals!