Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Section
Column

Introduction to Nunjucks

Nunjucks is a sophisticated templating engine for JavaScript. It lets you insert dynamic content in any text through the use of templates. A template contains variables and/or expressions, which get replaced with values when a template is rendered; and tags, which control the logic of the template. See here for an overview of the templating features available in Nunjucks.

Nunjucks in JMWE for JIRA Cloud

Nunjucks in JMWE for JIRA Cloud is used to insert information while setting a while 

  • Setting a field value
or creating
  • by a post-function
  • Creating the body of a comment by a post-function
. You might want to
  • Conditional execution of a post-function

You can insert issue and transition information into the value using the templating features available in Nunjucks. Some basic templating features are described in the next sectionthis document, and more are documented on the Nunjucks website.

Column
width400px
Panel
borderColorsilver
bgColor#f5f5f5
borderWidth1
borderStylesolid

On this page:

Table of Contents

...

A variable looks up a value from the template context. If you want to insert the value of a variable in your template, you can use the following syntax: {{ myVar }}. This looks up for the myVar variable from the context and displays it. Variable names can have dots in them which look up properties, just like in javascript.

Variables available in JMWE

JMWE makes the issue, transition, transition linkedIssue, parentIssue linkedIssue and currentUser variables  currentUser variables available to templates. You can access their properties using "." or "[ ]". For example, you can access the current issue key using {{issue.key}}.

issue variable

The issue variable issue variable is used to insert data from the issue being transitioned. You can access the issue data by looking up at its properties.

For example:

{{issue.fields.labels}} returns an array of label values, e.g. [ "1", "2" ]

...

Expand
titleClick here to see some properties of the issue variable
Properties
Description
issue.idInternal Id number of the issue
issue.keyIssue key
issue.fields.summaryIssue summary
issue.fields.descriptionIssue description
issue.fields.issuetype.nameIssue type
issue.fields.issuetype.descriptionIssue type description
issue.fields.creator.nameUsername of the person who created the issue
issue.fields.creator.emailAddressEmail address of the person who created the issue
issue.fields.creator.displayNameDisplays name of the person who created the issue
issue.fields.creator.timeZoneTime zone of the creator
issue.fields.reporter.nameUsername of the person who reported the issue
issue.fields.reporter.emailAddressEmail address of the person who reported the issue
issue.fields.reporter.displayNameDisplay name of the person who reported the issue
issue.fields.reporter.timeZoneTime zone of the reporter
issue.fields.assignee.nameUsername of the person assigned to the issue
issue.fields.assignee.emailAddressEmail address of the person assigned to the issue
issue.fields.assignee.displayNameDisplay name of the person assigned to the issue
issue.fields.assignee.timeZoneTime zone of the assignee
issue.fields.createdDate and time the issue was created
issue.fields.updatedDate and time the issue was last updated
issue.fields.priority.nameIssue priority name
issue.fields.project.nameIssue project name
issue.fields.project.keyIssue project key
issue.fields.lastViewedDate and time the issue was last viewed by the current user
issue.fields.fixVersions[0].nameName of the first fix version Version/s
issue.fields.fixVersions[0].descriptionDescription of the first fix version Version/s
issue.fields.fixVersions[0].releaseDateRelease date of the first fix versionFix Version/s
issue.fields.versions[0].nameName of the first affected versionAffects Version/s
issue.fields.versions[0].descriptionDescription of the first affected version Affects Version/s
issue.fields.versions[0].releaseDateRelease date of the first affected version Affects Version/s
issue.fields.components[0].nameName of the first component
issue.fields.components[0].descriptionDescription of the first component
issue.fields.duedateDue date of the issue
issue.fields.timespentTime spent on the issue
issue.fields.timeoriginalestimateThe original estimate of the time required to resolve the issue
issue.fields.resolution.nameA record Resolution of the issue's resolution
issue.fields.watches.watchcountThe number of people watching the issue
issue.fields.labelsLabels the issue relates to
issue.fields.environmentThe hardware or software environment the issue relates to
issue.fields.votesThe number of votes an issue has
transition variable

The transition variable transition variable is used to insert information about the transition being executed.

For example:

{{transition.transitionName}} returns the name of the transition, e.g. Start Progress

...

Expand
titleClick here to see the properties of the transition variable
PropertiesDescription
transition.transitionNameName of the current transition
transition.transitionIdNumerical ID of the current transition
transition.from_statusSource status of the transition
transition.to_statusDestination status of the transition
transition.workflowNameName of the current workflow
transition.workflowIdNumerical ID of the current workflow
linkedIssue variable

The linkedIssue variable, which is only available from post-functions that work on linked issues, is used to insert data of the linked issue being processed by the post-function.

For example:

{{linkedIssue.fields.description}} returns the description of the current linked issue.

...

