6

我正在使用yaml文件来配置 jenkins 作业,并且遇到了该功能inject-passwords(请参阅此处)。但是,该文档既没有描述如何在 jenkins 环境中使用变量,也没有描述“加密”密码的含义(如何加密?)。指向EnvInjectPlugin的链接也没有所需的信息。

我在哪里可以找到有用的信息/文档?为什么这个文档如此不完整?

语境:

我想以安全的方式将密码注入到詹金斯的工作中。在这个詹金斯工作中,我想使用这个密码作为登录在线服务的密码,以便测试该服务的几个方面。我需要测试脚本来获取该密码(环境变量?)才能登录服务。

参考文档中未回答的未解决问题:

  • Name of password此处)是环境变量名称的信息在哪里?
  • 如何加密密码的信息在哪里:(password (str) Encrypted password这里
4

2 回答 2

2

密码注入的文档不可用。因此,我在这里提供了一个完整的例子。

首先,你需要得到加密的密码。

  1. 转到可以安全修改的 Jenkins 作业的配置部分。例如,您当前尝试设置的那个。
  2. 在“构建环境”部分中,单击“将密码注入构建环境变量”。
  3. 使用虚拟变量名编写您的纯密码并保存配置。此步骤将在后台加密密码。
  4. 转到 Job 的“Job Config History”选项卡并查看最新的 RAW XML 配置文件。您将在 XML 中找到可以复制以供下一步使用的加密密码。

第二步,需要将密码放入yaml文件中,如下:

wrappers:
     - inject-passwords:
        global: true
        mask-password-params: true
        job-passwords:
            - name: TEST_USER_PASSWORD
              password: '{AQAAABAAAAAQvsFFVkOmzr5WzEhX8OWuK7mizr5xzEhX8lGo2AGMVw8=}'
            - name: TEST_USER_PASSWORD2
              password: '{AQAAABAAAAAQvsFFVkOmzr5xzEhX8lGo2AcPGMVw8b8SflGo2AcPGMVw8=}'

注意:密码用引号和大括号括起来。

第三步:在 jenkins 中可以使用环境变量TEST_USER_PASSWORDTEST_USER_PASSWORD2. 这些变量将包含解密后的密码,但是当您将它们打印出来时,jenkins 会注意到日志中有一个密码,jenkins 会对其进行混淆。

例子:

实际输出

My password is jddfdjh44y98dyghsdgdgfdg

詹金斯日志输出

My password is [********]

您可以逐步打印变量的内容以获取密码(以检查它是否有效)。

于 2019-05-03T13:07:52.110 回答
1

在文档中,作者解释说插件“将密码作为环境变量注入构建”,因此,正如 Alexandre Cartapanis 所指出的,可以通过名称($password_name)作为环境变量进行访问。此信息分布在两个站点中:在 YAML 文档中,他们说“将密码作为环境变量注入构建。需要 Jenkins EnvInject 插件”,EnvInject 插件页面指出“共享对象插件有助于 Envinject 插件,使您能够将共享对象填充为环境变量”。在这篇文章中,您可能会找到一个尝试通过变量名访问变量的示例——该变量仅在构建时可用。

存储时,Jenkins会确保密码是加密的。据我所知,将被解密只是为了在工作需要的地方作为变量传递 - 就像使用任何凭证一样。

关于 EnvInject 插件如何工作的一些附加信息在指向其他相关插件的链接上提供,例如共享对象插件

只要您只是将密码用作环境变量并且不记录其值,就可以安全地使用它。使用相同的方法或通过引用密码的 ID,例如:在 Jenkins 管道中访问 SCM 凭据。

于 2019-05-02T14:17:43.440 回答