Poll SCM keeps launching with no changes

Hi,

I have just started to migrate our old jobs from Freestyle to Declarative pipeline.

I am having issue specifically around SCM polling.

First using the Cloudbees migrator, it converted the polling to:

triggers {
  pollSCM('H/15 * * * *')
}

but I had no success and once I got the job tested and moved to fetch the pipeline from my git repo, I found that disabling “Lightweight checkout” would cause all 3GB of the repo to be pulled as well as the same for the job itself which just doesn’t work.

So now I added the Poll SCM in the job (similar to Freestyle) but now it is triggered every 15 minutes, even when no changes. Here is the log that I get:

Started on Jan 21, 2025, 7:03:00 AM
Using strategy: SpecificRevisionBuildChooser
[poll] Last Built Revision: Revision 2e0e8b2a1351cd1ab7eaf696f053cb5279935189 (master)
The recommended git tool is: NONE
No credentials specified
 > git --version # timeout=10
 > git --version # 'git version 2.34.1'
 > git ls-remote -h -- ssh://git@xxx.zyx.com/home/git/jenkins-libs # timeout=10
Found 1 remote heads on ssh://git@xxx.zyx.com/home/git/jenkins-libs
[poll] Latest remote head revision on refs/heads/master is: 2e0e8b2a1351cd1ab7eaf696f053cb5279935189 - already built by 61
Using strategy: Default
[poll] Last Built Revision: Revision 721c4b397d3655f208f17cd876bddbf29815bfff (refs/remotes/origin/ba30)
The recommended git tool is: git
No credentials specified
 > git --version # timeout=10
 > git --version # 'git version 2.34.1'
 > git ls-remote -h -- ssh://git@xxx.zyx.com/home/git/iriscommon # timeout=10
Found 57 remote heads on ssh://git@xxx.zyx.com/home/git/iriscommon
[poll] Latest remote head revision on refs/heads/ba30 is: 721c4b397d3655f208f17cd876bddbf29815bfff - already built by 61
Using strategy: Default
The recommended git tool is: git
No credentials specified
 > git --version # timeout=10
 > git --version # 'git version 2.34.1'
 > git ls-remote -h -- ssh://git@xxx.zyx.com/home/git/iriscommon.git # timeout=10
Found 57 remote heads on ssh://git@xxx.zyx.com/home/git/iriscommon.git
[poll] Latest remote head revision on refs/heads/ba30 is: 721c4b397d3655f208f17cd876bddbf29815bfff
Done. Took 1.3 sec
Changes found

I really don’t understand what changes are found and what can be done to fix this. The same Poll SCM has been working for almost 10 years in Freestyle.

Thanks
Alain

