建立管道作业dsl时在groovyscript中使用jenkins凭证

时间:2020-11-08 06:04:10

标签: jenkins groovy jenkins-job-dsl

我正在尝试在管道作业dsl的参数内的常规脚本中使用jenkins存储的凭据。

例如,当我创建pipelineJob时,我使用的参数应该能够从git中获取数据:

activeChoiceReactiveParam('REPO') {
      description('')
      filterable(false)
      choiceType('SINGLE_SELECT')
      groovyScript {
        script(
          """
            import jenkins.*
            import jenkins.model.*
            import hudson.*
            import hudson.model.*
            def TOKEN = ""
            def jenkinsCredentials = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
              com.cloudbees.plugins.credentials.Credentials.class,Jenkins.instance,null,null);

            for (creds in jenkinsCredentials) {
              if(creds.id == "my_stored_credentials"){
                TOKEN = creds.secret
              }
            }
            dirs=["bash", "-c", "curl -s --header \"Authorization: token $TOKEN\" https://github_url_and_path| jq -r .[].name"].execute()
            def list = dirs.text.readLines()
            return list
          """
        )
        fallbackScript('')
      }
    }

此代码有效。在jenkinsCredentials内部,我获得了所有已存储凭据的列表,并获得了所需的凭据,通过遍历所有凭据,可以按其ID找到它。

我的问题是:有没有一种方法可以直接获取那些凭据(my_stored_credentials),而无需遍历所有机密列表?

0 个答案:

没有答案