There is no escaping Jira. Jira has become the gold standard when it comes to tools supporting agile methodology. Given the size of the Jira footprint it would be downright foolish for DevOps tools not to make use of the APIs and integration offered by Jira, and FlexDeploy is no exception. Jira integration has been supported since FlexDeploy 3.7 but since FlexDeploy 4.5 we can now leverage FlexDeploy’s Release Orchestration and Pipeline Automation in conjunction with Jira, resulting in some pretty impressive effects.
Some of the key benefits of integrating your FlexDeploy Release/Pipeline with Jira:
- Developers spend less time updating statuses in Jira
- Project and Release Managers spend less time asking developers to update Jira statuses
- Reduced chance of statuses being incorrect or misleading in Jira
- In depth reporting based on Jira Issues (more on this later)
In order to integrate Jira with FlexDeploy release and pipeline features, we should ensure the following:
- Jira Workflow has steps that are similar to our Release Pipeline in FlexDeploy.
- Jira instance is configured to update Issues after environment deployment.
- FlexDeploy Projects are linked to Jira Issues.
Jira Project and FlexDeploy Release
For this blog article I have created a Jira Project called ‘HR’ and a corresponding FlexDeploy Release. Below is the Jira Board for the project where there is a single story in the ‘Development’ step.
Below is the FlexDeploy Pipeline for our HR Release. For more information on configuring Releases and Pipelines you can check out these posts as well as the documentation on the wiki.
We can see that our Pipeline will deploy our code across 5 environments:
- Unit Test
- System Test
- User Acceptance Test
- Performance Test
FlexDeploy Jira Configuration
The last thing we need to do is make sure that FlexDeploy is updating the Jira statuses as projects move throughout the Pipeline. The below information is configured under Administration->IssueTrackingSystems->Jira.
Note: There are few additional configuration steps, such as setting up your status codes, populating urls etc.
Linking Jira Issues to FlexDeploy Projects
There are a couple of ways we can associate FlexDeploy Projects to Jira Issues. The simplest way is to add the Jira Issue to the commit message when pushing a change to source control. Consequently I used HR-2 in my Git commit message.
My project was using Continuous Integration so once I pushed the above change the build and linking happened automatically. Continuous Integration allows FlexDeploy to monitor Source Control for changes and initiate builds without anyone having to manually come click the build button.
Running through the Pipeline
Pipeline Execution can be easily reviewed using the FlexDeploy release dashboard. It may help to take another look at the Pipeline. I won’t be covering every status update along the way but will showcase a few key checkpoints.
Stage 1 (Unit Test)
Immediately after our build, FlexDeploy starts the Pipeline and executes Stage 1. Stage 1 has no gates and only one step ‘Deploy All’, therefore our code immediately deploys to our Unit Test environment and Jira Status is updated to Unit Testing.
Stage 2 (System Test)
The System Test stage has a few key differences compared to Unit Test. There is a deployment window gate of 12 – 1pm, which we can see below.
Once the gate criteria is met, our deployment will be released to System Test and new status is updated in Jira. Lastly, we will execute some System Tests, and test results will be used to control whether to progress to User Acceptance Testing environment or not.
Stage 3 and beyond
The pattern throughout the remaining environments remains the same apart from different gates and steps. Ultimately the pipeline ends with the final deployment to the Production environment at which point the Jira status will be updated to Complete.
A final look at our Jira Issue and the FlexDeploy project execution (I overrode the final deployment window in the Production environment to run immediately).
Viewing the Issue History
The Jira Issue is also searchable in the Environment History Report to quickly allow you to view the life-cycle of a particular Issue.
Alternatively you can just export the entire report to gather information or filter on multiple Jira Issues. The latter can be particularly helpful to get all the Jira Issues for a particular Release.
Once known as a bug tracking tool, Jira has evolved into the de facto standard for teams implementing agile methodologies. Many organizations are making Jira the center of their universe for managing software releases, and therefore, creating a demand for integration into their overall DevOps solution. FlexDeploy’s Jira integration promotes the strengths of both products to create one seamless user experience!