Continuous Integration for Faster Releases and High Quality
On November 18th 2016, software and release engineers converged on Seattle for the RELENG Conference. This conference looks at best practices and innovation in release engineering. Scality’s release engineering team were there and presented an innovative new release process. Congratulations to our Scality team members: Rayene Benrayana, Sylvain Killian, Nicolas Trangez, and Arnaud Calmettes.
Releasing products with quality, speed, and innovative features is a major challenge for large software projects. About a year ago, we initiated a project to enhance our release process. We wanted to have an agile, continuous delivery model.
We set out to radically change our approach, easing the workflow for developers as well as ensuring correctness of meta-information. Our high-level goals of the project were:
- Allow long-term maintenance of version branches, minimizing the number of feature-rich upgrades required by customers’ demands for their business-critical information systems.
- Full automation of all processes, reducing room for error, and ensuring information retained in various systems is kept in sync by construction.
- Keep version branches in shippable state, increasing trust in the ability to meet delivery dates within a team, as well as within the company as a whole. As an engineer, this implies one can at all times start to develop a new feature on a ‘stable base’.
- Simplified workflow with fewer interruptions, improving understanding for all contributors, especially new ones, reducing room for human mistakes. Reducing the number of interactions a developer is to have with the system reduces the number of expensive ‘context switches’ during day-to-day development work.
- Retain meta-information and ensure its correctness by keeping links between semantically equivalent patches which allow to answer questions such as, “In which versions is this patch contained?” with confidence. Automation (see above) also ensures this meta-information is in sync between multiple systems (including VCS, code review, ticketing system, etc.,).
There was no available off-the-shelf solution that covered all these needs well and the team developed a new Git-based branching model with a set of innovative tools dubbed GitWaterFlow.
Today with the results of this work, we can now deliver new integrated releases every 6 weeks and the quality of those releases is now proven (we’ve had no Priority 1 support issues for the last 14 weeks and our overall bug backlog is dramatically lower than a year ago).
In the spirit of Continuous Delivery, Scality Release Engineering aims to ensure high quality and stability, to present short and predictable release cycles, and to minimize development disruption. The team’s experience with the GitWaterFlow model suggests that the approach has been effective in meeting these goals.
Visit the open-source repository for the GitWaterFlow tool.
Quality and Speed matter…