Jenkins:在PowerShell中访问全局密码

20

我在使用 Powershell 时遇到了访问 Jenkins 全局密码作为环境变量的问题。我已经完成了以下步骤,不确定还有什么遗漏。

  1. 安装了 Credentials Binding 插件、Environment Injector 插件、Mask Passwords 插件和 Hudson PowerShell 插件
  2. 在 "管理凭据" 中创建了一个全局密码条目,名称为 gluser
  3. 在我的构建中,我使用 Powershell 调用,并定义了构建环境以将密码注入到构建中作为环境变量,并检查全局密码。
  4. 尝试下列方法均无法在 Powershell 脚本中引用全局密码:
    $env:gluser
    $gluser

以上方式似乎都不能让我从 Jenkins 中的 Powershell 调用中访问全局密码。请帮忙解决此问题,谢谢。

2个回答

41

请不要混淆EnvInject插件Credentials Binding插件。两者功能不同,但允许全局管理密码,但方式不同。

EnvInject方式

  • 管理Jenkins -> 配置系统
  • 全局密码
    1. 单击添加
    2. 输入名称(环境变量的名称)和密码。
  • 任务 -> 配置
  • 构建环境
    1. 勾选将密码注入构建作为环境变量
    2. 勾选全局密码
    3. 勾选掩盖密码参数

Credentials Binding方式

  • 管理Jenkins -> 管理凭据
    1. 单击添加凭据(不带域名)。
    2. 选择用户名和密码秘密文本
    3. 输入用户名密码秘密
  • 任务 -> 配置
  • 构建环境
    1. 勾选使用秘密文本(s)或文件(s)
    2. 绑定下,单击添加
    3. 选择用户名和密码秘密文本
    4. 输入要保存凭据值的变量名称。
    5. 选择特定凭据单选按钮。
  • 从下拉列表中选择配置的凭据
  • 在您的PowerShell中

    • 可以像访问其他环境变量一样访问它们:
      $env:VAR_NAME
      其中VAR_NAME是环境变量名称(即EnvInject方式的步骤2或Credentials Binding方式的步骤4)

    附录

    EnvInject与Credentials Binding

    • EnvInject密码会以加密形式显示在环境变量列表中。
    • EnvInject密码会在控制台输出中显示为星号(*****)。
    • EnvInject密码使用与全局配置相同的变量名,因此您必须记住全局变量名。
      |
    • CB密码在环境变量列表中以明文形式显示。
    • CB密码在控制台输出中不带星号。
    • CB密码可以绑定到作业中任何您想要的变量名称,因此您不必记住全局变量名称。
      |
    • Credentials Binding实际上更适用于绑定凭据文件,如证书和密钥,而不是密码值。

    用户名与密码 vs Secret Text。

    • 前者以username:password的形式提供。
    • 后者只是secret

    0

    在我们的构建中,我们以以下方式使用它(实际代码):

    $deploymentdir = $env:VC_RES + "\azure"
    . ".\src\Extensions\Setup\VirtoCommerce.PowerShell\deploy-tfs.ps1" -deployment $deploymentdir -solutiondir $env:WORKSPACE
    

    然后将$deploymentdir作为参数传递给ps1,运行良好。

    环境变量VC_RES在“管理Jenkins” ->全局属性下进行配置。在“环境变量”旁边有一个复选框,我们在其中设置这些变量。WORKSPACE变量由Jenkins自己设置。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接