Lorsqu'une propriété de mot de passe est définie dans un Jenkinsfile
:
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
Jenkins invite les utilisateurs à fournir sa valeur à chaque exécution du pipeline:
Je veux que ce paramètre soit masqué pour que echo ${KEY}
n'imprime pas la valeur réelle transmise par l'utilisateur. Cependant, pour le moment, l'écho affiche la valeur fournie textuellement:
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
node {
stage('Stage 1') {
# Will print the actual value of the KEY, verbatim
sh "echo ${KEY}"
}
}
Il semble également que le plugin Mask Passwords ne fonctionne pas avec les pipelines Jenkins, donc l'utilisation de ce n'est pas une option.
Existe-t-il un moyen de masquer ces paramètres saisis par mot de passe dans les journaux de génération?
Vous voudrez utiliser le plugin de masquage des mots de passe . Voici un exemple de Jenkinsfile
tiré de ma bibliothèque de pipeline partagée .
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
node {
stage('Stage 1') {
// Will print the masked value of the KEY, replaced with ****
wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'KEY', password: KEY]], varMaskRegexes: []]) {
sh "echo ${KEY}"
}
}
}
À part les suggestions existantes sur withCredentials
, il n'y a pas grand-chose à ajouter. Cependant, si vous générez automatiquement vos travaux via des modèles et que vous définissez un mot de passe par défaut, vous souhaiterez peut-être utiliser hudson.util.Secret
pour sécuriser vos modèles.
Vous pouvez utiliser plugin Jenkins Credentials . Avec ce plugin, vous pouvez créer un justificatif d'identité avec un ID à utiliser dans votre pipeline:
Le code sera:
withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
echo "My password is '${password1}'!"
}
Dans votre cas d'utilisation:
node {
stage('Echo') {
withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
echo "'${password1}'!"
}
}
}
Remarque: Le mot de passe sera masqué uniquement dans le bloc withCredentials.