【问题标题】:How do I use a secret variable in a vsts release task?如何在 vsts 发布任务中使用秘密变量?
【发布时间】:2018-09-25 23:30:10
【问题描述】:

我在 vsts 中有一个发布定义,需要访问我定义为变量组中的秘密变量的密码。我已将该组链接到此版本定义,但是当我运行任务时,参数最终为空白。我需要做些什么来获取秘密变量的值吗?

使用密码的powershell任务的定义

链接变量组

错误输出:

2017-08-09T14:01:17.9262375Z ##[command].            'C:\agent_work\r1\a\$(AGENT.BUILDDIRECTORY)\RCV\deploys\common\Get-FromArtifactory.ps1' -repoUsername developer -repoPassword  -repoPath libs-snapshot-local
2017-08-09T14:01:18.8168538Z ##[error]C:\agent_work\r1\a\$(AGENT.BUILDDIRECTORY)\RCV\deploys\common\Get-FromArtifactory.ps1 : Missing an argument for parameter 'repoPassword'. Specify a parameter of type 'System.String' and try again.

已按要求添加更多信息。

这是我的 Get-FromArtifactory.ps1 的开始

[CmdletBinding()]
param (
    [Parameter(Mandatory)]
    [String]
    $repoUsername,

    [Parameter()]
    [String]
    $repoPassword,

    # Other params
)
#setup credentials object for arty access
$secPassword = $repoPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($repoUsername, $secPassword)

2017 年 8 月 15 日编辑 - 我已将其更新为使用 @Marina-MSFT 建议的引号,但它仍然只是传入空白。

修改了打印部分密码的脚本:

[CmdletBinding()]
param (
    [Parameter(Mandatory)]
    [String]
    $repoUsername,

    [Parameter()]
    [String]
    $repoPassword,

#other params
)
write-host "pword $repoPassword"
write-host "1st char: $($repoPassword[0])"

2017-08-15T09:23:00.8606081Z ##[command]. 'C:\agent_work\r1\a\RCV\deploys\common\Get-FromArtifactory.ps1' -repoUsername developer -repoPassword "" -repoPath libs-snapshot-local -artifactName ipo-deposit-accounts_2.11 -artifactPath uk/gov/ipo -artifactVersion 0.1-SNAPSHOT -downloadDir C:\agent_work\r1\a
2017-08-15T09:23:02.3606174Z pword     
2017-08-15T09:23:02.3606174Z 1st char: 

与单引号相同

2017-08-15T09:22:10.6573655Z ##[command]. 'C:\agent_work\r1\a\RCV\deploys\common\Get-FromArtifactory.ps1' -repoUsername developer -repoPassword '' -repoPath libs-snapshot-local -artifactName ipo-deposit-accounts_2.11 -artifactPath uk/gov/ipo -artifactVersion 0.1-SNAPSHOT -downloadDir C:\agent_work\r1\a
2017-08-15T09:22:11.2198723Z pword 
2017-08-15T09:22:11.3761178Z 1st char: 

【问题讨论】:

  • 变量组中的秘密变量可以很好地配合发布任务。您能否向Get-FromArtifactory.ps1 脚本展示您如何使用repoPassword 变量。另外请检查您是否在发布定义中命名了相同的变量repo1.password
  • @Marina-MSFT 我在上面添加了脚本详细信息。不确定发布定义中的变量 repo1.password 是什么意思 - 它在变量组中,这还不够吗?
  • 如果将$(repo1.password) 使用单引号作为-repoPassword '$(repo1.password)',结果会怎样?
  • @Marina-MSFT 我无法更改脚本的路径,因为它不在链接的工件内。并且在参数中对变量使用单引号并没有任何区别。
  • 可以直接使用$(repo1.password),加引号(如-repoPassword '$(repo1.password)'-repoPassword "$(repo1.password)"。但不允许处理($repoPassword | ConvertTo-SecureString -asPlainText -Force)安全变量。

标签: azure-devops


【解决方案1】:

我现在已经开始工作了,发生了 2 件事。

  1. 拥有 .以变​​量组中的秘密变量的名义 不起作用。我在单独的版本中重新创建了这个问题 定义/变量组。
  2. 即使在我删除了 .在我的 var 我仍然必须重新创建变量组才能使其工作。

关于 .在此处提出的变量名中:https://developercommunity.visualstudio.com/content/problem/94475/secret-variable-in-variable-not-group-not-availabl.html

【讨论】:

  • 我有完全相同的问题,这是一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2021-10-29
  • 2016-08-28
相关资源
最近更新 更多