一尘不染

如何将凭证从一个詹金斯实例导出到另一个?

jenkins

我正在使用Jenkins中的凭据插件来管理团队构建的git和数据库访问凭据。我想将凭证从一个jenkins实例复制到另一个独立的jenkins实例。我将如何去做?


阅读 374

收藏
2020-07-25

共1个答案

一尘不染

更新: TL; DR 按照 Filip Stachowiak
的评论在下面提供的链接,这是最简单的方法。如果它对您不起作用,请继续阅读。 __

复制$ HUDSON_HOME /credentials.xml不是解决方案,因为Jenkins会对密码进行加密,除非另外两个实例共享一个公用密钥,否则它们不能被另一个实例解密。

因此,您可以在两个Jenkins实例中使用相同的加密密钥(Jenkins中存储的加密密钥在哪里?),或者可以执行以下操作:

  1. 在第二个Jenkins实例中创建您需要共享的相同用户名/密码,以便生成有效密码
  2. 真正重要的是,两个credit.xml中的用户标识是相同的。为此,用户(请参阅下面的凭据.xml示例): 詹金斯<id>c4855f57-5107-4b69-97fd-298e56a9977d</id>,两个凭据 .xml中 的标识符 必须相同
        <com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@1.22">
      <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>
2020-07-25