如何在Jenkins作业DSL中加载AWS凭据?

bit*_*ain 8 groovy credentials amazon-web-services jenkins jenkins-job-dsl

我有以下DSL结构:

freeStyleJob {
  wrappers {
    credentialsBinding {
      [
         $class:"AmazonWebServicesCredentialsBinding",
         accessKeyVariable: "AWS_ACCESS_KEY_ID",
         credentialsId: "your-credential-id",
         secretKeyVariable: "AWS_SECRET_ACCESS_KEY"
      ]
     }
   }
   steps {
      // ACCESS AWS ENVIRONMENT VARIABLES HERE!
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.这样做的正确语法是什么?对于Jenkins管道,您可以:

withCredentials([[
$class: "AmazonWebServicesCredentialsBinding",
accessKeyVariable: "AWS_ACCESS_KEY_ID",
credentialsId: "your-credential-id",
secretKeyVariable: "AWS_SECRET_ACCESS_KEY"]]) {
  // ACCESS AWS ENVIRONMENT VARIABLES HERE!
}
Run Code Online (Sandbox Code Playgroud)

但是这种语法在正常的DSL作业groovy中不起作用.

tl; dr如何将AmazonWebServicesCredentialsBinding插件定义的AWS凭证导出到Groovy作业DSL的环境变量中?(不是PIPELINE PLUGIN语法!)

bit*_*ain 9

我找到了解决这个问题的解决方案:

wrappers {
  credentialsBinding {
    amazonWebServicesCredentialsBinding {
      accessKeyVariable("AWS_ACCESS_KEY_ID")
      secretKeyVariable("AWS_SECRET_ACCESS_KEY")
      credentialsId("your-credentials-id")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这将导致期望的结果.