Jenkins setup:
Jenkins: 2.493
OS: Linux - 6.8.0-1021-aws
Java: 21.0.5 - Ubuntu (OpenJDK 64-Bit Server VM)
---
ace-editor:1.1
amazon-ecr:1.136.v914ea_5948634
ansicolor:1.0.5
ant:511.v0a_a_1a_334f41b_
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
apache-httpcomponents-client-5-api:5.4-135.v4da_349961256
asm-api:9.7.1-97.v4cc844130d97
authentication-tokens:1.119.v50285141b_7e1
aws-credentials:242.v8d05df911e3d
aws-java-sdk:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-api-gateway:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-autoscaling:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-cloudformation:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-cloudfront:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-codebuild:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-codedeploy:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-ec2:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-ecr:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-ecs:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-efs:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-elasticbeanstalk:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-elasticloadbalancingv2:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-iam:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-kinesis:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-lambda:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-logs:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-minimal:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-organizations:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-secretsmanager:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-sns:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-sqs:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-ssm:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk2-core:2.29.52-15.v9980e773794d
aws-java-sdk2-ec2:2.29.52-15.v9980e773794d
bootstrap4-api:4.6.0-6
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.80-256.vf98926042a_9b_
branch-api:2.1208.vf528356feca_4
build-blocker-plugin:166.vc82fc20b_a_ed6
build-timeout:1.33
caffeine-api:3.1.8-133.v17b_1ff2e0599
changelog-history:1.7
checks-api:2.2.1
cloudbees-folder:6.980.v5a_cc0cb_25881
command-launcher:116.vd85919c54a_d6
commons-compress-api:1.27.1-1
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.13.0-153.v91dcd89e2a_22
copyartifact:761.vea_2b_25523e84
credentials:1405.vb_cda_74a_f8974
credentials-binding:687.v619cb_15e923f
dark-theme:514.va_3ea_73d65dc1
data-tables-api:2.1.8-1
declarative-pipeline-migration-assistant:1.6.4
declarative-pipeline-migration-assistant-api:1.6.4
display-url-api:2.209.v582ed814ff2f
docker-build-step:2.12
docker-commons:445.v6b_646c962a_94
docker-java-api:3.4.1-96.v77147a_de67f8
docker-workflow:580.vc0c340686b_54
durable-task:581.v299a_5609d767
echarts-api:5.5.1-5
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1866.v14fa_6d201654
envinject:2.919.v009a_a_1067cd0
envinject-api:1.199.v3ce31253ed13
extended-choice-parameter:382.v5697b_32134e8
font-awesome-api:6.6.0-2
git:5.7.0
git-client:6.1.1
git-parameter:0.10.0
git-server:126.v0d945d8d2b_39
github:1.40.0
github-api:1.321-478.vc9ce627ce001
github-branch-source:1809.v088b_5f22c768
gogs-webhook:1.0.15
google-container-registry-auth:0.3
google-oauth-plugin:1.330.vf5e86021cb_ec
gradle:2.14
gson-api:2.11.0-85.v1f4e87273c33
handlebars:3.0.8
instance-identity:201.vd2a_b_5a_468a_a_6
ionicons-api:74.v93d5eb_813d5f
jackson2-api:2.17.0-379.v02de8ec9f64c
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javadoc:280.v050b_5c849f69
javax-activation-api:1.2.0-7
javax-mail-api:1.6.2-10
jaxb:2.3.9-1
jdk-tool:80.v8a_dee33ed6f0
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
joda-time-api:2.13.0-93.v9934da_29b_a_e9
jquery:1.12.4-3
jquery-detached:1.2.1
jquery3-api:3.7.1-2
jsch:0.2.16-86.v42e010d9484b_
json-api:20250107-125.v28b_a_ffa_eb_f01
json-path-api:2.9.0-118.v7f23ed82a_8b_8
junit:1312.v1a_235a_b_94a_31
ldap:770.vb_455e934581a_
lockable-resources:1327.ved786b_a_197e0
mailer:489.vd4b_25144138f
mapdb-api:1.0.9-40.v58107308b_7a_7
matrix-auth:3.2.3
matrix-project:845.vffd7fa_f27555
maven-plugin:3.24
mina-sshd-api-common:2.14.0-138.v6341ee58e1df
mina-sshd-api-core:2.14.0-138.v6341ee58e1df
momentjs:1.1.1
multiple-scms:0.8
oauth-credentials:0.653.v14cf2088e950
okhttp-api:4.11.0-183.va_87fc7a_89810
pam-auth:1.11
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:61.v629f2cc41d83
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-groovy-lib:749.v70084559234a_
pipeline-input-step:508.v584c0e9a_2177
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2218.v56d0cda_37c72
pipeline-model-declarative-agent:1.1.1
pipeline-model-definition:2.2218.v56d0cda_37c72
pipeline-model-extensions:2.2218.v56d0cda_37c72
pipeline-rest-api:2.34
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2218.v56d0cda_37c72
pipeline-stage-view:2.34
plain-credentials:183.va_de8f1dd5a_2b_
plugin-usage-plugin:4.8
plugin-util-api:5.1.0
popper-api:1.16.1-3
popper2-api:2.11.6-5
prism-api:1.29.0-18
promoted-builds:965.vcda_c6a_e0998f
resource-disposer:0.25
s3:494.v65894c3ef139
scm-api:703.v72ff4b_259600
script-security:1369.v9b_98a_4e95b_2d
snakeyaml-api:2.3-123.v13484c65210a_
ssh-credentials:349.vb_8b_6b_9709f5b_
ssh-slaves:3.1021.va_cc11b_de26a_e
sshd:3.330.vc866a_8389b_58
structs:338.v848422169819
subversion:1281.vc8837f91a_07a_
theme-manager:262.vc57ee4a_eda_5d
timestamper:1.28
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
variant:60.v7290fc0eb_b_cd
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1358.vfb_5780da_64cb_
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:4009.v0089238351a_9
workflow-cps-global-lib:612.v55f2f80781ef
workflow-durable-task-step:1400.v7a_fd50a_091de
workflow-job:1496.v5b_18defc07f2
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:943.v8b_0d01a_7b_a_08
ws-cleanup:0.48

Since the polling log shows:

[poll] Latest remote head revision on master is: 2e0e8b2a - already built by 61

and then shows

[poll] Latest remote head revision on ba30 is: 721c4b397 - already built by 61

I would guess that the name of the branch that you’re polling is using some form of wildcard and the git plugin is then switching back and forth between the two branches. Try specifying the exact branch to be built as the branch name instead of using a wildcard.

The first one with controller is the shared lib for the pipeline

Found 1 remote heads on ssh://git@xxx.zyx.com/home/git/jenkins-libs
[poll] Latest remote head revision on refs/heads/master is: 2e0e8b2a1351cd1ab7eaf696f053cb5279935189 - already built by 61

and the 2nd one is the job itself

Found 57 remote heads on ssh://git@xxx.zyx.com/home/git/iriscommon
[poll] Latest remote head revision on refs/heads/ba30 is: 721c4b397d3655f208f17cd876bddbf29815bfff - already built by 61

But notice that it goes a 2nd time against the job repo but this time a line seems to be missing:

Using strategy: Default
---->>> where is the line like: [poll] Last Built Revision:
The recommended git tool is: git

Also interesting to see the differences (see “.git”), between check 1:

Found 57 remote heads on ssh://git@xxx.zyx.com/home/git/iriscommon

and check 2:

Found 57 remote heads on ssh://git@xxx.zyx.com/home/git/iriscommon.git

And the job specifies the branch for the pipeline as */ba30 and a url of: ssh://git@xxx.zyx.com:/home/git/iriscommon.git

Why?

Thanks
Alain