Minimizing the Impact of CI/CD Failures with Backtrace and XebiaLabs
Meet Alpha, the Advanced Software Engineering company. Alpha is transforming the way they deliver software by implementing CI/CD processes with XebiaLabs and software quality management solutions with Backtrace. Let’s check in and see what they’re up to today.
Sarah is a lead software engineer on the team. She’s working on some new functionality to identify user’s browsers with the new browserClient attribute in their software. She saves the changes to her new Python code, runs through her functional tests, and commits to the master branch. XebiaLabs orchestrates and audits the entire CI/CD process for Alpha, beginning with the commit to the master branch, which has automatically kicked off a Jenkins process to generate the newest build, build 197, which contains Sarah’s new code.
As part of testing for build 197, the QA team uses a comprehensive suite of all commonly used web browsers for desktop and mobile devices. While running the tests, a number of errors are generated. Some of those errors are seen by the QA team with an error dialog in the UI, but some are silent errors that don’t produce any user facing error information. All the while, Backtrace is doing its job capturing, parsing, indexing, and grouping errors into actionable work units for Sarah the engineer. XebiaLabs alerts Sarah to the fact that there were some failures in testing build 197, and she immediately dives into Backtrace to see what went wrong.
Above we see XebiaLabs alerting Sarah that there are failures detected in testing the build.
Backtrace groups the errors accurately and shows Sarah that one of the call stack signatures looks to be referencing her new API work. Sarah uses Backtrace’s analytics to immediately assess the impact of that issue - Was this first seen in this new build? Is it happening to a single simulated user? Is it for a specific set of tests? On any specific web client? She is able to identify that this is the first time this issue was seen, and it only appears to be happening on the development channel for a popular web browser. Sarah also sees that no one assigned to the issue and no Jira ticket associated, so she decides to get to work on it herself.
She digs into the issue using the Backtrace Web Debugger, the power console for developers. Sarah sees the state of the app at the time of one of the errors, including the exception raised (it’s a KeyError), the stack trace with functions and line numbers, and all the associated metadata or attributes. As a Python developer, she's familiar with what a KeyError refers to, and sees that Backtrace has captured the full browser request and the value of the new key being extracted. From the value of this key and the associated source code view, Sarah sees some case insensitivity at work here. The key is coming in with capital letters instead of lowercase as was expected!
Notice that Sarah did all this through her web browser, without having to ssh to any environments or collect additional logs or error information. That's because Backtrace is transforming the way developers perform their debugging operation by automating many of the manual steps that they historically needed to go through as they debugged and resolved issues. This is becoming even more critical in the face of CI/CD, where test environments can be spun up and down in Docker containers very quickly, and access to the environments may be limited or unavailable.
Since Alpha is using XebiaLabs, they have all the controls they need to make sure the build 197 pipeline can continue or be halted, and that all actions are properly audited. QA and Sarah can either agree that the build should continue with this known issue being recorded and move into UAT for further testing or halt the pipeline and start again with build 198.
With XebiaLabs and Backtrace, Alpha is delivering on their goals of releasing high-quality software with the proper compliance and governance requirements that allow them to minimize risk and maximize speed throughout the process.
Backtrace is a cross-platform crash and error management solution designed to support continuous quality feedback across your entire development stack. Backtrace aggregates software error data throughout the SDLC and delivers it to development teams in one, easy-to-use dashboard system, helping them prioritize quality assurance processes and ensure long-term stability of their applications and services. Check out more info at https://backtrace.io/for/cicd.
Before you go, check our Periodic Table of DevOps Tools!