My git repository is hosted by a Gerrit server. We also use Jenkins, along with the Gerrit Event and Git Plugin, to trigger automatic jenkins jobs build when a review is pushed to Gerrit.
Say the git repo has the following folder structure
ProjectA
- .git
- folderA
- folderA/folderA1
- folderA/manual_tests
- folderA/manual_tests/file1
- folderB
- folderB/folderB1
- folderB/manual_tests/file2
- folderC
- folderC/folderC1
- folderC/manual_tests/file3
- folderD
- folderD/folderD1
- folderD/folderD1/FolderD11
- folderD/folderD1/FolderD11/manual_tests/file4
- folderD/folderD1/FolderD12
- folderD/folderD2
Currently, the Jenkins job is defined to run on all branches by specifying Type Path
with pattern **
. This config causes the job to run with every review.
Here's what I'm trying to accomplish:
manual_tests
folder, I don't want to Jenkins Jobs to get triggered.manual_tests
, the trigger the jobsI tried adding a File Path
with type RegExp
with a pattern of (?!.*manual_tests.*).*
, but this did not achieve my end goals. I tried various regular expression patterns, but I never got the end goal.
Is it possible to not trigger a Jenkins job if a gerrit review only contains changes in manual_tests
folders?
The trick to getting this working is that the COMMIT_MSG file must be omitted in the regex as well.
This bug report describes the problem and workaround: https://issues.jenkins-ci.org/browse/JENKINS-19891
The fix is simply to use the following RegExp pattern:
^((?!manual_tests|\/COMMIT_MSG).)*$
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With