web-dev-qa-db-fra.com

Comment télécharger un fichier secret jenkins à partir du magasin de données d'identification?

Je peux seulement télécharger un fichier secret jenkins existant, mais pas le fichier existant.

Comment télécharger un fichier secret existant que j'ai chargé pour confirmer son contenu?

4
red888

Si vous pouvez accéder à la console de script de votre instance Jenkins (par exemple, en accédant à https://jenkins.example.com/script dans un navigateur), vous pouvez exécuter le script suivant:

import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.Domain;
import org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl;

println "Jenkins credentials config file location=" + SystemCredentialsProvider.getConfigFile();
println ""

def fileName = "my-secret-file.txt"

SystemCredentialsProvider.getInstance().getCredentials().stream().
  filter { cred -> cred instanceof FileCredentialsImpl }.
  map { fileCred -> (FileCredentialsImpl) fileCred }.
  filter { fileCred -> fileName.equals( fileCred.getFileName() ) }.
  forEach { fileCred -> 
    String s = new String( fileCred.getSecretBytes().getPlainData() )
    println "XXXXXX BEGIN a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
    println s
    println "XXXXXX END a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
    println ""
  }

Remplacez fileName par le nom de fichier que vous souhaitez imprimer. Ce script imprimera le contenu des fichiers du domaine global du magasin d'informations d'identification Jenkins dont le nom de fichier est fileName.

Avertissements réparables de ce script:

3
Abdull

Si vous disposez d'un accès Shell aux et Sudo / root / Utilisateurs de Jenkins Unix autorisations sur la machine exécutant Jenkins, vous pouvez récupérer le fichier secret en procédant comme suit:

  • Dans certains travaux Jenkins autorisés à accéder au fichier secret, sélectionnez Configurer .
  • Sur l'interface Configuration , sous Environnement de construction , sélectionnez Utilisez un ou des textes secrets ou un/des fichier (s) .
  • Cliquez sur Ajouter -> Fichier secret . Cela crée un nouveau fichier secret binding. 
  • Sélectionnez Informations d'identification spécifiques , puis, dans le menu déroulant situé en dessous, sélectionnez le fichier secret que vous souhaitez récupérer. Supposons que votre fichier secret est stocké sous le nom de fichier my-secret-file.txt .
  • Attribuez à ce fichier secret une variable p. Ex. MY_SECRET_FILE_TXT.
  • Maintenant, sous Pre Steps , cliquez sur Ajouter une étape de pré-construction -> Exécuter Shell .
  • Dans la zone de texte Commande , ajoutez le script Shell suivant:

    echo "executing user is $(whoami)"
    
    # remove my-secret-file.txt before possibly getting an overwriting error
    rm -f $WORKSPACE/my-secret-file.txt
    
    echo "Jenkins project workspace: $WORKSPACE"
    cp $MY_SECRET_FILE_TXT $WORKSPACE
    
  • Cliquez sur Enregistrer pour enregistrer cette configuration.

La prochaine fois qu'une génération est déclenchée pour ce projet, le fichier secret doit apparaître dans l'espace de travail de ce projet, c'est-à-dire à l'emplacement $WORKSPACE/my-secret-file.txt. Par exemple, sur mon Ubuntu 14.04.5 LTS installation avec package installé et daemonjenkins, cet emplacement est /var/lib/jenkins/workspace/$JENKINS_PROJECT_NAME/my-secret-file.txt

1
Abdull

La réponse marquée avec la console de script est géniale. 

Il existe également ce script qui répertorie TOUS les secrets pouvant être exécutés depuis la console: https://github.com/tkrzeminski/jenkins-groovy-scripts/blob/master/show-all- credentials.groovy

0
red888