Używam wtyczki referencji w Jenkins, aby zarządzać poświadczeniami dostępu do git i baz danych dla kompilacji mojego zespołu. Chciałbym skopiować referencje z jednej instancji Jennkins do innej, niezależnej instancji Jennkins. Jak miałbym to zrobić?Jak eksportować dane uwierzytelniające z jednej instancji Jennkins do drugiej?
Odpowiedz
Skopiowanie $ HUDSON_HOME/credentials.xml nie jest rozwiązaniem, ponieważ Jenkins szyfruje hasła i nie można ich odszyfrować przez inną instancję, chyba że oba mają wspólny klucz.
Więc, albo użyć tych samych klawiszy encription w obu przypadkach Jenkins (Where's the encryption key stored in Jenkins?) lub co można zrobić, to:
- Tworzenie tego samego użytkownika/hasło, trzeba się podzielić, w instancji 2-cie Jenkins tak, że generowane jest poprawne hasło
Co jest naprawdę ważne, to, że identyfikator użytkownika w obu credentials.xml jest taki sam. Do tego (patrz przykład poniżej) credentials.xml dla użytkownika: Jenkins
<id>c4855f57-5107-4b69-97fd-298e56a9977d</id>
identyfikator musi być taka sama w obu 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>
Czy próbowałeś skopiować folder $ JENKINS_HOME/users i $ JENKINS_HOME/credentials.xml do innej instancji Jenkinsa?
Używam uwierzytelniania ldap dla samego serwera, ale te poświadczenia są dla git i dostępu do bazy danych. Gdzie są przechowywane? w folderze wtyczek? – sakurashinken
Jeśli tworzysz globalne dane uwierzytelniające (w sekcji administracyjnej Jenkinsa), znajdują się one w pliku credentials.xml. –
Dzięki, to była właściwa lokalizacja. – sakurashinken
Byłem też w obliczu tego samego problemu. To, co zadziałało, skopiowałem plik credentials.xml, config.xml i secrets z istniejących jenkins do nowej instancji. Po ponownym uruchomieniu jenkins wszystko działało dobrze.
Tutaj znajdziesz ładny opis: [link] (https: //support.cloudbees. com/hc/en-us/articles/115001634268-How-to-migrate-credentials-to-a-new-Jenkins-instance-) –
Gdzie Jenkins przechowuje klucz szyfrujący? Cierpiałem przez to od dłuższego czasu! :( Za każdym razem, gdy migrowałem Jenkinsa, musiałbym ponownie wprowadzić wszystkie dane uwierzytelniające! – Fadi
To powinna być zaakceptowana przyjęta odpowiedź: –