it-swarm.com.de

Wie lade ich AWS-Anmeldeinformationen in Jenkins Job DSL?

Ich habe folgende DSL-Struktur:

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

Dies funktioniert jedoch nicht. Was ist die richtige Syntax dafür? Für Jenkins-Pipelines können Sie Folgendes tun:

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

aber diese syntax funktioniert im normalen dsl job nicht groovy.

tl; dr Wie kann ich AWS-Anmeldeinformationen, die vom AmazonWebServicesCredentialsBinding-Plugin definiert wurden, in Umgebungsvariablen in Groovy Job DSL exportieren? (NICHT PIPELINE PLUGIN SYNTAX!)

8
bitbrain

Ich habe eine Lösung gefunden, um dieses Problem zu lösen:

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

Dies führt zum gewünschten Ergebnis.

8
bitbrain

Ich kann die Lösung von Miguel (auch mit installiertem aws-credentials-Plugin) nicht wiederverwenden, daher gibt es hier einen anderen Ansatz mit DSL-Konfigurationsblock

    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