APIs related to integrating deployment data with Jira Software.
These APIs are available to Atlassian Connect apps. To use these APIs you must have the jiraDeploymentInfoProvider module in your Connect app's descriptor. See https://developer.atlassian.com/cloud/jira/software/modules/deployment/. They are also related to integrating Jira Software Cloud with on-premises tools using OAuth 2.0 credentials. See https://developer.atlassian.com/cloud/jira/software/integrate-jsw-cloud-with-onpremises-tools/.
These APIs are available to Forge apps with the devops:deploymentInfoProvider module in the Forge app's manifest. See https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-software-deployment-info/.
Update / insert deployment data.
Deployments are identified by the combination of pipelineId, environmentId and deploymentSequenceNumber, and existing deployment data for the same deployment will be replaced if it exists and the updateSequenceNumber of existing data is less than the incoming data.
Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are available within a short period of time, but may take some time during peak load and/or maintenance times. The getDeploymentByKey operation can be used to confirm that data has been stored successfully (if needed).
In the case of multiple deployments being submitted in one request, each is validated individually prior to submission. Details of which deployments failed submission (if any) are available in the response object.
write:deployment-info:jiraConnect app scope required: WRITE
string
RequiredDeployment data to submit.
Properties
array<DeploymentData>
RequiredProviderMetadata
Submission accepted. Each submitted deployment that is of a valid format will eventually be available in Jira.
Details of which deployments were submitted and which failed submission (due to data format problems etc.) are available in the response object.
The result of a successful submitDeployments request.
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
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestJira } from "@forge/bridge";
var bodyData = `{
"properties": {
"accountId": "account-234",
"projectId": "project-123"
},
"deployments": [
{
"deploymentSequenceNumber": 100,
"updateSequenceNumber": 1,
"issueKeys": [
"ABC-123"
],
"associations": [
{
"associationType": "issueIdOrKeys",
"values": [
"ABC-123",
"ABC-456"
]
}
],
"displayName": "Deployment number 16 of Data Depot",
"url": "http://mydeployer.com/project1/1111-222-333/prod-east",
"description": "The bits are being transferred",
"lastUpdated": "2018-01-20T23:27:25.000Z",
"label": "Release 2018-01-20_08-47-bc2421a",
"duration": 47,
"state": "in_progress",
"pipeline": {
"id": "e9c906a7-451f-4fa6-ae1a-c389e2e2d87c",
"displayName": "Data Depot Deployment",
"url": "http://mydeployer.com/project1"
},
"environment": {
"id": "8ec94d72-a4fc-4ac0-b31d-c5a595f373ba",
"displayName": "US East",
"type": "production"
},
"commands": [
{
"command": "initiate_deployment_gating"
}
],
"schemaVersion": "1.0"
}
],
"providerMetadata": {
"product": "Bamboo 6.10.2"
}
}`;
const response = await requestJira(`/rest/deployments/0.1/bulk`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: bodyData
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());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
{
"acceptedDeployments": [
{
"pipelineId": "e9c906a7-451f-4fa6-ae1a-c389e2e2d87c",
"environmentId": "8ec94d72-a4fc-4ac0-b31d-c5a595f373ba",
"deploymentSequenceNumber": 100
}
],
"rejectedDeployments": [
{
"key": {
"pipelineId": "e9c906a7-451f-4fa6-ae1a-c389e2e2d87c",
"environmentId": "8ec94d72-a4fc-4ac0-b31d-c5a595f373ba",
"deploymentSequenceNumber": 100
},
"errors": [
{
"message": "<string>",
"errorTraceId": "<string>"
}
]
}
],
"unknownIssueKeys": [
"ABC-123"
],
"unknownAssociations": [
{
"associationType": "issueIdOrKeys",
"values": [
"ABC-123",
"ABC-456"
]
}
]
}Bulk delete all deployments that match the given request.
One or more query params must be supplied to specify the Properties to delete by. Optional param _updateSequenceNumber is no longer supported.
If more than one Property is provided, data will be deleted that matches ALL of the Properties (i.e. treated as AND).
See the documentation for the submitDeployments operation for more details.
Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456
Deletion is performed asynchronously. The getDeploymentByKey operation can be used to confirm that data has been deleted successfully (if needed).
delete:deployment-info:jiraConnect app scope required: DELETE
integer
string
RequiredDelete accepted. Data will eventually be removed from Jira.
1
2
3
4
5
6
7
8
9
10
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestJira } from "@forge/bridge";
const response = await requestJira(`/rest/deployments/0.1/bulkByProperties`, {
method: 'DELETE'
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.text());Retrieve the currently stored deployment data for the given pipelineId, environmentId and deploymentSequenceNumber combination.
The result will be what is currently stored, ignoring any pending updates or deletes.
read:deployment-info:jiraConnect app scope required: READ
string
Requiredstring
Requiredinteger
Requiredstring
RequiredThe deployment data currently stored for the given ID.
Data related to a specific deployment in a specific environment that the deployment is present in.
Must specify one of issueKeys or associations.
1
2
3
4
5
6
7
8
9
10
11
12
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestJira } from "@forge/bridge";
const response = await requestJira(`/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}`, {
headers: {
'Accept': 'application/json'
}
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());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
{
"deploymentSequenceNumber": 100,
"updateSequenceNumber": 1,
"issueKeys": [
"ABC-123"
],
"associations": [
{
"associationType": "issueIdOrKeys",
"values": [
"ABC-123",
"ABC-456"
]
}
],
"displayName": "Deployment number 16 of Data Depot",
"url": "http://mydeployer.com/project1/1111-222-333/prod-east",
"description": "The bits are being transferred",
"lastUpdated": "2018-01-20T23:27:25.000Z",
"label": "Release 2018-01-20_08-47-bc2421a",
"duration": 47,
"state": "in_progress",
"pipeline": {
"id": "e9c906a7-451f-4fa6-ae1a-c389e2e2d87c",
"displayName": "Data Depot Deployment",
"url": "http://mydeployer.com/project1"
},
"environment": {
"id": "8ec94d72-a4fc-4ac0-b31d-c5a595f373ba",
"displayName": "US East",
"type": "production"
},
"commands": [
{
"command": "initiate_deployment_gating"
}
],
"schemaVersion": "1.0"
}Delete the currently stored deployment data for the given pipelineId, environmentId and deploymentSequenceNumber combination.
Deletion is performed asynchronously. The getDeploymentByKey operation can be used to confirm that data has been deleted successfully (if needed).
delete:deployment-info:jiraConnect app scope required: DELETE
string
Requiredstring
Requiredinteger
Requiredinteger
string
RequiredDelete has been accepted. Data will eventually be removed from Jira if it exists.
1
2
3
4
5
6
7
8
9
10
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestJira } from "@forge/bridge";
const response = await requestJira(`/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}`, {
method: 'DELETE'
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.text());Retrieve the Deployment gating status for the given pipelineId + environmentId + deploymentSequenceNumber combination.
Only apps that define the jiraDeploymentInfoProvider module can access this resource. This resource requires the 'READ' scope.
read:deployment-info:jiraConnect app scope required: READ
string
Requiredstring
Requiredinteger
RequiredThe current gating status for the given Deployment
The current gating status for the given Deployment.
1
2
3
4
5
6
7
8
9
10
11
12
// This sample uses Atlassian Forge
// https://developer.atlassian.com/platform/forge/
import { requestJira } from "@forge/bridge";
const response = await requestJira(`/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}/gating-status`, {
headers: {
'Accept': 'application/json'
}
});
console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"deploymentSequenceNumber": 100,
"pipelineId": "e9c906a7-451f-4fa6-ae1a-c389e2e2d87c",
"environmentId": "8ec94d72-a4fc-4ac0-b31d-c5a595f373ba",
"updatedTimestamp": "2020-08-25T06:04:50.239Z",
"gatingStatus": "allowed",
"details": [
{
"type": "issue",
"issueKey": "ABC-123",
"issueLink": "https://your-domain.atlassian.net/servicedesk/customer/portal/1/ZAINA-123"
}
]
}Rate this page: