私は次の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!
}
}
ただし、これは機能しません。そうするための正しい構文は何ですか? 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の環境変数にエクスポートするにはどうすればよいですか? (パイプラインプラグイン構文ではありません!)
私はこの問題を解決するための解決策を見つけました:
wrappers {
credentialsBinding {
amazonWebServicesCredentialsBinding {
accessKeyVariable("AWS_ACCESS_KEY_ID")
secretKeyVariable("AWS_SECRET_ACCESS_KEY")
credentialsId("your-credentials-id")
}
}
}
これは、望ましい結果につながります。
(aws-credentialsプラグインがインストールされていても)Miguelのソリューションを再利用できないため、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")
}
}