I think your logic is very reasonable. The git plugin seems like the right place to do that. Since the need is to reference a substring of the current GIT_BRANCH value within the context of a Jenkins job, it seems like an addition to the token macro keywords allowed on GIT_BRANCH might meet your need.
You might refer to https://issues.jenkins-ci.org/browse/JENKINS-25465 for a discussion of the fullName=false parameter to GIT_BRANCH, in case that will already handle your case. Mark Waite On Thu, Dec 31, 2015 at 6:07 AM Michael Giroux <mlgir...@gmail.com> wrote: > Accepting that the Git Parameter plugin is technically correct, lets get > back to the maven release build issue. > 1. to do a maven release, we MUST configure the "checkout to local branch" > option, or define a pre build step to do a git checkout into a local branch. > 2. the local branch name MUST be the effective name on the remote (sans > origin/) to allow the maven release:prepare to push the pom changes to the > correct branch. > 3. we currently can not use the value from the Git Parameter plugin > because that includes the "origin/" prefix resulting in a new branch > created on the remote git repo. > > I'm not really sure where the option belongs, but to support doing a maven > release on a branch specified by the Git Parameter plugin we need a clean > way to get the code checked out into the correct local branch. > > The Git plugin could provide an option to derive local branch name, or the > Git Parameter plugin could define an additional parameter containing the > effective branch name. I'm not sure which is best approach. I suspect > that the Git plugin should be able to operate whether the Git Parameter > plugin has been configured or not, so I lean toward an option in Git plugin > to "checkout to local branch" that ends up with the required local branch > name, but there may be a more appropriate approach. > > What is the next step? > > > > On Wednesday, December 30, 2015 at 3:12:49 PM UTC-7, Mark Waite wrote: > >> Could do that as well, though the git parameter plugin is technically >> correct. It is showing the branch to be built, and the branch to be built >> truly is "origin/master", since there is no local master branch tracking >> the remote branch. >> >> Mark Waite >> >> On Wed, Dec 30, 2015 at 11:41 AM Michael Giroux <mlgi...@gmail.com> >> wrote: >> > Mark, I wonder if one of the issues I have is actually a defect in the Git >>> Parameter plugin. Specifically, the values set by the Git Parameter plugin >>> include the "origin/" prefix. When this is used as the value for checkout >>> to local branch, AND the build is a maven release, we end up with a new >>> branch in Stash "origin/master" (should be simply master) or >>> "origin/some_other_branch". It seems that normal builds run just fine, but >>> release builds result in pushes back to Git and here is where the branch >>> names get messed up. >>> >>> Should I be asking the Git Parameter plugin developers to strip the >>> leading "origin/" from the branch names that are assigned to the parameter? >>> >>> Michael >>> >>> >>> On Wednesday, December 30, 2015 at 11:22:33 AM UTC-7, Michael Giroux >>> wrote: >>>> >>>> Thanks Mark. Command line build runs fine w/o compile errors. For >>>> your reference, this is a known Eclipse issue bug >>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=369592. >>>> >>>> On Wednesday, December 30, 2015 at 10:34:59 AM UTC-7, Mark Waite wrote: >>>>> >>>>> https://jenkins.ci.cloudbees.com/job/plugins/job/git-plugin/ (and my >>>>> internal Jenkins server inside my firewall) confirm that the code on the >>>>> master branch compiles correctly from the maven command line. >>>>> >>>>> I run my debugger from Netbeans (rather than Eclipse) and can confirm >>>>> that it compiles and runs from Netbeans as well. I don't use Eclipse, so >>>>> I'm not much help wiht Eclipse specific failures. >>>>> >>>>> Mark Waite >>>>> >>>>> On Wed, Dec 30, 2015 at 8:31 AM Michael Giroux <mlgi...@gmail.com> >>>>> wrote: >>>>> >>>>>> BTW, the following patch resolves my compile errors, but not sure if >>>>>> the cast to (Item) is the best choice. >>>>>> >>>>>> diff --git a/src/test/java/hudson/plugins/git/GitSCMTest.java >>>>>> b/src/test/java/hudson/plugins/git/GitSCMTest.java >>>>>> index 3a14b10..a39e60c 100644 >>>>>> --- a/src/test/java/hudson/plugins/git/GitSCMTest.java >>>>>> +++ b/src/test/java/hudson/plugins/git/GitSCMTest.java >>>>>> @@ -1203,7 +1203,7 @@ >>>>>> false, >>>>>> Collections.<SubmoduleConfig>emptyList(), >>>>>> browser, null, null); >>>>>> p.setScm(scm); >>>>>> - configRoundtrip(p); >>>>>> + configRoundtrip((Item)p); >>>>>> assertEqualDataBoundBeans(scm,p.getScm()); >>>>>> assertEquals("Wrong key", "git " + url, scm.getKey()); >>>>>> } >>>>>> @@ -1215,7 +1215,7 @@ >>>>>> FreeStyleProject p = createFreeStyleProject(); >>>>>> GitSCM scm = new GitSCM(" >>>>>> https://github.com/jenkinsci/jenkins"); >>>>>> p.setScm(scm); >>>>>> - configRoundtrip(p); >>>>>> + configRoundtrip((Item)p); >>>>>> assertEqualDataBoundBeans(scm,p.getScm()); >>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> On Wednesday, December 30, 2015 at 10:29:37 AM UTC-7, Michael Giroux >>>>>> wrote: >>>>>>> >>>>>>> Not making any changes to code, just trying to examine primary >>>>>>> project source to understand what is being changed in the PRs. >>>>>>> I cloned the primary git repo from >>>>>>> https://github.com/jenkinsci/git-plugin.git so I could get some >>>>>>> context for the PRs which show only the code being changed. Getting >>>>>>> compile errors on unmodified project. >>>>>>> >>>>>>> Eclipse version 4.5 (Mars), JDK 1.8.0 (also tried JDK 1.7.0) >>>>>>> >>>>>>> >>>>>>> On Wednesday, December 30, 2015 at 9:53:36 AM UTC-7, Mark Waite >>>>>>> wrote: >>>>>>>> >>>>>>>> Don't attempt to evaluate the two pull requests in the same >>>>>>>> repository. They are two different ideas that might meet your need. I >>>>>>>> suspect that one or the other will eventually be merged, but not both. >>>>>>>> >>>>>>>> Mark Waite >>>>>>>> >>>>>>>> On Wed, Dec 30, 2015 at 7:21 AM Michael Giroux <mlgi...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Mark, I'm taking a look at the two pull requests. I cloned the >>>>>>>>> repo so I can view code in Eclipse, but I'm getting compile errors in >>>>>>>>> GitSCMTest.java: >>>>>>>>> >>>>>>>>> Description Resource Path Location Type >>>>>>>>> The method configRoundtrip(FreeStyleProject) is ambiguous for the >>>>>>>>> type GitSCMTest GitSCMTest.java >>>>>>>>> /git/src/test/java/hudson/plugins/git line 1206 Java Problem >>>>>>>>> >>>>>>>>> Suggestions? >>>>>>>>> >>>>>>>>> Michael >>>>>>>>> >>>>>>>>> On Tuesday, December 29, 2015 at 10:47:14 PM UTC-7, Mark Waite >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> There is a pending pull request to the git plugin which provides >>>>>>>>>> a new environment variable, GIT_SHORT_BRANCH_NAME. The semantics of >>>>>>>>>> that >>>>>>>>>> proposed environment variable are not quite what you're describing, >>>>>>>>>> but you >>>>>>>>>> might review the pull request to see if it is close enough for your >>>>>>>>>> use >>>>>>>>>> case. See https://github.com/jenkinsci/git-plugin/pull/347 and >>>>>>>>>> https://github.com/jenkinsci/git-plugin/pull/304 for two >>>>>>>>>> different possibilities. >>>>>>>>>> >>>>>>>>>> Mark Waite >>>>>>>>>> >>>>>>>>>> On Tue, Dec 29, 2015 at 8:36 PM Michael Giroux <mlgi...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>> Yes. >>>>>>>>>>> >>>>>>>>>>> The issue I'm describing is a result of using the Git Parameter >>>>>>>>>>> plugin which allows the user to select a branch, + the Git plugin >>>>>>>>>>> which >>>>>>>>>>> allows configuration of the branch to build and the local branch >>>>>>>>>>> name, + >>>>>>>>>>> maven release plugin which relies on local branch name for push to >>>>>>>>>>> remote + >>>>>>>>>>> Stash Webhook to Jenkins with triggers a build of any arbitrary >>>>>>>>>>> branch. >>>>>>>>>>> >>>>>>>>>>> I will admit that one solution is to create two jobs in Jenkins >>>>>>>>>>> to allow building of any arbitrary branch as triggered by the Stash >>>>>>>>>>> web >>>>>>>>>>> hook for jenkins, and a second job that is configured to build a >>>>>>>>>>> branch >>>>>>>>>>> specified by user supplied parameter values. >>>>>>>>>>> >>>>>>>>>>> The problem occurs when when attempting to configure a single >>>>>>>>>>> jenkins build that allows for manual specification of branch via >>>>>>>>>>> the Git >>>>>>>>>>> parameter, and builds kicked off by the Stash web hook to jenkins. >>>>>>>>>>> >>>>>>>>>>> 1. to allow the jenkins web hook to initiate a build, it is >>>>>>>>>>> necessary to configure the build to build any branch (leaving >>>>>>>>>>> branch to >>>>>>>>>>> build as blank). >>>>>>>>>>> 2. to allow a maven release to build, you MUST specify a local >>>>>>>>>>> branch name. Otherwise, the push to stash fails the build does not >>>>>>>>>>> have a >>>>>>>>>>> local branch name. >>>>>>>>>>> 3. To meet condittion #1, the default value for the Git >>>>>>>>>>> parameter must be "**" so that the branch to build is ANY (** or >>>>>>>>>>> empty) >>>>>>>>>>> >>>>>>>>>>> So basically, the issue is that if a build is configured to >>>>>>>>>>> build any branch, and also has maven release configured, you need >>>>>>>>>>> some way >>>>>>>>>>> to get the code checked out to a local branch (additional >>>>>>>>>>> behaviors) with >>>>>>>>>>> the same name as the branch being built, and there is currently no >>>>>>>>>>> way to >>>>>>>>>>> do that. >>>>>>>>>>> >>>>>>>>>>> I tried to put "${GIT_BRANCH/*\//}" into the "checkout to local >>>>>>>>>>> branch" but this did not work. It seems this field does not resolve >>>>>>>>>>> environment variable references using full bash variable reference >>>>>>>>>>> notation. Perhaps this is the solution. Extend the "checkout to >>>>>>>>>>> local >>>>>>>>>>> branch" to provide full bash resolution of the variable name. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Tuesday, December 29, 2015 at 10:03:25 AM UTC-7, Michael >>>>>>>>>>> Giroux wrote: >>>>>>>>>>>> >>>>>>>>>>>> Using Jenkins 1.609.3, Git plugin 2.4.0. >>>>>>>>>>>> >>>>>>>>>>>> We have configured most of our jobs to allow jobs to be >>>>>>>>>>>> initiated by the Stash Webhook to Jenkins. To allow developers to >>>>>>>>>>>> manually >>>>>>>>>>>> initiate a build of any branch, the jobs use the Git Parameter to >>>>>>>>>>>> set a >>>>>>>>>>>> BRANCH variable. >>>>>>>>>>>> >>>>>>>>>>>> Using this configuration, the Git Parameter is configured to >>>>>>>>>>>> set "**" as the default branch to build. This allows the Stash >>>>>>>>>>>> Webhook to >>>>>>>>>>>> initiate a build of any branch. In order to allow the job to >>>>>>>>>>>> perform a >>>>>>>>>>>> maven release, we have configured the Git SCM to checkout to local >>>>>>>>>>>> branch >>>>>>>>>>>> "master". This all works well as long as we are not doing a maven >>>>>>>>>>>> release, >>>>>>>>>>>> or when we do a maven release on the master branch. The strategy >>>>>>>>>>>> breaks >>>>>>>>>>>> down if the developer attempts a maven release on another branch >>>>>>>>>>>> when the >>>>>>>>>>>> maven release:prepare goal tries to push pom updates. Note that >>>>>>>>>>>> the maven >>>>>>>>>>>> release plugin uses the current local branch in the push as "git >>>>>>>>>>>> push url >>>>>>>>>>>> localBranch:localBranch" As a result, when the build is for >>>>>>>>>>>> "some_branch" >>>>>>>>>>>> which has been checked out to local branch "master" we get an >>>>>>>>>>>> error on "git >>>>>>>>>>>> push ... master:master" because the remote "master" is not in sync >>>>>>>>>>>> with the >>>>>>>>>>>> local. No surprises here since the local "master" is actually >>>>>>>>>>>> "some_branch". >>>>>>>>>>>> >>>>>>>>>>>> To resolve this, we have deleted the "checkout to local branch" >>>>>>>>>>>> additional action, and added a pre-build step that does the >>>>>>>>>>>> following:' >>>>>>>>>>>> # checkout to a local branch using the remote branch name >>>>>>>>>>>> LOCAL_GIT_BRANCH=${GIT_BRANCH/*\//} >>>>>>>>>>>> git rev-parse --quiet --verify ${LOCAL_GIT_BRANCH} && git >>>>>>>>>>>> branch -D ${LOCAL_GIT_BRANCH} >>>>>>>>>>>> git checkout -b ${LOCAL_GIT_BRANCH} ${GIT_COMMIT} >>>>>>>>>>>> >>>>>>>>>>>> With this in place, the build checks the code out to a local >>>>>>>>>>>> branch with the same name as the remote branch allowing the maven >>>>>>>>>>>> release:prepare goal to push changes to the branch that is being >>>>>>>>>>>> build. >>>>>>>>>>>> >>>>>>>>>>>> NOTE that we have tried to configure the "checkout to local >>>>>>>>>>>> branch" using the property that is configured by the Git ($BRANCH) >>>>>>>>>>>> but that >>>>>>>>>>>> results in local branch names of "origin/master", >>>>>>>>>>>> "origin/some_branch", >>>>>>>>>>>> ... This results in release:prepare doing pushes as "git push ... >>>>>>>>>>>> origin/some_branch:origin/some_branch" which results in a new >>>>>>>>>>>> remote branch >>>>>>>>>>>> named "origin/some_branch" We have seen repos with branches named >>>>>>>>>>>> "origin/master". As a result, the desired branch is not updated, >>>>>>>>>>>> and a new >>>>>>>>>>>> branch is created. >>>>>>>>>>>> >>>>>>>>>>>> QUESTION/SUGGESTION/... >>>>>>>>>>>> It would be nice to have an option in the Git plugin to >>>>>>>>>>>> "checkout to local branch" that derives the local branch name from >>>>>>>>>>>> the >>>>>>>>>>>> remote branch name, without having to add our pre-build step. >>>>>>>>>>>> Thus, if I >>>>>>>>>>>> select "origin/some_branch" from the Git parameter, I could >>>>>>>>>>>> checkout to >>>>>>>>>>>> local branch using the Git Parameter $BRANCH which would resolve to >>>>>>>>>>>> "some_branch" sans the "origin/" prefix. >>>>>>>>>>>> >>>>>>>>>>>> Steps to Reproduce: >>>>>>>>>>>> 1. configure a parameterized job with a git parameter using >>>>>>>>>>>> "BRANCH" as the parameter name >>>>>>>>>>>> 2. configure the Git scm additional behavour to checkout to >>>>>>>>>>>> local branch "$BRANCH" >>>>>>>>>>>> 3. configure job with as a maven release. >>>>>>>>>>>> 4. perform a maven releae, selecting one of the branches from >>>>>>>>>>>> the list of Git Parameter options. >>>>>>>>>>>> 5. observe console output to examine the "git push" commands >>>>>>>>>>>> generated by the release:prepare goal. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "Jenkins Users" group. >>>>>>>>>>> >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>>> send an email to jenkinsci-use...@googlegroups.com. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/37f6bc2d-d43e-44ff-a877-c525e5007842%40googlegroups.com >>>>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/37f6bc2d-d43e-44ff-a877-c525e5007842%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>>> . >>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "Jenkins Users" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to jenkinsci-use...@googlegroups.com. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/cbaf764b-e3d9-480e-980c-23b772fd4a43%40googlegroups.com >>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/cbaf764b-e3d9-480e-980c-23b772fd4a43%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Jenkins Users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to jenkinsci-use...@googlegroups.com. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/jenkinsci-users/25050720-c0f3-465d-bc83-4d191c1c7bf6%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/25050720-c0f3-465d-bc83-4d191c1c7bf6%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Jenkins Users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to jenkinsci-use...@googlegroups.com. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jenkinsci-users/0cf5698d-3060-49db-b75f-72c5d71d5b7b%40googlegroups.com >>> <https://groups.google.com/d/msgid/jenkinsci-users/0cf5698d-3060-49db-b75f-72c5d71d5b7b%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "Jenkins Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to jenkinsci-users+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-users/5815a292-6fa3-4c2f-838f-c95c53cddbac%40googlegroups.com > <https://groups.google.com/d/msgid/jenkinsci-users/5815a292-6fa3-4c2f-838f-c95c53cddbac%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtF93kZwK_0mZqhtHP_x4RJFM1NxmmhnMnxhjtq%3DVCLxkQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.