Expand
titleClick here to see the properties of the linkedIssue variable
Properties
Description
linkedIssue.idInternal Id number of the linked issue
linkedIssue.keyLinked issue key
linkedIssue.fields.summaryLinked issue summary
linkedIssue.fields.descriptionLinked issue description
linkedIssue.fields.issuetype.nameLinked issue type
linkedIssue.fields.issuetype.descriptionLinked issue Issue type description
linkedIssue.fields.creator.nameUsername of the person who created the linked issue
linkedIssue.fields.creator.emailAddressEmail address of the person who created the linked issue
linkedIssue.fields.creator.displayNameDisplays name of the person who created the linked issue
linkedIssue.fields.creator.timeZoneTime zone of the creator
linkedIssue.fields.reporter.nameUsername of the person who reported the linked issue
linkedIssue.fields.reporter.emailAddressEmail address of the person who reported the linked issue
linkedIssue.fields.reporter.displayNameDisplay name of the person who reported the linked issue
linkedIssue.fields.reporter.timeZoneTime zone of the reporter
linkedIssue.fields.assignee.nameUsername of the person assigned to the linked issue
linkedIssue.fields.assignee.emailAddressEmail address of the person assigned to the linked issue
linkedIssue.fields.assignee.displayNameDisplay name of the person assigned to the linked issue
linkedIssue.fields.assignee.timeZoneTime zone of the assignee
linkedIssue.fields.createdDate and time the linked issue was created
linkedIssue.fields.updatedDate and time the linked issue was last updated
linkedIssue.fields.priority.nameLinked Issue priority name
linkedIssue.fields.project.nameLinked Issue project name
linkedIssue.fields.project.keyLinked Issue project key
linkedIssue.fields.lastViewedDate and time the linked issue was last viewed by the current user
linkedIssue.fields.fixVersions[0].nameName of the first fix versionFix Version/s
linkedIssue.fields.fixVersions[0].descriptionDescription of the first fix version Fix Version/s
linkedIssue.fields.fixVersions[0].releaseDateRelease date of the first fix version Fix Version/s
linkedIssue.fields.versions[0].nameName of the first affected version Affects Version/s
linkedIssue.fields.versions[0].descriptionDescription of the first affected version Affects Version/s
linkedIssue.fields.versions[0].releaseDateRelease date of the first affected version Affects Version/s
linkedIssue.fields.components[0].nameName of the first component
linkedIssue.fields.components[0].descriptionDescription of the first component
linkedIssue.fields.duedateDue date
linkedIssue.fields.timespentTime spent
linkedIssue.fields.timeoriginalestimateThe original estimate of the time required to resolve the linked issue
linkedIssue.fields.resolution.nameA record Resolution of the issue's resolution
linkedIssue.fields.watches.watchcountThe number of people watching the linked issue
linkedIssue.fields.labelsLabels the linked issue relates to
linkedIssue.fields.environmentThe hardware or software environment the linked issue relates to
linkedIssue.fields.votesThe number of votes a linked issue has
parentIssue variable

The parentIssue variable parentIssue variable, which is only available from post-functions that work on parent issuesissue, is used to insert data of the parent issue being processed by the post-function.

For example:

{{parentIssue.fields.priority.name}} returns the priority of the parent issue

...

Expand
titleClick here to see the properties of the parentIssue variable

Properties

Description

parentIssue.idInternal Id number of the parent issue
parentIssue.keyParent issue key
parentIssue.fields.summaryParent issue summary
parentIssue.fields.descriptionParent issue description
parentIssue.fields.issuetype.nameParent issue type
parentIssue.fields.issuetype.descriptionParent issue Issue type description
parentIssue.fields.creator.nameUsername of the person who created the parent issue
parentIssue.fields.creator.emailAddressEmail address of the person who created the parent issue
parentIssue.fields.creator.displayNameDisplays name of the person who created the parent issue
parentIssue.fields.creator.timeZoneTime zone of the creator
parentIssue.fields.reporter.nameUsername of the person who reported the parent issue
parentIssue.fields.reporter.emailAddressEmail address of the person who reported the parent issue
parentIssue.fields.reporter.displayNameDisplay name of the person who reported the parent issue
parentIssue.fields.reporter.timeZoneTime zone of the reporter of the parent issue
parentIssue.fields.assignee.nameUsername of the person assigned to the parent issue
parentIssue.fields.assignee.emailAddressEmail address of the person assigned to the parent issue
parentIssue.fields.assignee.displayNameDisplay name of the person assigned to the parent issue
parentIssue.fields.assignee.timeZoneTime zone of the assignee of the parent issue
parentIssue.fields.createdDate and time the parent issue was created
parentIssue.fields.updatedDate and time the parent issue was last updated
parentIssue.fields.priority.nameParent Issue priority name
parentIssue.fields.project.nameParent Issue project name
parentIssue.fields.project.keyParent Issue project key
parentIssue.fields.lastViewedDate and time the linked parent issue was last viewed by the current user
parentIssue.fields.fixVersions[0].nameName of the first fix version Fix Version/s
parentIssue.fields.fixVersions[0].descriptionDescription of the first fix versionFix Version/s
parentIssue.fields.fixVersions[0].releaseDateRelease date of the first fix versionFix Version/s
parentIssue.fields.versions[0].nameName of the first affected versionAffects Version/s
parentIssue.fields.versions[0].descriptionDescription of the first affected version Affects Version/s
parentIssue.fields.versions[0].releaseDateRelease date of the first affected version Affects Version/s
parentIssue.fields.components[0].nameName of the first component
parentIssue.fields.components[0].descriptionDescription of the first component
parentIssue.fields.duedateDue date
parentIssue.fields.timespentTime spent
parentIssue.fields.timeoriginalestimateThe original estimate of the time required to resolve the parent issue
parentIssue.fields.resolution.nameA record Resolution of the parent issue's resolution
parentIssue.fields.watches.watchcountThe number of people watching the parent issue
parentIssue.fields.labelsLabels the parent issue relates to
parentIssue.fields.environmentThe hardware or software environment the parent issue relates to
parentIssue.fields.votesThe number of votes a parent issue has

...

{{now}} returns the current date and time, e.g. 2016-09-30T13:57:23.608Z

User-defined variables

In addition to the above variables, you can also create your own variables within the template using the set Nunjucks tag. For example:

{% set x = "High" %} sets the value of the variable x to High. You can also set the variable to an object. For example: {% set assignee = issue.fields.assignee %}

...

You might also want to look at Accessing the details of an issue or a transition in Nunjucks to know how to access the details of an issue or a transition.

See here for more templating features available in NunjucksYou might also want to refer here for use cases with Nunjucks annotations.