我正在使用Jenkins中的凭证插件来管理我的团队构建的git和数据库访问的凭据。我想将凭证从一个jenkins实例复制到另一个独立的jenkins实例。我该怎么做呢?
更新:TL; DR在Filip Stachowiak的评论中,按照下面提供的链接,这是最简单的方法。万一它不适合你继续阅读。
复制$ HUDSON HOME / credentials.xml不是解决方案,因为Jenkins会对密码进行加密,除非两者共享一个公用密钥,否则这些密码不能被其他实例解密。
因此,要么在两个Jenkins实例(qazxsw poi)中使用相同的加密密钥,要么你可以做的是:
<id>c4855f57-5107-4b69-97fd-298e56a9977d</id>
我也面临同样的问题。对我有用的是我将credentials.xml,config.xml和secretts文件夹从现有的jenkins复制到新实例。 jenkins重新启动后事情很好。
这对我有用。
在Jenkins中创建一个获取凭据并将其写入输出的作业。如果Jenkins用****替换输出中的密码,只需先对其进行模糊处理(在每个字符之间添加一个空格,反转字符,base64编码等)
我使用Powershell作业对其进行了base64编码:
<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>
然后使用Powershell将base64字符串转换回常规字符串:
[convert]::ToBase64String([text.encoding]::Default.GetBytes($mysecret))
您是否尝试将$ JENKINS_HOME / users文件夹和$ JENKINS_HOME / credentials.xml文件复制到另一个Jenkins实例?