This article applies to Exalate Classic only. If you're using the New Exalate experience, please refer to the New Exalate documentation.
This article shows how to sync fix versions between Jira instances.
Jira version is an object that includes the following elements:
- version name
- version start date
- version release date
- version description
Basic versions synchronization involves receiving versions from a remote Jira instance. Usually, these versions don't exist on your local Jira. Exalate provides a way to create versions from the scripts to handle this situation. To create a new version on your system when necessary use nodeHelper.createVersion. The example below shows how you can set up such behavior.
Source Side
Outgoing sync
send fix versions
//send the fix versions set on a synced issue replica.fixVersions = issue.fixVersions replica.affectedVersions = issue.affectedVersions
Destination Side
Incoming sync
Create the versions that do not exist on your side:
// for the create processor, be sure that the project is set to the issue variable before running the following code
issue.projectKey = "Foo" //Included only on create processor
...
// assign fix versions from JIRA A to JIRA B
issue.fixVersions = replica
.fixVersions
// ensure that all the fixVersions are available on B
.collect { v -> nodeHelper.createVersion(issue, v.name, v.description) }
// assign affected versions from JIRA A to JIRA B
issue.affectedVersions = replica
.affectedVersions
.collect { v -> nodeHelper.createVersion(issue, v.name, v.description) }If you do not want exalate to create new versions but just use existing ones that match the other side versions:
// for the create processor, be sure that the project is set to the issue variable before running the following code
issue.projectKey = "Foo" //Included only on create processor
...
// assign fix versions from JIRA A to JIRA B
def project = nodeHelper.getProject(issue.projectKey)
issue.fixVersions = replica
.fixVersions
// ensure that all the fixVersions are available on B
.collect { v -> nodeHelper.getVersion(v.name, project) }
.findAll{it != null}
// assign affected versions from JIRA A to JIRA B
issue.affectedVersions = replica
.affectedVersions
.collect { v -> nodeHelper.getVersion(v.name, project) }
.findAll{it != null}If you want to synchronize version start date, release date and description you can use the external script versions.groovy, which has been developed specifically for such cases.