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.