web-dev-qa-db-ja.com

JenkinsジョブDSLにAWS認証情報をロードする方法は?

私は次の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の環境変数にエクスポートするにはどうすればよいですか? (パイプラインプラグイン構文ではありません!)

8
bitbrain

私はこの問題を解決するための解決策を見つけました:

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

これは、望ましい結果につながります。

9
bitbrain

(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")
        }
    }
0
Viacheslav