git-plugin icon indicating copy to clipboard operation
git-plugin copied to clipboard

[JENKINS-67440] PollSCM does not build on repo change with parameterized target branch

Open jenkins-infra-bot opened this issue 4 years ago • 3 comments

Using strategy: Default
[poll] Last Built Revision: Revision 5a5549ff682d32d98a9ebf0c7e88cea84b5d85f6 (refs/remotes/origin/sprint_29)
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential 4bf47db3-4a46-4546-8ad0-54f157d0a78c
 > git --version # timeout=10
 > git --version # 'git version 2.24.0'
using GIT_ASKPASS to set credentials 
 > git ls-remote -h -- https://********.git # timeout=10
Found 14 remote heads on https://********.git
Using strategy: SpecificRevisionBuildChooser 

 

The sprint_29 branch is actually on 2aa5fa15c43e3299054d3fc65d279548efa75270 (other branches are unchanged)

 

Steps to reproduce:

  1. Create a pipeline job
  2. SCM with Git, target branch */sprint_${SPRINT_NUM} and SPRINT_NUM is set as global variable. Uncheck lightweight checkout.
  3. The Jenkinsfile has a shared library imported, it also has PollSCM("* * * * *") in the triggers section
  4. Trigger the pipeline once to apply the config in Jenkins
  5. Polling log will find no change if you pushed something on sprint_29 on the branch. (no need to commit anything on the shared library)

 

 Jenkins 2.319.1

Git Plugin 4.10.1


Originally reported by hlx98007, imported from: PollSCM does not build on repo change with parameterized target branch
  • status: Open
  • priority: Major
  • component(s): git-plugin
  • resolution: Unresolved
  • votes: 0
  • watchers: 2
  • imported: 2025-12-02
Raw content of original issue
Using strategy: Default
[poll] Last Built Revision: Revision 5a5549ff682d32d98a9ebf0c7e88cea84b5d85f6 (refs/remotes/origin/sprint_29)
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential 4bf47db3-4a46-4546-8ad0-54f157d0a78c
 > git --version # timeout=10
 > git --version # 'git version 2.24.0'
using GIT_ASKPASS to set credentials 
 > git ls-remote -h -- https://********.git # timeout=10
Found 14 remote heads on https://********.git
Using strategy: SpecificRevisionBuildChooser 

 

The sprint_29 branch is actually on 2aa5fa15c43e3299054d3fc65d279548efa75270 (other branches are unchanged)

 

Steps to reproduce:

  1. Create a pipeline job
  2. SCM with Git, target branch */sprint_${SPRINT_NUM} and SPRINT_NUM is set as global variable. Uncheck lightweight checkout.
  3. The Jenkinsfile has a shared library imported, it also has PollSCM("* * * * *") in the triggers section
  4. Trigger the pipeline once to apply the config in Jenkins
  5. Polling log will find no change if you pushed something on sprint_29 on the branch. (no need to commit anything on the shared library)

 

 Jenkins 2.319.1

Git Plugin 4.10.1

jenkins-infra-bot avatar Dec 23 '21 03:12 jenkins-infra-bot

markewaite:
  • Original comment link
  • Raw content of original comment:

    This configuration is creating a single job that switches between branches. That's not a recommended technique because we have multibranch pipelines and organization folders that will automatically create and destroy jobs that are dedicated to branches. When a branch is created, the multiranch pipeline creates the job automatically. When a branch is deleted, the multibranch pipeline deletes the job.

    I don't plan to work on this issue report. I recommend multi-branch pipeline and organization folders as the better way to meet the need of a job that runs on a branch.

This configuration is creating a single job that switches between branches. That's not a recommended technique because we have multibranch pipelines and organization folders that will automatically create and destroy jobs that are dedicated to branches. When a branch is created, the multiranch pipeline creates the job automatically. When a branch is deleted, the multibranch pipeline deletes the job.

I don't plan to work on this issue report. I recommend multi-branch pipeline and organization folders as the better way to meet the need of a job that runs on a branch.

jenkins-infra-bot avatar Dec 23 '21 04:12 jenkins-infra-bot

hlx98007:
  • Original comment link
  • Raw content of original comment:

    markewaite Thanks for your quick response, 1 question, can I use Jenkins Global variables in the filter of what branch to be listed on the multibranch job in Jenkins?

     

    It looks like I can only use wildcard or regexp to filter my branch.

    i.e. ^sprint_\d+

     

    what I really want to achieve is: ^sprint_${SPRINT_NUM}

markewaite Thanks for your quick response, 1 question, can I use Jenkins Global variables in the filter of what branch to be listed on the multibranch job in Jenkins?

 

It looks like I can only use wildcard or regexp to filter my branch.

i.e. ^sprint_\d+

 

what I really want to achieve is: ^sprint_${SPRINT_NUM}

jenkins-infra-bot avatar Dec 23 '21 05:12 jenkins-infra-bot

markewaite:
  • Original comment link
  • Raw content of original comment:

    can I use Jenkins Global variables in the filter of what branch to be listed on the multibranch job in Jenkins?

    There are traits that can limit which branches are built. I've never tried to use variable expansion with those traits.

    I don't know what you mean by "global variable" in that case. Are you setting a Java property for SPRINT_NUM when you start Jenkins? Are you defining an environment variable for the Jenkins Java process when you start Jenkins? Are you using the EnvInject plugin to define an environment variable in the context of a job?

can I use Jenkins Global variables in the filter of what branch to be listed on the multibranch job in Jenkins?

There are traits that can limit which branches are built. I've never tried to use variable expansion with those traits.

I don't know what you mean by "global variable" in that case. Are you setting a Java property for SPRINT_NUM when you start Jenkins? Are you defining an environment variable for the Jenkins Java process when you start Jenkins? Are you using the EnvInject plugin to define an environment variable in the context of a job?

jenkins-infra-bot avatar Dec 23 '21 15:12 jenkins-infra-bot