J'ai un pipeline Jenkins avec plusieurs étapes qui nécessitent toutes les mêmes variables d'environnement, je lance ceci comme suit:
script {
withCredentials([usernamePassword(credentialsId: 'COMPOSER_REPO_MAGENTO', passwordVariable: 'MAGE_REPO_PASS', usernameVariable: 'MAGE_REPO_USER')]) {
def composerAuth = """{
"http-basic": {
"repo.magento.com": {
"username": "${MAGE_REPO_USER}",
"password": "${MAGE_REPO_PASS}"
}
}
}""";
// do some stuff here that uses composerAuth
}
}
Je ne veux pas avoir à re-déclarer composerAuth
à chaque fois, je veux donc stocker les informations d'identification dans une variable globale, afin que je puisse faire quelque chose comme:
script {
// do some stuff here that uses global set composerAuth
}
J'ai essayé de le mettre dans la section environnement:
environment {
DOCKER_IMAGE_NAME = "magento2_website_sibo"
withCredentials([usernamePassword(credentialsId: 'COMPOSER_REPO_MAGENTO', passwordVariable: 'MAGE_REPO_PASS', usernameVariable: 'MAGE_REPO_USER')]) {
COMPOSER_AUTH = """{
"http-basic": {
"repo.magento.com": {
"username": "${MAGE_REPO_USER}",
"password": "${MAGE_REPO_PASS}"
}
}
}""";
}
}
Mais (groovy noob que je suis) ça ne marche pas. Alors, quelle est la meilleure approche pour définir une variable globalement accessible avec des informations d'identification, mais que vous ne devez déclarer qu'une seule fois?
Vous pouvez utiliser la méthode d'assistance credentials
de la section environment
. Pour le type d'informations d'identification "Nom d'utilisateur et mot de passe", il affecte 2 variables d'environnement supplémentaires. Exemple:
environment {
MAGE_REPO_CREDENTIALS = credentials('COMPOSER_REPO_MAGENTO')
COMPOSER_AUTH = """{
"http-basic": {
"repo.magento.com": {
"username": "${env.MAGE_REPO_CREDENTIALS_USR}",
"password": "${env.MAGE_REPO_CREDENTIALS_PSW}"
}
}
}"""
}
Voici comment vous pouvez accomplir cela
pipeline {
agent any
stages {
stage('first') {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'COMPOSER_REPO_MAGENTO', passwordVariable: 'MAGE_REPO_PASS', usernameVariable: 'MAGE_REPO_USER')]) {
def user = env.MAGE_REPO_USER
def password = env.MAGE_REPO_PASS
//Initializing a global variable. Notice there is no def here
composerAuth = """{
"http-basic": {
"repo.magento.com": {
"username": "${user}",
"password": "${password}"
}
}
}"""
}
}
}
}
stage('second') {
steps {
script {
println composerAuth
}
}
}
}
}