-
-
-
- Issue description
*Use case*: Gitlab-branch-source Organization Folder + [Jenkins Templating Engine](https://github.com/jenkinsci/templating-engine-plugin)
Let say I have a Merge Request (MR) from branch A to branch B. Both branches have pipeline_config.groovy in root directory. But when the MR triggers Jenkins build, templating engine doesn't obtain pipeline_config.groovy of any branch, it only obtains pipeline_config.groovy in Governance repo If the build is triggered by branch commit, then templating engine works fine (obtain pipeline_config.groovy in both source repo and Governance repo)
-
-
-
- Steps to reproduce the issue
*1. Governance's pipeline_config.groovy* ``` // restrict individual repository Jenkinsfiles allow_scm_jenkinsfile = false // skip the default JTE checkout and do it explicitly skip_default_checkout = true libraries { merge = true gitlab sonarqube } ``` *2. Source repo's pipeline_config.groovy* ``` libraries{ kubernetes { podTemplate = "nodeTemplate" } npm } ``` *3. Pipeline template (Jenkinsfile in Governance repo)* ``` startPod { clone_source() build() static_code_analysis() } ``` *4. JCasc job config* ``` jobs:
- script: >
organizationFolder('Gitlab Organization Folder') { description("Gitlab folder configured with JCasC") displayName('Projects') // "Projects" organizations { gitLabSCMNavigator { projectOwner("owner_id") credentialsId("ssh_key") serverName("gitlab-server") // "Traits" ("Behaviours" in the GUI) that are "declarative-compatible" traits
Unknown macro: { subGroupProjectDiscoveryTrait() // discover projects inside subgroups gitLabBranchDiscovery { strategyId(3) // discover all branches } originMergeRequestDiscoveryTrait { strategyId(1) // discover MRs } gitLabTagDiscovery() // discover tags }
} } // "Traits" ("Behaviours" in the GUI) that are NOT "declarative-compatible" // For some 'traits, we need to configure this stuff by hand until JobDSL handles it // https://issues.jenkins.io/browse/JENKINS-45504 configure
Unknown macro: { node -> def traits = node / navigators / 'io.jenkins.plugins.gitlabbranchsource.GitLabSCMNavigator' / traits traits << 'io.jenkins.plugins.gitlabbranchsource.ForkMergeRequestDiscoveryTrait' { strategyId('2') trust(class: 'io.jenkins.plugins.gitlabbranchsource.ForkMergeRequestDiscoveryTrait$TrustPermission') } //traits << 'io.jenkins.plugins.gitlabbranchsource.SSHCheckoutTrait' { // credentialsId('ssh_key') //} }
// "Project Recognizers" projectFactories { templateMultiBranchProjectFactory() } // "Orphaned Item Strategy" orphanedItemStrategy
Unknown macro: { discardOldItems { daysToKeep(-1) numToKeep(-1) } }
// "Scan Organization Folder Triggers" : 1 day // We need to configure this stuff by hand because JobDSL only allow 'periodic(int min)' for now configure
Unknown macro: { node -> node / triggers / 'com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger' { spec('H H * * *') interval(86400000) } }
} ```
*5. Trigger Jenkins build by Merge Request creation*
-
-
-
- What's the expected result?
- Templating engine obtains and merges pipeline_config.groovy in both source repo and Governance repo
-
-
-
- What's the actual result?
- Templating engine doesn't obtain pipeline_config.groovy in source repo, it only obtains pipeline_config.groovy in Governance repo.
- This lead to build fail with error:
``` No such DSL method startPod ```
*6. Tool version* jenkins: 2.204.1 gitlab-branch-source: 1.4.3 job-dsl: 1.76 templating-engine: 1.5.1 |