Я использую плагин учетных данных в Jenkins для управления учетными данными для git и доступа к базе данных для моей команды. Я хотел бы скопировать учетные данные из одного экземпляра jenkins в другой, независимый экземпляр jenkins. Как я могу это сделать?
Как экспортировать учетные данные из одного экземпляра jenkins в другой?
Ответ 1
ОБНОВЛЕНИЕ: TL; DR. Перейдите по ссылке, приведенной ниже в комментарии Филипа Стаховяка, это самый простой способ сделать это. Если это не работает, продолжайте читать.
Копирование $ HUDSON_HOME/credentials.xml не является решением, потому что Jenkins шифрует пароли, и они не могут быть расшифрованы другим экземпляром, если оба не имеют общего ключа.
Итак, либо вы используете одинаковые ключи подписи в обоих экземплярах Jenkins (Где ключ шифрования хранится в Jenkins?), Либо вы можете сделать следующее:
- Создайте того же пользователя/пароль, которым вы хотите поделиться, во втором экземпляре Jenkins, чтобы сгенерировать действительный пароль
-
Что действительно важно, так это то, что идентификаторы пользователя в обоих credentials.xml совпадают. Для этого (см. Пример credentials.xml ниже) для пользователя: Jenkins идентификатор
<id>c4855f57-5107-4b69-97fd-298e56a9977d</id>
должен быть одинаковым в обоих 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>
Ответ 2
У меня тоже была проблема. Что для меня работало, я скопировал credentials.xml, config.xml и папку секретов из существующих jenkins в новый экземпляр. После перезагрузки дженкинсов все отлично работало.
Ответ 3
Это то, что сработало для меня.
Создайте задание в Jenkins, которое берет учетные данные и записывает их в вывод. Если Дженкинс заменит пароль в выводе на ****, просто сначала запутайте его (добавьте пробел между каждым символом, поменяйте местами символы, закодируйте Base64 и т.д.)
Я использовал задание Powershell для кодирования base64:
[convert]::ToBase64String([text.encoding]::Default.GetBytes($mysecret))
А затем использовал Powershell для преобразования строки base64 обратно в обычную строку:
[text.encoding]::Default.GetString([convert]::FromBase64String("bXlzZWNyZXQ="))
Ответ 4
Вы пытались скопировать папку $JENKINS_HOME/users и файл $JENKINS_HOME/credentials.xml в другой экземпляр Jenkins?