5

我有以下DSL结构:如何在Jenkins作业DSL中加载AWS凭证?

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! 
    } 
} 

但是,这是行不通的。这样做的正确语法是什么?对于Jenkins管线,你可以这样做:

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

但是这个语法在正常的DSL作业中不起作用。

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

回答

4

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

wrappers { 
    credentialsBinding { 
    amazonWebServicesCredentialsBinding { 
     accessKeyVariable("AWS_ACCESS_KEY_ID") 
     secretKeyVariable("AWS_SECRET_ACCESS_KEY") 
     credentialsId("your-credentials-id") 
    } 
    } 
} 

这将导致预期的结果。

+0

这并没有为我工作的另一种方法。 –

+0

你有amazonWebServicesCredentialsBinding [插件安装在你的Jenkins](https://wiki.jenkins.io/display/JENKINS/CloudBees+AWS+Credentials+Plugin)吗?另外,你得到的错误是什么? –

0

我不能重新使用米格尔的解决方案(即使安装了AWS的凭据插件),所以这里是DSL配置块

configure { project -> 
     def bindings = project/'buildWrappers'/'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper'/'bindings' 
     bindings << 'com.cloudbees.jenkins.plugins.awscredentials.AmazonWebServicesCredentialsBinding' { 
      accessKeyVariable("AWS_ACCESS_KEY_ID") 
      secretKeyVariable("AWS_SECRET_ACCESS_KEY") 
      credentialsId("credentials-id") 
     } 
    } 
+0

“我无法重复使用Miguel的解决方案”使用我的解决方案时遇到的错误是什么? –

+0

错误是'没有方法签名'。我深入研究了DSL插件源代码,发现根本没有提及'awscredentials',并且包路径对于通用绑定是完全不同的。你肯定有一些调整,任何提示? – Viacheslav

+0

你可以给我一份你的DSL文件的要点吗? –

相关问题