如何在 Jenkins job Builder 中使用 `inject-passwords`?

How to use `inject-passwords` in Jenkins job Builder?

我正在使用 yaml 文件来配置 jenkins 作业,我遇到了 inject-passwords 功能(参见 here). However, this documentation neither describes on how to use the variable within the jenkins environment, nor what 'encrypted' password means (How to encrypt?). The link leading to the EnvInjectPlugin 也没有所需的信息。

在哪里可以找到有用的 information/documentation?为什么这份文件如此不完整?

上下文:

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

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

在文档中,作者解释了插件 "Inject passwords to the build as environment variables",因此,正如 Alexandre Cartapanis 所指出的,可以通过名称 ($password_name) 作为环境变量进行访问。此信息在两个站点中传播:在 YAML 文档中,他们说 "Inject passwords to the build as environment variables. Requires the Jenkins EnvInject Plugin",EnvInject 插件页面指出 "Shared Objects plugin contributes to Envinject plugin that enables you to populate shared objects as environment variables"。在此 post 中,您可能会发现 尝试通过名称访问变量 - 这仅在构建时可用。

存储时,Jenkins makes sure passwords are encrypted。据我所知,将被解密只是为了在工作需要的地方作为变量传递——就像任何凭证一样。

有关 EnvInject 插件如何工作的一些附加信息在其他相关插件的链接中提供,例如 Shared Objects plugin

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

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

首先,您需要获取加密后的密码

  1. 转到可以安全修改的 Jenkins 作业的配置部分。例如您当前正在尝试设置的那个。
  2. 在 "Build Environment" 部分中,单击 "Inject passwords to the build as environment variables"。
  3. 用虚拟变量名写下你的普通密码并保存配置。此步骤将在后台加密密码。
  4. 转到作业的 "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。这些变量将包含 decrypted 密码,但是当您将它们打印出来时,jenkins 会注意到日志中有一个密码,jenkins 会对其进行混淆处理。

示例:

实际产量

My password is jddfdjh44y98dyghsdgdgfdg

Jenkins 日志输出

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

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