建立Jenkins红外线代码和掩盖凭证

时间:2019-03-18 06:23:30

标签: jenkins

我正在使用基础代码原则构建Jenkins基础结构。作为此过程的一部分,我将预先填充Jenkins的certificate.xml配置,以包括一些全局凭据。

在基础架构启动期间,我使用Ansible填充了该xml文件。呈现后,文件将被推送到Jenkins主目录。 参见下面的示例:

<?xml version='1.1' encoding='UTF-8'?>
<com.cloudbees.plugins.credentials.SystemCredentialsProvider plugin="credentials@2.1.18">
  <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>{{ jenkins_test_user }}</id>
          <description>GenericAccount</description>
          <username>{{ jenkins_test_user }}</username>
          <password>{{ jenkins_test_user_pass }}</password>
        </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
      </java.util.concurrent.CopyOnWriteArrayList>
    </entry>
  </domainCredentialsMap>
</com.cloudbees.plugins.credentials.SystemCredentialsProvider>

但是,当我在文本编辑器中打开certificate.xml时,可以看到纯文本的密码。

我如何让詹金斯掩盖这些密码字段?

请注意,当我使用Jenkins控制台添加新的凭据时,新添加的凭据和所有以前填充的凭据(在Ansible中使用Ansible)都将被屏蔽。

2 个答案:

答案 0 :(得分:1)

您可以在xml文件中预设用户和密码哈希。您可能需要为特定用户分别创建一个xml配置。这就是我们所遵循的

答案 1 :(得分:0)

我设法通过在$JENKINS_HOME/init.groovy.d/目录中放置一个常规脚本来掩盖凭证。该脚本在Jenkins启动时创建了一个虚拟用户(就像我在控制台上所做的那样),因此,该用户将掩盖所有预先填充的凭据。脚本是

import com.cloudbees.plugins.credentials.impl.*;
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.*;

Credentials c = (Credentials) new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "user", "password")

SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), c)

但是,理想情况下,我想找到一种掩盖方式,与创建用户掩盖的方式相反。