Allow me to introduce Cognifide’s nobility. No, we don’t support old-fashioned social hierarchies at Cognifide but we thought we’d give our team at this year’s Hackathon a head start with a confidently bullish name. And we went into it full of self-assurance. Our mantra, “we can do almost anything. Today we can choose how we improve the way we work”.
Team Nobility numbered seven keen developers in total. But we all wanted to be hands on. So we needed to focus on solving a problem that would allow us all to work away without hindering each other. We needed one idea that would allow us to look at separate modules, integrations and services simultaneously.
The issue that we decided to tackle was releases. In current projects we have multiple quality gates that need to be met before an application is ready to be released, those may include:
- The build is green - Maven build in Jenkins.
- Static code analysis - tracking of the number of violations shown by Sonarqube.
- Automatic tests have to be “green” - run by Jenkins.
- All tickets merged to the release branch in git need to be tested and accepted by QA - JIRA and Stash are used here.
- Manual sanity tests need to be done.
All very functional and impersonal and most of those quality gates need to be verified manually. For instance, we have two kinds of automated tests: Bobcat and AET. The first are functional tests based on Selenium WebDriver, whereas AET is a tool for a visual screen comparison over multiple breakpoints.
Of course, we do currently have a dashboard that looks to integrate all of these.
It’s based on Dashing (dashing.io) and gives us multiple information sources but never the whole picture. Some important details might be missed due to too much data on the board. We wanted to create something simpler. Something that would tell us whether we are ready to release or not, rather than giving us the number of violations in Sonarqube.
So we rolled up our sleeves and decided to create an application which could gather all of this information in one place, preferably in an attractive and more engaging way that we could show on the TV screen for all to see in our project space. It had to be simpler than the previous dashboard and more intuitive. The whole team should know at first glance: are we ready to release or not?
We decided to expand the capabilities already available in Dashing. We had some integrations already in place (Jenkins, Sonarqube) which we simply needed to refactor. Other ones (e.g. JIRA, GIT) needed to be written from scratch. And we wanted to change the UI side of our project. This made a great basis for efficient division of work.
For the additional integrations, we decided to create a Java application that would communicate with Dashing and provide it with all the data it needs. At the end of our six hour sprint, we were ready for the demo.
Allow me to present, The Nobility Board
Historically, our development teams have struggled with releases. They had to track multiple quality gates manually. Someone needed to check e-mail or Jenkins to see if the build passed. Then we needed to open Sonarqube and check the number of violations from static-code analysis. Our QA team needed to review the results of automated tests in Jenkins: both Bobcat and AET. A TPM would have to verify manually whether all issues in JIRA have been tested and accepted. Then, finally, a list of release blockers and known issues had to be tracked.
Now the Nobility Board gives you all the information you need. The whole team knows in a split second whether we are ready to release. And the best bit, the board makes you laugh. Every day a new joke appears and brings humour and a more personal touch to the release process.
Team Nobility were thrilled to win the 2016 Cognifide Hackathon audience prize. We’ll be back to follow that victory next year, but in the meantime, keep your eye open for The Nobility Board.