Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60874

Cannot configure ForkPullRequestDiscoveryTrait by using Job DSL dynamic API

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • Job DSL: 1.76
      GitHub Branch Source: 2.5.9-SNAPSHOT (commit: 7179854f068f0012b3d1222f6924e8de5d437513)

      GitHub Branch Source plugin has introduced unique symbols (not released yet), so finally we are able to configure traits by using Job DSL dynamic API instead of configure block. Unfortunately, ForkPullRequestDiscoveryTrait (gitHubForkDiscovery) is unavailable. For now the only possible option is to still use configure block:

      branchSources {
          branchSource {
              source {
                  github {
                      apiUri(config.scm.apiUrl)
                      id(config.name)
                      repoOwner(config.scm.organisation)
                      repository(config.scm.repository)
                      repositoryUrl(config.scm.url)
                      configuredByUrl(false)
                      credentialsId(config.scm.credentialsId)
                      traits {
                          gitHubBranchDiscovery {
                              strategyId(3)
                          }
                          gitHubPullRequestDiscovery {
                              strategyId(1)
                          }
                      }
                  }
              }
              buildStrategies {
                  skipInitialBuildOnFirstBranchIndexing()
              }
          }
      }
      configure {
          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')
          }
      }
      

      List of available traits in Job DSL Dynamic API Vievwer:

      • gitHubAgedRefsTrait
      • gitHubBranchDiscovery
      • gitHubPullRequestDiscovery
      • gitHubSshCheckout
      • gitHubTagDiscovery

      Missing:

      • gitHubForkDiscovery ← missing, but possible to execute

      I tried:
      1)

      gitHubForkDiscovery {
          strategyId(1)
          trust('trustPermission')
      } 
      
      ERROR: (unknown source) No signature of method: javaposse.jobdsl.plugin.structs.DescribableContext.trust() is applicable for argument types: (java.lang.String) values: [trustPermission]
      Possible solutions: getAt(java.lang.String), print(java.io.PrintWriter), use([Ljava.lang.Object;), print(java.lang.Object), wait(), dump()
      

      2)

      gitHubForkDiscovery {
          strategyId(1)
          trust(gitHubTrustPermissions)
      } 
      
      ERROR: (MultibranchJobFactory.groovy, line 89) No such property: gitHubTrustPermissions for class: javaposse.jobdsl.plugin.structs.DescribableContext
      

      3)

      gitHubForkDiscovery {
          strategyId(1)
          trust(gitHubTrustPermissions())
      } 
      
      ERROR: (unknown source) No signature of method: javaposse.jobdsl.plugin.structs.DescribableContext.gitHubTrustPermissions() is applicable for argument types: () values: []
      

      4)

      gitHubForkDiscovery {
          strategyId(1)
          trust {
              gitHubTrustPermissions()
          }
      } 
      
      ERROR: (unknown source) No signature of method: javaposse.jobdsl.plugin.structs.DescribableContext.gitHubTrustPermissions() is applicable for argument types: () values: []
      

      5)

      gitHubForkDiscovery {
          strategyId(1)
          trust(Class.forName('org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission', true, Jenkins.get().pluginManager.uberClassLoader).getDeclaredConstructor().newInstance())
      } 
      
      ERROR: (unknown source) No signature of method: javaposse.jobdsl.plugin.structs.DescribableContext.trust() is applicable for argument types: (org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission) values: [org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission@3a41ed6e]
      Possible solutions: print(java.io.PrintWriter), use([Ljava.lang.Object;), print(java.lang.Object), wait(), dump(), grep()
      

          [JENKINS-60874] Cannot configure ForkPullRequestDiscoveryTrait by using Job DSL dynamic API

          Adam Gabryś created issue -
          Adam Gabryś made changes -
          Issue Type Original: Task [ 3 ] New: Bug [ 1 ]
          Adam Gabryś made changes -
          Environment New: Job DSL: 1.76
          GitHub Branch Source: 2.5.9-SNAPSHOT (commit: 7179854f068f0012b3d1222f6924e8de5d437513)
          Adam Gabryś made changes -
          Link New: This issue relates to JENKINS-45504 [ JENKINS-45504 ]
          Adam Gabryś made changes -
          Link Original: This issue relates to JENKINS-45504 [ JENKINS-45504 ]
          Adam Gabryś made changes -
          Link New: This issue is related to JENKINS-45504 [ JENKINS-45504 ]
          Adam Gabryś made changes -
          Description Original: GitHub Branch Source plugin has introduced unique symbols (not released yet), so finally we are able to configure traits by using Job DSL dynamic API instead of {{configure block}}. Unfortunately, ForkPullRequestDiscoveryTrait ({{gitHubForkDiscovery}}) is unavailable. For now the only possible option is to still use {{configure}} block:
          {code}
          branchSources {
              branchSource {
                  source {
                      github {
                          apiUri(config.scm.apiUrl)
                          id(config.name)
                          repoOwner(config.scm.organisation)
                          repository(config.scm.repository)
                          repositoryUrl(config.scm.url)
                          configuredByUrl(false)
                          credentialsId(config.scm.credentialsId)
                          traits {
                              gitHubBranchDiscovery {
                                  strategyId(3)
                              }
                              gitHubPullRequestDiscovery {
                                  strategyId(1)
                              }
                          }
                      }
                  }
                  buildStrategies {
                      skipInitialBuildOnFirstBranchIndexing()
                  }
              }
          }
          configure {
              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')
              }
          }
          {code}
          New: GitHub Branch Source plugin has introduced unique symbols (not released yet), so finally we are able to configure traits by using Job DSL dynamic API instead of {{configure block}}. Unfortunately, ForkPullRequestDiscoveryTrait ({{gitHubForkDiscovery}}) is unavailable. For now the only possible option is to still use {{configure}} block:
          {code}
          branchSources {
              branchSource {
                  source {
                      github {
                          apiUri(config.scm.apiUrl)
                          id(config.name)
                          repoOwner(config.scm.organisation)
                          repository(config.scm.repository)
                          repositoryUrl(config.scm.url)
                          configuredByUrl(false)
                          credentialsId(config.scm.credentialsId)
                          traits {
                              gitHubBranchDiscovery {
                                  strategyId(3)
                              }
                              gitHubPullRequestDiscovery {
                                  strategyId(1)
                              }
                          }
                      }
                  }
                  buildStrategies {
                      skipInitialBuildOnFirstBranchIndexing()
                  }
              }
          }
          configure {
              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')
              }
          }
          {code}

          List of available traits:
          * gitHubAgedRefsTrait
          * gitHubBranchDiscovery
          * gitHubSshCheckout
          * gitHubTagDiscovery

          Missing:
          * gitHubForkDiscovery
          * gitHubPullRequestDiscovery
          Adam Gabryś made changes -
          Summary Original: Cannot configure ForkPullRequestDiscoveryTrait by using Job DSL dynamic API New: Cannot configure ForkPullRequestDiscoveryTrait and OriginPullRequestDiscoveryTrait by using Job DSL dynamic API
          Adam Gabryś made changes -
          Remote Link New: This issue links to "github-branch-source-plugin #183 add Symbol to ForkPullRequestDiscoveryTrait (Web Link)" [ 24339 ]
          Adam Gabryś made changes -
          Remote Link New: This issue links to "github-branch-source-plugin #258 add Symbol to OriginPullRequestDiscoveryTrait (Web Link)" [ 24340 ]

            mtughan Michael Tughan
            agabrys Adam Gabryś
            Votes:
            10 Vote for this issue
            Watchers:
            14 Start watching this issue

              Created:
              Updated:
              Resolved: