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文件的要點嗎? –

相關問題