Jenkins:在Powershell中访问全局密码

Jenkins: Access global passwords in powershell

我无法在Powershell中将jenkins全局密码作为环境变量进行访问。 我已经做了以下工作。 不知道我还缺少什么。

  • 已安装的凭证绑定插件,环境注入器插件,掩码密码插件,Hudson PowerShell插件
  • 在管理凭据中以gluser身份创建了全局密码条目
  • 在我的构建中,我进行了一个Powershell调用,其中定义了构建环境,用于将密码作为环境变量注入到构建中,并检查全局密码。
  • 以下所有内容均无法使我在Powershell脚本中引用全局密码
    $env:gluser
    $gluser
  • 他们似乎都不让我在Jenkins的powershell调用中访问全局密码。 有人可以帮忙吗?


    不要混淆EnvInject插件和Credentials Binding插件。两者的功能截然不同,但是两者都允许全局管理密码,但有所不同。

    EnvInject方式

    • 管理Jenkins->配置系统
    • 在全局密码下

    • 单击Add
    • 输入(环境变量的)名称和密码。
    • 作业->配置
    • 在建环境

    • 选中将密码作为环境变量注入到构建中。
    • 检查全局密码。
    • 检查"掩码密码"参数。

    凭证绑定方式

    • 管理Jenkins->管理凭据

    • 单击添加凭据(无域)。
    • 选择带有密码或机密文本的用户名。
    • 输入用户名和密码或密码。
    • 作业->配置
    • 在建环境

    • 选中使用秘密文本或文件。
    • 在绑定下,单击Add
    • 选择用户名和密码或秘密文本。
    • 输入要保留凭据值的变量名。
    • 选择特定凭证单选按钮。
    • 从下拉列表中选择您配置的凭据

    在您的Powershell中

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

    附录

    EnvInject与凭证绑定

    • EnvInject密码将在环境变量列表中显示为已加密。
    • EnvInject密码将在控制台输出中显示加星号(*****)。
    • EnvInject密码使用与全局配置相同的变量名,因此您必须记住该全局变量名。
      |
    • CB密码在环境变量列表中以纯文本显示。
    • CB密码不会在控制台输出中加注星号。
    • CB密码可以从下拉菜单中绑定到您想要在作业中使用的任何变量名,因此您不必记住该全局变量名。
      |
    • 凭证绑定实际上更多是用于投标凭证文件,例如证书和密钥,而不是密码值。

    密码和秘密文本的用户名。

    • 前者的格式为username:password
    • 后者只是secret

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

    1
    2
    $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本身设置。