Подтвердить что ты не робот

Как экспортировать учетные данные из одного экземпляра jenkins в другой?

Я использую плагин учетных данных в Jenkins для управления учетными данными для git и доступа к базе данных для моей команды. Я хотел бы скопировать учетные данные из одного экземпляра jenkins в другой, независимый экземпляр jenkins. Как я могу это сделать?

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ: TL; DR. Перейдите по ссылке, приведенной ниже в комментарии Филипа Стаховяка, это самый простой способ сделать это. Если это не работает, продолжайте читать.

Копирование $ HUDSON_HOME/credentials.xml не является решением, потому что Jenkins шифрует пароли, и они не могут быть расшифрованы другим экземпляром, если оба не имеют общего ключа.

Итак, либо вы используете одинаковые ключи подписи в обоих экземплярах Jenkins (Где ключ шифрования хранится в Jenkins?), Либо вы можете сделать следующее:

  1. Создайте того же пользователя/пароль, которым вы хотите поделиться, во втором экземпляре Jenkins, чтобы сгенерировать действительный пароль
  2. Что действительно важно, так это то, что идентификаторы пользователя в обоих 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?