Let's add the same comment to the linked issue.
This tutorial describes how a group's members can be added as watchers on a transition, such as in this example Create Issue.
Assumption
In our TESTB project, we got two issues linked together with inward "is caused by". When we comment on the issue it shall add a comment to the linked issue as well.
Steps
Part 1 - Get the linked issue
- Create a new Action by clicking
buttonStatus colour Blue title Create - Enter a name: Get Linked Issue and click
Status colour Blue title Create - Select Method:
and URL: <your_base_url>/rest/api/2/issue/{{issue.key}}?fields=issuelinksStatus colour Yellow title GET
From the Atlassian REST API we can read that to fetch issue links by getting the issue JSON and further filter it by fields=issuelinks. call GET /rest/api/2/issue/{{issue.key}}?fields=issuelinks - Select Authentication method: Basic Auth, specify a user with comment and browse permissions
- Add request headers, key: Content-Type with value application/json
- Click Triggers tab
- Select
eventStatus colour Green title Issue Commented - On JQL Condition. When to execute the event(s) write project = TESTB AND issueLinkType = "is caused by" to limit the trigger to the TESTB project and only the direction of "is caused by".
- Click
Status colour Blue title SAVE - (Optional) Click Test button (no issue key is needed) to and click Send, Then go 3 - View Execution Log.
Each result will have a response like the one below:
Code Block | ||
---|---|---|
| ||
{ "expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations", "id": "12837", "self": "https://support.rixter.se/rest/api/2/project/11100/role/10100issue/12837", "namekey": "DevelopersTESTB-7", "idfields": 10100, "actors{ "issuelinks": [ { "id": "11102", "self": "https://support.rixter.se/rest/api/2/issueLink/11102", "type": { "id": 12204"10300", "name": "Problem/Incident", "inward": "is caused by", "displayNameoutward": "causes"Mr Bot", "type, "self": "https://support.rixter.se/rest/api/2/issueLinkType/10300" }, "inwardIssue": { "id": "12839", "key": "atlassian-user-role-actorTESTB-8", "name "self": "mr.bot@rixter.se", "avatarUrlhttps://support.rixter.se/rest/api/2/issue/12839", "fields": { "summary": "Linked issue test", "status": { "self": "https://support.rixter.se/secure/useravatar?size=xsmall&ownerId=mr.bot%40rixter.se&avatarId=10601" }, { "id": 12205, "displayName": "Rickard Atthem", "type": "atlassian-user-role-actor", "name": "rick", "avatarUrl/rest/api/2/status/10003", "description": "", "iconUrl": "https://support.rixter.se/", "name": "To Do", "id": "10003", "statusCategory": { "self": "https://support.rixter.se/rest/api/2/statuscategory/2", "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "self": "https://support.rixter.se/rest/api/2/priority/4", "iconUrl": "https://support.rixter.se/images/icons/priorities/low.svg", "name": "Low", "id": "4" }, "issuetype": { "self": "https://support.rixter.se/rest/api/2/issuetype/10002", "id": "10002", "description": "A task that needs to be done.", "iconUrl": "https://support.rixter.se/secure/useravatarviewavatar?size=xsmall&ownerIdavatarId=rick10318&avatarId=10600" } ] } |
...
avatarType=issuetype",
"name": "Task",
"subtask": false,
"avatarId": 10318
}
}
}
}
]
}
} |
Part 2 - Get the last comment (this step will in the future be replaced by a smart function)
- Create a new Action by clicking
buttonStatus colour Blue title Create - Enter a name: Get Last Comment and click
Status colour Blue title Create - Select Method:
and URL: <your_base_url>/rest/api/2/issue/{{issue.key}}/commentStatus colour Yellow title GET
from the Atlassian REST API we can read that to fetch issue links by getting the issue JSON and further filter it by fields=issuelinks. call GET /rest/api/2/issue/{issueIdOrKey}/comment - A new section called Variables is now displayed. On this section enter the
- Variable name: inwardIssue and the JSON Path: $.fields.issueLinks[0].inwardIssue.key
The JSON path will return a variable with the value of the last comment
- Variable name: inwardIssue and the JSON Path: $.fields.issueLinks[0].inwardIssue.key
- Select Authentication method: Basic Auth, specify a user with browse permissions
- Add request headers, key: Content-Type with value application/json
- Click
Status colour Blue title SAVE - (Optional) Click Test button (no issue key is needed) to and click Send, Then go 3 - View Execution Log.
Part 3 - Add the last comment to linked issue
- Create a new Action by clicking
buttonStatus colour Blue title Create Enter a name: Comment linked issue and note on the Select parent action choose to Get Linked Issue Last Comment which we created in part 1 and click
Status colour Blue title Create
This will create a chained action that will be triggered directly after the response from the parent action is received. The response will be used as input variables this call using JSON Path expressions.- A new section called Variables is now displayed. On On this section enter the :
- Variable name:
- lastComment and the JSON Path: $.
- comments[-1:].
- body
The JSON path will return a variable with the value of the linked issue key.
- Select Method:
and URL: <your_base_url>/rest/api/2/issue/{{issue.keyinwardIssue}}/watcherscommentStatus colour Yellow title POST
note note that we use double curly brackets {{issue.key}} to operate on the issue. Within the brackets, we can access any issue propertynow use the inwardIssue in the URL that we post to.
From the Atlassian REST API we can read that to add watchers to comment on an issue we need to call POST /rest/api/2/issue/{{issueIdOrKeyissue.key}}/watcherscomment - Select Authentication method: Basic Auth, specify an admin a user that can read groups in JIRA.has comment permission in the project
- Add request headers, key: Content-Type with value application/json
In On the Body section add the following payload body
Since we get an array of usernames as a result from the JSON Path$.actors[*].name value [rick,mr.bot@rixter.s] and the API endpoint requires a comma-separated list of strings we need to render that in the body using the Mustache template. Accessing the watchers variable with double brackets and then using the iteration method to walk through the list. Therefore the # and / syntax. The ^ and / removes the last comma.Code Block language java {{#watchers}} "{{.}}" {{/watchers}} {{^watchers}} "body":"{{.lastComment}}" {{/watchers}}
- Click
buttonStatus colour Blue title SAVE - (Optional) Click Test button (no issue key is needed) to , Issue Key needs to be provided and click Send, Then go 3 - View Execution Log.