Jenkins:访问powershell中的全局密码

use*_*485 15 passwords powershell global jenkins

我无法在powershell中访问jenkins全局密码作为环境变量.我做了以下事情.不确定我还缺少什么.

  1. 已安装的凭据绑定插件,环境注入器插件,掩码密码插件,Hudson PowerShell插件
  2. 在管理凭据中创建全局密码条目作为gluser
  3. 在我的构建中,我有一个powershell调用,其中定义了构建环境,用于将构建密码作为环境变量注入并检查全局密码.
  4. 以下所有内容都不允许我在powershell脚本中引用全局密码
    $env:gluser
    $gluser

他们似乎都没有让我在Jenkins的powershell调用中访问全局密码.有人可以帮忙吗?

Sla*_*lav 30

不要混淆EnvInject插件Credentials Binding插件.这两者做了很多不同的事情,但两者都允许全局管理密码,但不同.

EnvInject方式

  • 管理Jenkins - > 配置系统
  • 全局密码下
    1. 点击Add.
    2. 输入名称(环境变量)和密码.
  • 工作 - > 配置
  • 构建环境下
    1. check 将构建密码作为环境变量注入.
    2. 检查全局密码.
    3. 检查掩码密码参数.

凭证绑定方式

  • 管理Jenkins - > 管理凭证
    1. 单击Add Credentials(不带域).
    2. 选择用户名密码密文.
    3. 输入用户名密码密码.
  • 工作 - > 配置
  • 构建环境下
    1. 选中使用秘密文本或文件.
    2. 在" 绑定"下,单击"确定" Add.
    3. 选择用户名和密码密文.
    4. 输入要保存凭据值的变量名称.
    5. 选择特定凭据单选按钮.
    6. 从下拉列表中选择已配置的凭据

在你的Powershell中

  • 像访问任何其他环境变量一样访问它们:环境变量名称
    $env:VAR_NAME
    在哪里VAR_NAME(即EnvInject方式的第2步,或Credentials Binding方式的第4步)

附录

EnvInject vs Credentials Binding

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

密码与秘密文本的用户名.

  • 前者以表格形式提供username:password.
  • 后者只是secret.


Wol*_*and 0

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

$deploymentdir = $env:VC_RES + "\azure"
. ".\src\Extensions\Setup\VirtoCommerce.PowerShell\deploy-tfs.ps1" -deployment $deploymentdir -solutiondir $env:WORKSPACE
Run Code Online (Sandbox Code Playgroud)

然后将 $deploymentdir 作为参数传递给 ps1,工作正常。

环境变量 VC_RES 在“管理 Jenkins”->全局属性下配置。“环境变量”旁边有一个复选框,我们在那里设置它们。WORKSPACE 变量由 jenkins 本身设置。