Jenkins Pipeline job Build Triggers getting reset

Hello all,

I have a Jenkins Pipeline job which gets triggered from Gitlab via the webhooks. Whenever I run a job which involves changing the Jenkinsfile, it seems to reset the Gitlab connection and also the Build triggers section. That means, apart from the settings, it also looses the secret token and I have to regenerate it and re-establish the webhooks connection every time that happens.

What could be the reason for this and how do I resolve this?

My edited Jenkinsfile looks like below.

#!/usr/bin/env groovy

// Abort previous build.
def buildNumber = env.BUILD_NUMBER as int
if (buildNumber > 1) milestone(buildNumber - 1)
milestone(buildNumber)

pipeline {
agent any
options {
skipDefaultCheckout true
timeout(time: 1, unit: ‘HOURS’)
}
stages {
stage(‘Initialize’) {
steps {
deleteDir()

            // Set custom build display name
            dir('checkoutDir') {
                checkout scm

                script {
                    def MergeRequestLastCommit = env.gitlabMergeRequestLastCommit
                    currentBuild.displayName = "${MergeRequestLastCommit.substring(0,6)}"
                }
            }
            dir('container1') {
                sh "cp -r ../checkoutDir/{.,*} ."
            }
            dir('container2') {
                sh "cp -r ../checkoutDir/{.,*} ."
            }

            sh "rm -rf checkoutDir"

            updateGitlabCommitStatus(name: 'my-pipeline', state: 'running')
        }
    }
    stage('Run tests in Docker') {
        failFast false
        parallel {
            stage('container1') {
                steps {
                    script {
                        // do some stuff
                    }
                }
            }
            stage('container2') {
                steps {
                    script {
                        // do some stuff
                    }
                }
            }
        }
    }
}
post {
    success {
        updateGitlabCommitStatus(name: 'my-pipeline', state: 'success')
    }
    failure {
        updateGitlabCommitStatus(name: 'my-pipeline', state: 'failed')
    }
    aborted {
        updateGitlabCommitStatus name: 'my-pipeline', state: 'canceled'
    }
}

}

