jenkinsci / plasticscm-plugin

A plugin for Jenkins to be able to use Plastic SCM
MIT License
16 stars 31 forks source link

Duplicate changeset items when using "Pipeline script from SCM" #51

Closed chrispewebb closed 2 years ago

chrispewebb commented 2 years ago

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'
            }
        }
    }
chrispewebb commented 2 years ago

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 2 years ago

Hi,

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

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/

chrispewebb commented 2 years ago

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.