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

Unable to use SSHCheckoutTrait

    XMLWordPrintable

Details

    Description

      branchSources {
         branchSource {
           source {
             github {
               ...
               traits {
                 sshCheckoutTrait {
                   credentialsId(CHECKOUT_SSH_CREDENTIALS_ID)            
                }
              }
             }
           }
         }
       }
      

      Leads to:

      Found multiple extensions which provide method sshCheckoutTrait with arguments [test_seed$_run_closure1$_closure2$_closure3$_closure4$_closure5$_closure6$_closure7@47c1791b]: [[com.cloudbees.jenkins.plugins.bitbucket.SSHCheckoutTrait, org.jenkinsci.plugins.github_branch_source.SSHCheckoutTrait]]

       

      Attachments

        Issue Links

          Activity

            deiga Timo Sand added a comment -

            I have the same issue, any knowledge of how to circumvent?

            deiga Timo Sand added a comment - I have the same issue, any knowledge of how to circumvent?
            bitwiseman Liam Newman added a comment -

            The code above is in jobDSL, correct?

            bitwiseman Liam Newman added a comment - The code above is in jobDSL, correct?
            deiga Timo Sand added a comment -
            deiga Timo Sand added a comment - bitwiseman Yes
            deiga Timo Sand added a comment - - edited

            bitwiseman The same issue with trying to use

            originPullRequestDiscoveryTrait
            

            }

            deiga Timo Sand added a comment - - edited bitwiseman The same issue with trying to use originPullRequestDiscoveryTrait }
            deiga Timo Sand added a comment -

            I found a workaround, but it's Ugly as hell.

             organizationFolder('...') {
              organizations {
                ...
              }
              orphanedItemStrategy {
                ...
              }
              triggers {
                ...
              }
              configure {
                def traits = it / navigators / 'org.jenkinsci.plugins.github__branch__source.GitHubSCMNavigator' / traits
                traits << "org.jenkinsci.plugins.github__branch__source.SSHCheckoutTrait" {
                    credentialsId('...')
                }
                traits << 'org.jenkinsci.plugins.github_branch_source.OriginPullRequestDiscoveryTrait' {
                  strategyId 1
                }
              }
            }
            
            deiga Timo Sand added a comment - I found a workaround, but it's Ugly as hell. organizationFolder( '...' ) { organizations { ... } orphanedItemStrategy { ... } triggers { ... } configure { def traits = it / navigators / 'org.jenkinsci.plugins.github__branch__source.GitHubSCMNavigator' / traits traits << "org.jenkinsci.plugins.github__branch__source.SSHCheckoutTrait" { credentialsId( '...' ) } traits << 'org.jenkinsci.plugins.github_branch_source.OriginPullRequestDiscoveryTrait' { strategyId 1 } } }
            bitwiseman Liam Newman added a comment -

            deiga

            Yeah, JobDSL always has the configure block option. I agree it is ugly but in the short term it give you a work around (you could wrap that in method call and put it in a library to make it look cleaner).

            This sounds like something that would be better to fix/enhance in the JobDSL plugin. Maybe it could detect this from context? In the DSL,

            {sshCheckoutTrait}

            is a descendant of

            {github}

            , the package for which is

            {org.jenkinsci.plugins.github_branch_source}

            . If there a trait in the same package, it would seem reasonable to choose it instead of failing. Then all the branch source plugins would be fixed in one shot.

            Of course, I don't know enough about the JobDSL plugin to know if that would be difficult.

            bitwiseman Liam Newman added a comment - deiga Yeah, JobDSL always has the configure block option. I agree it is ugly but in the short term it give you a work around (you could wrap that in method call and put it in a library to make it look cleaner). This sounds like something that would be better to fix/enhance in the JobDSL plugin. Maybe it could detect this from context? In the DSL, {sshCheckoutTrait} is a descendant of {github} , the package for which is {org.jenkinsci.plugins.github_branch_source} . If there a trait in the same package, it would seem reasonable to choose it instead of failing. Then all the branch source plugins would be fixed in one shot. Of course, I don't know enough about the JobDSL plugin to know if that would be difficult.

            People

              Unassigned Unassigned
              markus_heiden Markus Heiden
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: