Notifications
Q&A

How do I configure Jenkins to strip the leading “origin/” in git branch parameter?

+2
−0

I'm using Jenkins with a branch parameter to specify the branch to build from. Other stuff downstream needs the branch name to not have the leading "origin/" -- just "feature/blahblah" or "bugfix/12345" or similar. The advanced settings for the parameter let me specify a branch filter via regex, but I'm a regex newbie and the solutions I've found in searching are language-dependent. The Jenkins documentation for this is sparse.

When a user clicks on "build with parameters", for the branch I want to see branch names that omit the leading "origin/". I'm not sure how to write a regex for Jenkins that will "consume" that part of the branch name before setting the parameter value.

Why should this post be closed?

1 comment

I asked this question a while ago on SO and it keeps generating activity, so apparently it's helping people. I'd like to help people (and make any improvements to it) here, so I brought it over. ‭Monica Cellio‭ 16 days ago

1 answer

+2
−0

For the git branch parameter, set Branch Filter to:

origin/(.*)

I found the parentheses to be counter-intuitive, because if you don't specify a filter you get:

.*

(No parens.) If you are filtering stuff out, you use parens to indicate the part to keep.

The parens indicate a capture group, which is general to regular expressions and not specific to this case. Specific to this case is that the branch filter of the git-parameter plug-in takes the matched capture group as value if and only if the regex pattern contains a single capture group. If the regex pattern has more than one capture group, the branch name is taken as value -- as if the pattern were defined without capture groups at all. It's not well-documented, but see the code. (Thanks to ‭hkotsubo‭ and elgonzo‭ for the information in this paragraph.)

4 comments

In regex, parentheses create a capturing group (which means that anything that matches the expression inside them becomes a separate group). My guess is that, when a group is present, only its contents are kept and the rest are ignored/removed - I couldn't find any info about that in the docs, though, but it's not uncommon for tools to have a "special" behaviour when there are capturing groups ‭hkotsubo‭ 16 days ago

Funnily enough, the branchfilter of the git-parameter plug-in will take the matched capture group as value, if and only if the regex pattern contains a single capture group. If the regex patterns happens to have more than one capture group, the branch name is taken as value - as if the pattern was defined without capture groups at all. ‭elgonzo‭ 15 days ago

@elgonzo ah! Thanks. I did not find that in the actual documentation, and I didn't read the code. (Will edit the info from comments into this post in a bit.) ‭Monica Cellio‭ 15 days ago

Sign up to answer this question »