Easy Integrations offers a post function to generate Confluence pages based on Jira workflow transitions. The issue's field/custom field values can be used to generate Confluence pages from templates.
On this page: |
---|
Steps
Go to the desired transition within your workflow, switch to the Post functions tab, and click on the Add post function link.
Locate the Create Confluence Page using a template page post function and click the Add button.
Post Function Name
You can create a name for your post function.
Type of Confluence Connection
This initial step is to select the Confluence connection. There are two options for this:
Credential: Choose Credential if you want to use Confluence connection which is defined via the Easy Integrations Confluence setting. If there is no defined credential, this option will not be seen.
Application Link: If you want to use the Jira application link then choose this option. If there are multiple application links you can choose an appropriate one and if there is no application link in your Jira, this option will not be seen.
Condition
In this part, you can add a condition for the confluence page. By default, it can only return true statements which means that the Confluence page will be created. However, you can type your own script in order to programmatically add a condition to create a Confluence page or not.
Below is a sample code snippet for a condition that checks the logged-in user should be the reporter of the issue:
Condition Code Example
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.user.ApplicationUser ApplicationUser currentUser = ComponentAccessor.getJiraAuthenticationContext().loggedInUser log.info("current user:" + currentUser.username) def reporter = issue.reporter.username log.info("reporter: " + reporter) return reporter.equals(currentUser.username)
Template
For the template, you have two options:
Templates
Confluence Page
You can choose any global and space templates or page in your Confluence to be a template for this post function. See creating a template page with dynamic parameters.
There is a Confluence Search input in which you can start typing the title of the Template or Confluence Page.
If you leave the Space Key input blank, it will search only global Templates.
Selecting The Folder Where Generated Pages Will be Created
Similar to the first step, choose the folder (Confluence Page) where you want your Confluence pages to be automatically created.
Set Folder and Template Page(s) Dynamically
If the template page's ID is stored in a custom field, use the below code in the Parameters section to get the value.
Use the same parameter key (in this example templateID) must be used in the ID text input in curly braces (as seen below {{templateID}} ).
Page Content
The page title and content are defined in this section.
Page Title: As you know, Confluence does not permit the same page title within the same space. So, adding a unique key to the page (like the Jira issue key) would be wise.
Request Body: Leave this blank if you are not an experienced user and you want to follow the standards. Click on the Load default body to modify link if you want to see and change the request JSON body. Otherwise, leave it blank.
Parameters: You can define static or dynamic parameters here using Groovy Script. Some sample parameters are shown below.
A code example is provided below:
def parameters = [:] parameters["assignee"] = issue.assignee parameters["reporter"] = issue.reporter def userManager = ComponentAccessor.getUserManager() parameters["userDisplayName"] = userManager.getUserByName("someUserName").getDisplayName() def cf = customFieldManager.getCustomFieldObject("customfield_xxxxx") def price = issue.getCustomFieldValue(cf) parameters["price"] = (null != price) ? price : "No price defined" return parameters
Update Page
If you enable this option, the post function will update the Confluence page if it already exists.
View of Post Function
To automatically link the Jira issue and Confluence page, use the Jira macro in Confluence. You can find a demonstration of its usage here.