• Products
  • Documentation
  • Resources

How Jenkins for Jira works

This article is a reference guide explaining how the Jenkins for Jira app works. It may be useful to Jenkins admins helping a Jira team set up a connection between their site and a Jenkins server.

In most cases, this technical detail isn’t necessary for Jira Software Cloud admins or project teams, who should follow the guided connection process in the Jenkins for Jira app, or the article Integrate with Jenkins.

How Jenkins sends data to Jira

Whenever a pipeline runs in Jenkins, the Atlassian Jira Software Cloud plugin will look in the Jenkinsfile describing that pipeline for signs it should send data to Jira.

The plugin looks for two things:

  1. Specific instructions - jiraSendBuildInfo and jiraSendDeploymentInfo - within build or deployment stages.

  2. Specific naming conventions for build and deployment stages (if the plugin has been set up to look for them)

If the plugin finds either of these, it will look for Jira issue keys in the commit messages and branch names of code being built or deployed in those stage, respectively. If it finds these, it will send event data about those stages (such as whether a build was successful or failed) to Jira. If no issue keys are found, the plugin will not send data to Jira.

How Jira receives data from Jenkins

When your Jira receives event data from Jenkins, the Jenkins for Jira app displays relevant event data in your Jira issues, on the deployment pipeline, and in the releases feature. The app discards any events that don’t contain issue keys relevant to your site.

What you need to do

To receive build and deployment data from Jenkins:

  • The Jenkinsfiles describing your server’s pipelines must indicate when the Atlassian Jira Software Cloud plugin should send data to Jira

  • Your team must include Jira issue keys (e.g. FUSE-123) in their commit messages and branch names so Jenkins for Jira knows the event data from Jenkins is relevant to your site

Here’s how to set up your Jenkinsfiles to send data to Jira:

Use stage names to send build data to Jira

To send build events without having to add specific instructions in your Jenkinsfiles:

  1. Go to Manage Jenkins > Atlassian Jira Software Cloud > Advanced settings (optional)

  2. Enable the checkbox “Sends builds automatically”

When you enable this, the plugin will send an "in progress" build event to Jira once a pipeline run has started and a "success" or "failure" build event once the pipeline has finished successfully or stopped due to an error.

If you also specify a regular expression for builds, the plugin will only send a build event to Jira once a build step with a matching name has been finished.

The regular expression ^build$ would match the build stage in the following Jenkinsfile, for example:

1 2 3 4 5 6 7 8 9 10 pipeline { agent any stages { stage('build') { steps { echo 'build done' } } } }

Whenever the pipeline in this Jenkinsfile runs, it will send build events to all configured Jira Cloud sites on start and finish of the build stage.

Use stage names to send deployment data to Jira

To send build events without having to add specific instructions in your Jenkinsfiles:

  1. Go to Manage Jenkins > Atlassian Jira Software Cloud > Advanced settings (optional)

  2. Enable the checkbox “Sends deployments automatically”.

When you enable this, the plugin will send an "in progress" deployment event to Jira once a build step with a name matching the specified regular expression has started, and a "success" or "failure" deployment event once that build step has finished.

For this to work, the deployment steps in your Jenkinsfile must contain the environment name in their name. The regular expression must contain the fragment (?<envName>.*) to match the environment name so that the plugin can extract the environment name from the build step names.

Let's look at an example Jenkinsfile:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 pipeline { agent any stages { stage('deployments') { parallel { stage('deploy to stg') { steps { echo 'stg deployment done' } } stage('deploy to prod') { steps { echo 'prod deployment done' } } } } } }

 If the checkbox "Send deployments automatically" is enabled and the regular expression is set to ^deploy to (?<envName>.*)$, a run of the above Jenkinsfile will send "in progress" deployment events for the stg and prod environments to all configured Jira Cloud sites, followed by respective "success" deployment events once the build steps are finished.

Use explicit instructions to send build data to Jira

If you want more control over when to send build events, you can use the jiraSendBuildInfo build step:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { // previous to version 2.0.0 you must provide parameters to this command (see below)! jiraSendBuildInfo() } } } } }

This will send a "success" or "failure" build event to all configured Jira Cloud sites after the Build stage has finished successfully or with an error. The Jenkins plugin will automatically extract Jira issue keys from the branch name.

You can also specify a Jira site URL and instruct the plugin to only send build events to this Jira site (rather than to all configured Jira sites).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { jiraSendBuildInfo site: 'example.atlassian.net', branch: 'TEST-123-awesome-feature' } } } } }

Use explicit instructions to send deployment data to Jira

If you want more control over when to send deployment events, you can use the jiraSendDeploymentInfo build step:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 pipeline { agent any stages { stage('Deploy - Staging') { when { branch 'master' } steps { echo 'Deploying to Staging from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging' } } } stage('Deploy - Production') { when { branch 'master' } steps { echo 'Deploying to Production from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production' } } } }

This will send a "success" or "failure" deployment event to all configured Jira sites at the end of the stages Deploy - Staging and Deploy - Production.

You must provide the parameters environmentId, environmentName, and environmentType. The environmentType must be one of the following: unmapped, development, testing, staging, production.

You can provide the parameter site to specify to send the deployment events to a single Jira site instead of all configured Jira sites.

When multiple Jira sites are connected to a Jenkins server, the site parameter is required for jiraSendDeploymentInfo with enableGating:true. More details about Deployment Gating can be found here.

You can also specify a branch with the branch parameter to define the branch from which to extract Jira issue keys to connect the deployments with.

Example of a complete Jenkinsfile

You can mix build and deployments as in the Jenkinsfile below:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { jiraSendBuildInfo site: 'example.atlassian.net' } } } stage('Deploy - Staging') { when { branch 'master' } steps { echo 'Deploying to Staging from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging' } } } stage('Deploy - Production') { when { branch 'master' } steps { echo 'Deploying to Production from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production' } } } } }

View development information in Jira

Whenever you make a commit or merge a pull request in a connected source code management tool, like Bitbucket or GitHub, it should run the Jenkins pipeline you have specified for that repo. The development panel on your Jira issues will update to show any associated build and deployment information, as long as your team is including issue keys in their pull requests, commit messages, and branch names. Learn more about how to view development information for an issue.

View development information to Jira

If you’ve enabled the deployments feature in your Jira project, the Deployments page will show all your Jenkins deployments on a timeline. You can filter or search to view your deployments by environment, assignee, issue type, and more. And if your team is using releases and versions to organize your work, you’ll also find deployment information in the Releases feature.

Learn how to connect Jenkins to your Jira Service Management cloud project.

Learn more

Additional Help