Hi all - I am trying to write a custom pre-hook using scriptrunner that will block direct pushes to a repo (non-PRs) that include a certain filename:
if (pathsMatchExcludingDeletes('glob:something.yml')) {
return false
}
return true
However, seems like this hook runs even when it's a PR and it errors out:
2020-09-04 11:26:37,080 ERROR [c.o.s.c.b.h.e.PreRepositoryHookExecutor]: ************************************************************************************* 2020-09-04 11:26:37,081 ERROR [c.o.s.c.b.h.e.PreRepositoryHookExecutor]: Script pre-hook failed:, repository: gps java.lang.IllegalStateException: At least one commit must be provided to include at com.atlassian.bitbucket.commit.CommitsBetweenRequest.<init>(CommitsBetweenRequest.java:108) at com.atlassian.bitbucket.commit.CommitsBetweenRequest.<init>(CommitsBetweenRequest.java:83) at com.atlassian.bitbucket.commit.CommitsBetweenRequest$Builder.build(CommitsBetweenRequest.java:216) at com.atlassian.bitbucket.commit.CommitsBetweenRequest$Builder$build$1.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionExtensions.createCommitsBetweenRequest(BitbucketConditionExtensions.groovy:167) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionExtensions$createCommitsBetweenRequest.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions.streamAllMatchingChanges(PathsMatchExtensions.groovy:79) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions.pathsMatchWithConfig(PathsMatchExtensions.groovy:67) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions$pathsMatchWithConfig.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketExtensions.pathsMatchExcludingDeletes(BitbucketExtensions.groovy:74) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionUtils$_setupBinding_closure3$_closure4.doCall(BitbucketConditionUtils.groovy:243) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionUtils$_setupBinding_closure3$_closure4.doCall(BitbucketConditionUtils.groovy) at Script11.run(Script11.groovy:1) at com.atlassian.bitbucket.commit.CommitsBetweenRequest.<init>(CommitsBetweenRequest.java:108) at com.atlassian.bitbucket.commit.CommitsBetweenRequest.<init>(CommitsBetweenRequest.java:83) at com.atlassian.bitbucket.commit.CommitsBetweenRequest$Builder.build(CommitsBetweenRequest.java:216) at com.atlassian.bitbucket.commit.CommitsBetweenRequest$Builder$build$1.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionExtensions.createCommitsBetweenRequest(BitbucketConditionExtensions.groovy:167) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionExtensions$createCommitsBetweenRequest.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions.streamAllMatchingChanges(PathsMatchExtensions.groovy:79) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions.pathsMatchWithConfig(PathsMatchExtensions.groovy:67) at com.onresolve.scriptrunner.canned.bitbucket.util.PathsMatchExtensions$pathsMatchWithConfig.call(Unknown Source) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketExtensions.pathsMatchExcludingDeletes(BitbucketExtensions.groovy:74) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionUtils$_setupBinding_closure3$_closure4.doCall(BitbucketConditionUtils.groovy:243) at com.onresolve.scriptrunner.canned.bitbucket.util.BitbucketConditionUtils$_setupBinding_closure3$_closure4.doCall(BitbucketConditionUtils.groovy)
How can I make this hook ignore (or evaluate to true?) if the trigger is a PR?
I have found that the following works for me:
refChanges != [] && !pathsMatchExcludingDeletes('glob:something.yml')
Did you ever find a solution to this issue?
I am facing the same thing at the moment.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.