=======
Jenkins setup:
Jenkins: 2.479.2
OS: Linux - 6.1.53-1
Java: 21.0.3 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)

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
asm-api:9.7.1-97.v4cc844130d97
atlassian-jira-software-cloud:2.0.15
authentication-tokens:1.119.v50285141b_7e1
authorize-project:1.8.1
blueocean:1.27.16
blueocean-autofavorite:1.2.5
blueocean-bitbucket-pipeline:1.27.16
blueocean-commons:1.27.16
blueocean-config:1.27.16
blueocean-core-js:1.27.16
blueocean-dashboard:1.27.16
blueocean-display-url:2.4.3
blueocean-events:1.27.16
blueocean-git-pipeline:1.27.16
blueocean-github-pipeline:1.27.16
blueocean-i18n:1.27.16
blueocean-jira:1.27.16
blueocean-jwt:1.27.16
blueocean-personalization:1.27.16
blueocean-pipeline-api-impl:1.27.16
blueocean-pipeline-editor:1.27.16
blueocean-pipeline-scm-api:1.27.16
blueocean-rest:1.27.16
blueocean-rest-impl:1.27.16
blueocean-web:1.27.16
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
branch-api:2.1200.v4b_a_3da_2eb_db_4
build-blocker-plugin:166.vc82fc20b_a_ed6
build-timeout:1.33
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.1
cloud-stats:336.v788e4055508b_
cloudbees-bitbucket-branch-source:922.va_71d0e0b_7b_8d
cloudbees-folder:6.959.v4ed5cc9e2dd4
command-launcher:116.vd85919c54a_d6
commons-compress-api:1.26.1-2
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.12.0-129.v99a_50df237f7
conditional-buildstep:1.4.3
config-file-provider:980.v88956a_a_5d6a_d
coverage:1.16.1
credentials:1389.vd7a_b_f5fa_50a_2
credentials-binding:687.v619cb_15e923f
dark-theme:479.v661b_1b_911c01
dashboard-view:2.521.v339b_a_f4d8da_8
data-tables-api:2.1.8-1
display-url-api:2.209.v582ed814ff2f
dtkit-api:3.0.2
durable-task:581.v299a_5609d767
echarts-api:5.5.1-4
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1861.vdb_d991590994
envinject:2.919.v009a_a_1067cd0
envinject-api:1.199.v3ce31253ed13
extended-read-permission:53.v6499940139e5
external-monitor-job:215.v2e88e894db_f8
favorite:2.221.v19ca_666b_62f5
font-awesome-api:6.6.0-2
forensics-api:2.6.0
gerrit-code-review:0.4.9
gerrit-trigger:2.42.0
git:5.6.0
git-client:6.1.0
git-server:126.v0d945d8d2b_39
git-tag-message:1.7.1
github:1.40.0
github-api:1.321-478.vc9ce627ce001
github-branch-source:1807.v50351eb_7dd13
gitlab-api:5.6.0-97.v6603a_83f8690
gitlab-branch-source:715.v4c830b_ca_ef95
gitlab-merge-request-jenkins:2.0.0
gitlab-oauth:1.20
gitlab-plugin:1.9.6
gradle:2.13.1
gson-api:2.11.0-85.v1f4e87273c33
handy-uri-templates-2-api:2.1.8-30.v7e777411b_148
htmlpublisher:1.37
inline-pipeline:1.0.3
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
jenkins-design-language:1.27.16
jersey2-api:2.44-151.v6df377fff741
jira:3.13
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
jnr-posix-api:3.1.19-2
joda-time-api:2.13.0-93.v9934da_29b_a_e9
jquery3-api:3.7.1-2
jsch:0.2.16-86.v42e010d9484b_
json-api:20240303-101.v7a_8666713110
json-path-api:2.9.0-118.v7f23ed82a_8b_8
junit:1309.v0078b_fecd6ed
ldap:770.vb_455e934581a_
lockable-resources:1327.ved786b_a_197e0
mail-watcher-plugin:1.19
mailer:489.vd4b_25144138f
mapdb-api:1.0.9-40.v58107308b_7a_7
matrix-auth:3.2.3
matrix-project:840.v812f627cb_578
maven-plugin:3.24
metrics:4.2.21-458.vcf496cb_839e4
mina-sshd-api-common:2.14.0-133.vcc091215a_358
mina-sshd-api-core:2.14.0-133.vcc091215a_358
monitoring:2.3.0
naginator:1.481.vcb_b_384a_3de89
okhttp-api:4.11.0-181.v1de5b_83857df
openstack-cloud:2.65
pam-auth:1.11
parameterized-trigger:806.vf6fff3e28c3e
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-github-lib:61.v629f2cc41d83
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-graph-view:382.vb_9a_27b_7b_ea_71
pipeline-groovy-lib:744.v5b_556ee7c253
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2218.v56d0cda_37c72
pipeline-model-definition:2.2218.v56d0cda_37c72
pipeline-model-extensions:2.2218.v56d0cda_37c72
pipeline-multibranch-defaults:2.1
pipeline-rest-api:2.34
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2218.v56d0cda_37c72
pipeline-stage-view:2.34
pipeline-utility-steps:2.18.0
plain-credentials:183.va_de8f1dd5a_2b_
plugin-util-api:5.1.0
prism-api:1.29.0-18
pubsub-light:1.18
rebuild:332.va_1ee476d8f6d
resource-disposer:0.25
role-strategy:743.v142ea_b_d5f1d3
run-condition:1.7
scm-api:698.v8e3b_c788f0a_6
script-security:1369.v9b_98a_4e95b_2d
sectioned-view:1.29
snakeyaml-api:2.3-123.v13484c65210a_
sse-gateway:1.27
ssh:158.ve2a_e90fb_7319
ssh-credentials:349.vb_8b_6b_9709f5b_
ssh-slaves:2.973.v0fa_8c0dea_f9f
sshd:3.330.vc866a_8389b_58
structs:338.v848422169819
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:1336.vee415d95c521
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3996.va_f5c1799f978
workflow-durable-task-step:1398.vf6c9e89e5988
workflow-job:1468.vcf4f5ee92395
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:936.v9fa_77211ca_e1
ws-cleanup:0.48
xunit:3.1.5

Any pointers would be greatly appreciated :slight_smile:

This sounds vaguely like my problem, only mine is forgetting the parameterized cron expressions. I haven’t been able to find any pattern to mine though, it’s totally random and doesn’t have anything to do with changes in the repo. I haven’t gotten any responses to my question either. Good luck.

Maybe you are mixing two forms of job configuration? The Pipeline definition in the Jenkinsfile should define the complete job, including build triggers and other configuration. If the build triggers and the GitLab connection configuration are not defined in the Jenkinsfile, then changes to the Jenkinsfile may remove those job configuration settings that you applied from the Jenkins job configuration page.

Thank you Mark for the reply.

But, my Jenkinsfile does not have any triggers block or gitlab connection in the options block. You can see the edited Jenkinsfile in my first post. Do you think some of my Jenkinsfile still has any other Gitlab specific job configuration which could be potentially causing this issue?

I have been following the official guide from Gitlab for my webhooks configuration.

That was exactly my concern. A Pipeline job defines the job as code using the Jenkinsfile. If you are also using the job configuration page to adjust the job definition from a web browser and are not placing those adjustments in the Jenkinsfile, then those adjustments may be lost the next time the Pipeline runs.