Regex Validator on FixVersion

Hello to all Groovy/query wizards,

I'm looking to have a validator on a Jira transition that checks FixVersion matches a specific regex. (in my case 'digit dot digit digit', ie 3.12 or 6.38).

As I have a previous validator that previously checks that there is exactly one fixversion, we can assume only 1 fixversion is present.

All help is greatly appreciated!

2 answers

1 accepted

1 vote

What you want is to have the validation run when the Version object is created though, no? There's not much point in not letting people pick an existing fix version...

Which is more tricky.

Something like this:

import com.atlassian.jira.issue.Issue
import com.opensymphony.workflow.InvalidInputException

Issue issue = issue
def fixVersions = issue.fixVersions

if (! fixVersions)
    return

def fixVersion = fixVersions.first()
if (! (fixVersion ==~ /\d\.\d{2}/)) {
    throw new InvalidInputException("fixVersions", "Choose a better fix version")
}

But it depends what version of script runner you are using, you might need a slightly different return type for older versions.

Jamie, thanks for your response.

To clarify: within my project i have a lot of versions functioning as 'shelves' for multiple issues before actual integration into the release codebase. upon moving to the actual release branche (we use a corresponding Jira status for that) these 'shelves' are no longer valid and so the FixVersion is required to have a release like format. You can assume the Fixversions required i.e. 3.12 or 6.38 are already present, so the trickyness is reduced.

For example: in status non-merged an issue still holds FixVersion = 'ShelveVersion1', upon the transition to status MergedInCodeBase I need to check whether it holds a X.XX format.

I hope this clarifies things and that you - as groovy guru - can further my dilemma.

ok I updated my answer

Works like a charm. thank you

For me this Simple Scripted Validator works fine:

import com.atlassian.jira.project.version.Version;
def versions = issue.getFixVersions() as List<Version>
issue.getResolutionObject().getName() != "Fixed" || versions.any {it.getName().matches(/(^V\d+\.\d+$)|(^0.\d+.0.\d+$)/)}

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Jun 14, 2018 in Jira Service Desk

How the Telegram Integration for Jira helps Sergey's team take their support efficiency to the bank

...+ reading Fantasy). The same is true for him at the bank he works for: Efficiency is key when time literally equals money. Read on to learn how Sergey makes most of the time he has by...

503 views 3 5
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you