如何在 Jenkins Job Builder 中使用"注入密码"?



我正在使用yaml文件来配置Jenkins作业,我遇到了功能inject-passwords(见这里)。但是,本文档既没有描述如何在 jenkins 环境中使用该变量,也没有描述"加密"密码的含义(如何加密?)。指向EnvInjectPlugin的链接也没有所需的信息。

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

上下文:

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

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

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

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

首先,您获取加密密码。

  1. 转到可以安全修改的 Jenkins 作业的配置部分。例如,您当前正在尝试设置的那个。
  2. 在"构建环境
  3. "部分中,单击"将密码作为环境变量注入构建"。
  4. 使用虚拟变量名称编写纯密码并保存配置。此步骤将加密后台的密码。
  5. 转到作业的"作业配置历史记录"选项卡,然后查看最新的 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 [********]

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

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

存储时,Jenkins 确保密码是加密的。据我了解,解密的目的只是为了在作业需要的地方作为变量传递 - 就像任何凭据一样。

有关EnvInject插件如何工作的一些附加信息在其他相关插件(如共享对象插件)的链接中提供

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

最新更新