Hi,

We are trying to move to jobDSL our job definitions, at this point we have
hit an issue that I am not sure we can move forward.
To define the Multibranch Pipeline jobs everithing works fine except the
pull request discovery settings,
Because ForkPullRequestDiscoveryTrait and OriginPullRequestDiscoveryTrait
uses the same symbol we have to use a workaround to configure branch
discovery.
This workaround is to use a `configure` block in the jobDSL definition to
set the proper settings.
This workaround works until jobDSL 1.75, after that it not possible to use
the configuration block due to a sandbox issue (see
https://issues.jenkins.io/browse/JENKINS-63788)
Does anyone found another workaround valid?


this is our current jobDSL definition, noted the `configure` block is
commented

multibranchPipelineJob('test-mbp') {
  primaryView('All')
  displayName('Job test-mbp')
  description('Job test-mbp')
  orphanedItemStrategy {
    discardOldItems {
      numToKeep(20)
      daysToKeep(7)
    }
  }
  branchSources {
    branchSource {
      source {
        github {
          id('apm-shared/oblt-test-env/test-bmp') // IMPORTANT: use a
constant and unique identifier
          credentialsId('my-id')
          repoOwner('owner')
          repository('my-repo')
          repositoryUrl('https://github.com/owner/repo.git')
          configuredByUrl(true)
          // The behaviours control what is discovered from the GitHub
repository.
          traits {
            checkoutOptionTrait {
              extension {
                // Specify a timeout (in minutes) for checkout.
                timeout(15)
              }
            }
            cleanBeforeCheckoutTrait {
              extension {
                // Deletes untracked submodules and any other
subdirectories which contain .git directories.
                deleteUntrackedNestedRepositories(true)
              }
            }
            cloneOptionTrait {
              extension {
                // Perform shallow clone, so that git will not download the
history of the project, saving time and disk space when you just want to
access the latest version of a repository.
                shallow(true)
                // Deselect this to perform a clone without tags, saving
time and disk space when you just want to access what is specified by the
refspec.
                noTags(false)
                // Specify a folder containing a repository that will be
used by Git as a reference during clone operations.
                reference("/var/lib/jenkins//apm-pipeline-library.git")
                // Specify a timeout (in minutes) for clone and fetch
operations.
                timeout(15)
                // Set shallow clone depth, so that git will only download
recent history of the project, saving time and disk space when you just
want to access the latest commits of a repository.
                depth(5)
                // Perform initial clone using the refspec defined for the
repository.
                honorRefspec(false)
              }
            }
            // Discovers branches on the repository.
            //
https://github.com/jenkinsci/github-branch-source-plugin/blob/master/src/main/java/org/jenkinsci/plugins/github_branch_source/BranchDiscoveryTrait.java#L55-L70
            gitHubBranchDiscovery{
              // Determines which branches are discovered.
              strategyId(1)
            }
            // Discovers tags on the repository.
            gitHubTagDiscovery()
            // filers heads
            headRegexFilter {
              // A Java regular expression to restrict the names.
              regex('(master|main|PR-.*|\\d+\\.x)')
            }
            // ignore push
            //ignoreOnPushNotificationTrait()
            // Defines a custom context label to be sent as part of Github
Status notifications for this project.
            notificationContextTrait {
              // The text of the context label for Github status
notifications.
              contextLabel('my-ci-context')
              // Appends the relevant suffix to the context label based on
the build type.
              typeSuffix(true)
            }
            wipeWorkspaceTrait()
          }
        }
        buildStrategies {
          buildChangeRequests {
            // If the change request / pull request is a merge, there are
two reasons for a revision change: The origin of the change request may
have changed The target of the change request may ha
            ignoreTargetOnlyChanges(false)
            // Some sources can permit change request / pull request from
external entities.
            ignoreUntrustedChanges(true)
          }
          // Builds regular branches whenever a change is detected.
          buildRegularBranches()
          // Builds tags (subject to a configurable tag age time window)
          buildTags {
            atLeastDays('-1')
            // The number of days since the tag was created after which it
is no longer eligible for automatic building.
            atMostDays('7')
          }
          // Skip initial build on first branch indexing
          skipInitialBuildOnFirstBranchIndexing()
        }
      }
    }
  }

  // this configuration is broken due
https://issues.jenkins.io/browse/JENKINS-63788
  // configure {
  //   // workaround for JENKINS-46202 (
https://issues.jenkins-ci.org/browse/JENKINS-46202)
  //   // https://issues.jenkins.io/browse/JENKINS-60874
  //   // Discovers pull requests where the origin repository is the same
as the target repository.
  //   //
https://github.com/jenkinsci/github-branch-source-plugin/blob/master/src/main/java/org/jenkinsci/plugins/github_branch_source/OriginPullRequestDiscoveryTrait.java#L57-L72
  //   def traits = it / sources / data / 'jenkins.branch.BranchSource' /
source / traits
  //   traits <<
'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait' {
  //     strategyId 1
  //     trust(class:
'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission')
  //   }
  //   traits <<
'org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait'
{
  //     strategyId 1
  //   }
  // }

  factory {
    workflowBranchProjectFactory {
      scriptPath('.ci/Jenkinsfile')
    }
  }
}

-- 
Un Saludo
Iván Fernández Calvo

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/CAKo5Qrrm0USDedW%3De-tM8eSfuJFzUXt87eTewkD%3DyMg7hFu9Kw%40mail.gmail.com.

Reply via email to