Get started with Jira Service Management for admins
Your first stop for learning how to get started with Jira Service Management.
Changes to Free and Standard plans in Jira Service Management
As of October 16, 2024, change management for Jira Service Management will move from Standard to Premium plans. After this point, only Premium and Enterprise plans will have access to this feature.
Existing projects in Free and Standard plans will continue to support existing request types and issue types. Read more about the plan changes.
Use deployment gating to create a change request with an approval gate at any stage in your Jenkins pipeline. Control if (and when) the pipeline should continue using statuses in the change request Jira workflow. Stakeholders can allow or prevent the deployment from Jira Service Management.
Before you can use deployment gating, you’ll need to:
To use deployment gating with Jenkins:
Go to your Jenkinsfile.
Find the stage in the pipeline where you would like to raise a change request. For example, before the ‘Production’ deployment stage.
We recommend adding 2 stages to your pipeline for deployment gating: One stage to raise a change request, and another stage to check the status of the change request.
Add the following snippet to your pipeline, replacing your Jira site name, environment ID, environment type and service ID(s) you copied from your Jira Service Management project.
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
stage('Request approval') { // Raise change request
steps {
echo 'Raise change request...'
jiraSendDeploymentInfo(site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1',
environmentName:'us-prod-1',
environmentType:'production',
state:"pending",
enableGating:true,
serviceIds: [
'<YOUR-SERVICE-ID>'
]
)
}
}
stage("Approval gate") { // Check request status
steps {
retry(20) { // Poll every 30s for 10min
waitUntil {
sleep 30
checkGatingStatus(
site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1'
)
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
stage('Request approval') { // Raise change request
steps {
echo 'Raise change request...'
jiraSendDeploymentInfo(site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1',
environmentName:'us-prod-1',
environmentType:'production',
state:"pending", // Deployment has not started yet
enableGating:true, // Notify Jira the pipeline is gated
serviceIds: [
'<YOUR-SERVICE-ID>'
]
)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
stage("Approval gate") {
steps {
waitUntil {
input message: "Check for approval?" // Manually trigger check status
checkGatingStatus(
site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1'
)
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
stage("Approval gate") {
steps {
waitUntil {
sleep 30 // check status after 30s
checkGatingStatus(
site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1'
)
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
stage("Approval gate") {
steps {
retry(20) { // Retry every 30s for 10min
waitUntil {
sleep 30
checkGatingStatus(
site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1'
)
}
}
}
}
Raise a change request and wait for approval before deploying to production. When the approval is complete, restart the pipeline automatically.
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
pipeline {
agent any
stages {
stage("Test") {
steps {
echo "Deploying to test"
}
}
stage("Stage") {
steps {
echo "Deploying to staging"
}
}
stage('Request approval') { // Raise change request
steps {
echo 'Raise change request...'
jiraSendDeploymentInfo(site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1',
environmentName:'us-prod-1',
environmentType:'production',
state:"pending",
enableGating:true,
serviceIds: [
'<YOUR-SERVICE-ID>'
]
)
}
}
stage("Approval gate") { // Check change request status
steps {
retry(20) { // Poll every 30s for 10min
waitUntil {
sleep 30
checkGatingStatus(
site:'<YOUR-SITE>.atlassian.net',
environmentId:'us-prod-1'
)
}
}
}
}
stage("Production") {
steps {
echo "Deploying to production!!"
}
post {
always {
sh 'sleep 2'
}
// Notify Jira based on deployment step result
success {
jiraSendDeploymentInfo (
site: '<YOUR-SITE>.atlassian.net',
environmentId: 'us-prod-1',
environmentName: 'us-prod-1',
environmentType: 'production',
state: 'successful',
serviceIds: [
'<YOUR-SERVICE-ID>'
]
)
}
}
}
}
}
Was this helpful?