web-dev-qa-db-fra.com

Comment exporter les informations d'identification d'une instance de Jenkins vers une autre?

J'utilise le plug-in des informations d'identification dans Jenkins pour gérer les informations d'identification pour l'accès à la base de données et à git pour les versions de mon équipe. J'aimerais copier les informations d'identification d'une instance jenkins dans une autre instance jenkins indépendante. Comment pourrais-je m'y prendre?

13
sakurashinken

UPDATE: TL; DR Suivez le lien fourni ci-dessous dans un commentaire de Filip Stachowiak _ c'est le moyen le plus simple de le faire.

La copie de $ HUDSON_HOME/credentials.xml n’est pas la solution, Jenkins chiffre les mots de passe et ceux-ci ne peuvent pas être déchiffrés par une autre instance à moins que les deux ne partagent une clé commune.

Donc, soit vous utilisez les mêmes clés d’enregistrement dans les deux instances de Jenkins ( Où se trouve la clé de cryptage stockée dans Jenkins? ), ou vous pouvez procéder comme suit:

  1. Créez le même utilisateur/mot de passe, vous devez partager, dans la 2ème instance de Jenkins afin qu'un mot de passe valide soit généré
  2. Ce qui est vraiment important, c'est que les identifiants des utilisateurs dans les deux credentials.xml soient les mêmes. Pour cela (voir l'exemple credentials.xml ci-dessous) pour l'utilisateur: Jenkins l'identifiant <id>c4855f57-5107-4b69-97fd-298e56a9977d</id> doit être identique dans les deux credentials.xml.

    <com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="[email protected]">
      <domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash">
        <entry>
          <com.cloudbees.plugins.credentials.domains.Domain>
            <specifications/>
          </com.cloudbees.plugins.credentials.domains.Domain>
          <Java.util.concurrent.CopyOnWriteArrayList>                
            <com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
              <scope>GLOBAL</scope>
              <id>c4855f57-5107-4b69-97fd-298e56a9977d</id>
              <description>Para SVN</description>
              <username>jenkins</username>
              <password>J1ztA2vSXHbm60k5PjLl5jg70ZooSFKF+kRAo08UVts=    
              </password>                        
            </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
          </Java.util.concurrent.CopyOnWriteArrayList>
        </entry>
      </domainCredentialsMap>
    </com.cloudbees.plugins.credentials.SystemCredentialsProvider>
    
18
Pedro

Je faisais également face au même problème. Ce qui a fonctionné pour moi, c’est que j’ai copié le credentials.xml, le config.xml et le dossier secrets de jenkins existants vers la nouvelle instance. Après le redémarrage de Jenkins, les choses se sont bien passées.

2
MS_22

C'est ce qui a fonctionné pour moi.

Créez un travail dans Jenkins qui prend les informations d'identification et les écrit pour les afficher. Si Jenkins remplace le mot de passe dans la sortie par ****, commencez simplement par le masquer (ajoutez un espace entre chaque caractère, inversez les caractères, encodez-le en base64, etc.).

J'ai utilisé un travail Powershell pour le coder en base64:

[convert]::ToBase64String([text.encoding]::Default.GetBytes($mysecret))

Et ensuite utilisé Powershell pour convertir la chaîne base64 en chaîne normale:

[text.encoding]::Default.GetString([convert]::FromBase64String("bXlzZWNyZXQ="))
1
Trevor

Avez-vous essayé de copier le dossier $ JENKINS_HOME/users et le fichier $ JENKINS_HOME/credentials.xml sur l'autre instance de Jenkins?

0
Bruno Lavit