• Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Minor Minor
    • job-dsl-plugin
    • None
    • jobdsl 1.67

      We'd like to make use of credentials stored in Jenkins from a groovy class that's part of our job DSL scripts. Unfortunately this seems to be impossible since 1.43 (couldn't actually find a reference to this in the code/changelog, but did find this SO answer https://stackoverflow.com/a/40474755 ) because it's impossible to import the necessary classes.

      This simple example:

      def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(    com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,    Jenkins.instance,    null,    null);for (c in creds) {     println(c.id + ": " + c.description)}

      from https://wiki.jenkins.io/display/JENKINS/Printing+a+list+of+credentials+and+their+IDs

      works fine in the script console but fails when putting it in a job DSL script.

      This means the only way for us to provide these credentials is as hardcoded strings in our job DSL scripts, which is of course not acceptable.

          [JENKINS-52266] Unable to use credentials in groovy class

          Daniel Spilker added a comment - See also https://github.com/jenkinsci/job-dsl-plugin/wiki/Handling-Credentials

          Simon van der Veldt added a comment - - edited

          daspilker

          I created this issues after reading that page multiple times and trying out different things, none of which work.

          The latter 2 options are insecure, so obviously not an option and the 1st one is the reason I created this issue, credentials() only works in certain places like when defining a git remote, not everywhere/in groovy classes.

          Would the linked issue solve this problem?
          It seems easier to just make credentials() work everywhere?

          Simon van der Veldt added a comment - - edited daspilker I created this issues after reading that page multiple times and trying out different things, none of which work. The latter 2 options are insecure, so obviously not an option and the 1st one is the reason I created this issue, credentials() only works in certain places like when defining a git remote, not everywhere/in groovy classes. Would the linked issue solve this problem? It seems easier to just make credentials() work everywhere?

          David Laidlaw added a comment -

          I found I was running into same issue - the groovy script worked fine when testing with the in script editor.
          what made it finally work for me was adding 'import jenkins.model.*' to top of script - viola all my calls with the 

           
          com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials
          were working again

          David Laidlaw added a comment - I found I was running into same issue - the groovy script worked fine when testing with the in script editor. what made it finally work for me was adding 'import jenkins.model.*' to top of script - viola all my calls with the    com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials were working again

            daspilker Daniel Spilker
            simonvanderveldt Simon van der Veldt
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: