web-dev-qa-db-fra.com

Comment charger les informations d'identification AWS dans le travail DSL de Jenkins?

J'ai la structure DSL suivante:

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

Cependant, cela ne fonctionne pas. Quelle est la syntaxe correcte pour le faire? Pour les pipelines Jenkins, vous pouvez effectuer les tâches suivantes:

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

mais cette syntaxe ne fonctionne pas dans les tâches DSL normales.

tl; dr comment puis-je exporter les informations d'identification AWS définies par le plug-in AmazonWebServicesCredentialsBinding dans des variables d'environnement dans Groovy Job DSL? (PAS PIPELINE PLUGIN SYNTAX!!)

8
bitbrain

J'ai trouvé une solution pour résoudre ce problème:

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

Cela conduira au résultat souhaité.

8
bitbrain

Je ne suis pas en mesure de réutiliser la solution de Miguel (même avec le plugin aws-credentials installé), voici donc une autre approche avec le bloc de configuration 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