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 <[email protected]> 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 <[email protected]> >> 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 <[email protected]> >>>>> 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 <[email protected]> >>>>>>>> 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 <[email protected]> >>>>>>>>>> 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 [email protected]. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> 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 [email protected]. >>>>>>>>> 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 [email protected]. >>>>>> 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 [email protected]. >>> >> 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 [email protected]. > 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 [email protected]. 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.
