jenkinsci/plasticscm-plugin

Duplicate changeset items when using "Pipeline script from SCM"

chrispewebb opened this issue · 3 comments

Jenkins and plugins versions report

Environment

Jenkins: 2.332.3
OS: Windows 10 - 10.0

ace-editor:1.1
all-changes:1.5
ant:475.vf34069fef73c
antisamy-markup-formatter:2.7
apache-httpcomponents-client-4-api:4.5.13-1.0
authentication-tokens:1.4
blueocean:1.25.3
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.25.3
blueocean-commons:1.25.3
blueocean-config:1.25.3
blueocean-core-js:1.25.3
blueocean-dashboard:1.25.3
blueocean-display-url:2.4.1
blueocean-events:1.25.3
blueocean-git-pipeline:1.25.3
blueocean-github-pipeline:1.25.3
blueocean-i18n:1.25.3
blueocean-jwt:1.25.3
blueocean-personalization:1.25.3
blueocean-pipeline-api-impl:1.25.3
blueocean-pipeline-editor:1.25.3
blueocean-pipeline-scm-api:1.25.3
blueocean-rest:1.25.3
blueocean-rest-impl:1.25.3
blueocean-web:1.25.3
bootstrap4-api:4.6.0-5
bootstrap5-api:5.1.3-6
bouncycastle-api:2.26
branch-api:2.1046.v0ca_37783ecc5
build-monitor-plugin:1.13+build.202205071934
build-timeout:1.20
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
checks-api:1.7.4
cloudbees-bitbucket-branch-source:765.v5a_2d6a_23c01d
cloudbees-folder:6.714.v79e858ef76a_2
command-launcher:81.v9c2cb_cb_db_392
compress-artifacts:1.10
credentials:1087.1089.v2f1b_9a_b_040e4
credentials-binding:523.vd859a_4b_122e6
dashboard-view:2.432.va_712ce35862d
display-url-api:2.3.6
durable-task:496.va67c6f9eefa7
echarts-api:5.3.2-1
email-ext:2.88
external-monitor-job:191.v363d0d1efdf8
favorite:2.4.1
file-operations:1.11
font-awesome-api:6.0.0-1
git:4.11.1
git-client:3.11.0
git-server:1.11
github:1.34.3
github-api:1.303-400.v35c2d8258028
github-branch-source:1628.vb_2f51293cb_78
gradle:1.38
handlebars:3.0.8
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
htmlpublisher:1.30
jackson2-api:2.13.2.20220328-273.v11d70a_b_a_1a_52
javax-activation-api:1.2.0-3
javax-mail-api:1.6.2-6
jaxb:2.3.6-1
jdk-tool:1.5
jenkins-design-language:1.25.3
jjwt-api:0.11.2-71.v2722b_b_06a_2a_f
jnr-posix-api:3.1.7-3
jquery3-api:3.6.0-3
jsch:0.1.55.2
junit:1.63
ldap:2.9
lockable-resources:2.15
log-parser:2.2
login-theme:1.1
mailer:414.vcc4c33714601
matrix-auth:3.1.2
matrix-project:771.v574584b_39e60
momentjs:1.1.1
nunit:0.27
okhttp-api:4.9.3-105.vb96869f8ac3a
pam-auth:1.8
pipeline-build-step:2.18
pipeline-github-lib:36.v4c01db_ca_ed16
pipeline-graph-analysis:195.v5812d95a_a_2f9
pipeline-input-step:448.v37cea_9a_10a_70
pipeline-milestone-step:101.vd572fef9d926
pipeline-model-api:2.2077.vc78ec45162f1
pipeline-model-definition:2.2077.vc78ec45162f1
pipeline-model-extensions:2.2077.vc78ec45162f1
pipeline-rest-api:2.24
pipeline-stage-step:293.v200037eefcd5
pipeline-stage-tags-metadata:2.2077.vc78ec45162f1
pipeline-stage-view:2.24
plain-credentials:1.8
plasticscm-plugin:4.0
plot:2.1.10
plugin-util-api:2.16.0
popper-api:1.16.1-3
popper2-api:2.11.5-1
postbuild-task:1.9
pubsub-light:1.16
resource-disposer:0.19
scm-api:608.vfa_f971c5a_a_e9
script-security:1158.v7c1b_73a_69a_08
simple-theme-plugin:103.va_161d09c38c7
slack:608.v19e3b_44b_b_9ff
snakeyaml-api:1.30.1
sounds:0.7
sse-gateway:1.25
ssh-credentials:277.v95c2fec1c047
ssh-slaves:1.814.vc82988f54b_10
sshd:3.228.v4c9f9e652c86
structs:318.va_f3ccb_729b_71
timestamper:1.17
token-macro:293.v283932a_0a_b_49
trilead-api:1.57.v6e90e07157e1
unity3d-plugin:1.3
variant:1.4
windows-slaves:1.8
workflow-aggregator:2.7
workflow-api:1144.v61c3180fa_03f
workflow-basic-steps:948.v2c72a_091b_b_68
workflow-cps:2689.v434009a_31b_f1
workflow-cps-global-lib:575.v24fa_0a_b_f7383
workflow-durable-task-step:1130.v8fd69d0b_8857
workflow-job:1180.v04c4e75dce43
workflow-multibranch:712.vc169a_1387405
workflow-scm-step:400.v6b_89a_1317c9a_
workflow-step-api:625.vd896b_f445a_f8
workflow-support:819.v37d707a_71d9b_
ws-cleanup:0.42

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

  1. Build project using "Pipeline script from SCM", where the build script is fetched from a plasticscm repo
  2. Notice that in the jenkins UI, two Plastic SCM changesets are visible. The changesets are also duplicated in currentBuild.changeSets in script (which causes us issues).

image

Expected Results

One one set of changes sets, with no duplicates.

Actual Results

Two sets of change sets, and duplicates in currentBuild.changeSets.

Anything else?

To check out, our build script is:

    stage('SCM Checkout') {
        steps {
            script {
                plasticVars = cm branch: "main", repository: 'REPONAME', server: 'CLOUDNAME@cloud'
            }
        }
    }

I am using the "Lightweight Checkout" option, which is supposed to not populate the changelog or polling according to the documentation. It seem to be doing both of those.

mig42 commented

Hi,

Could you share the details of your scenario? In particular, we're interested in:

  • The project configuration
  • The pipeline script
  • The build output

Our guess is that you're using a Declarative Pipeline. That kind of pipeline performs an implicit checkout at the start of the process. If you're indeed using this kind of pipeline, adding a new stage to checkout sources would cause a new checkout to run. That would be consistent with the two Plastic SCM entries in the screenshot.

When you use a Declarative Pipeline, you don't need to add a manual checkout step. The pipeline will take the parameters you configured for the "Pipeline script from SCM" and run a full checkout with them. You can disable that by selecting skipDefaultCheckout() in the agent options.

options { skipDefaultCheckout() }

https://www.jenkins.io/doc/book/pipeline/syntax/

Hello,

Yes we are using a Declarative Pipeline.

I added the option you recommended and it resolved the issue. Thanks so much!

I guess I misunderstood what the lightweight checkout option does.

Thank you for the help.