Overview
Cellebrite Ltd. is a market leader in extracting data from mobile devices, for the retail and forensic markets. The company has adopted Microsoft’s Team Foundation Server and uses the majority of its capabilities including: source control, work item tracking, automated builds, reporting, and project management. The company’s source code spans several hundred individual Visual Studio projects, where about 80% of them are native C++-based and 20% are C#-based.
Challenge
Process change – Moving the development team to using a gated check-in methodology. A code check-in cannot take place before an incremental build is successfully executed. In gated check-in methodology it is essential to make sure that your latest version always passes compilation. This process is done many times a day per developer. When the process takes too long the developer will tend to either postpone their check-ins or start working on a different task before they make sure that their current check-in has passed; they may just simply wait for it to finish, significantly reducing productivity. For Cellebrite, an incremental build took between 5-6 minutes. The goal was to reduce this process to around 1 minute.
Packaging – Cellebrite has a large number of customers, each requiring individual branding and licensing.
As a result, the company must individually pack and distribute a significant number of end-products. A check-in task can pass a compilation process but fail in the packaging process. Cellebrite’s packaging process took 2 hours. Consequently, developers avoided verifying that their check-ins caused the packaging process to fail. The challenge was to provide the developers with a testable installation package in less than 10 minutes.
Solution
Cellebrite uses Incredibuild to parallelize two long and complicated team build-based processes:
- Compilation – the generation of executable artifacts from source code.
- Packaging – the generation of installable end-products from compilation artifacts, branded and licensed to individual customers
Cellebrite has completely revamped its build process. The company is using Microsoft TFS with Incredibuild acceleration to streamline its development process. While in the past a single product release for all its customers would take a number of hours, today the company can issue a complete release cycle in less than an hour. Furthermore, the new standard is that a single developer can check-in code and receive a testable installation package in no more than 10 minutes. This has led to a major shift in the way developers and QA engineers view their own build processes.
Benefits
Without Incredibuild’s parallelization capabilities, the speedup and resulting improvement in the development process would not have been possible. Incredibuild has dramatically reduced the build and packaging stages:
- Release Cycle Optimization – A complete product release cycle for all customized packages used to take a few hours; now it takes less than an hour. This has considerably improved time to market and saved major product release efforts.
- Significant Process Improvement – The smallest amount of code can be checked-in and tested individually with very little effort. If a specific package is found to contain bugs, it is simply discarded and a new one is built in its place.
- Reduced build and packaging time – Streamlined TFS processes, enabling scalable CI platform and making Agile development feasible.