簡體   English   中英

TFS版本管理中的自定義變量

[英]Custom variables in TFS Release Management

我正在使用TFS 2017.1構建和發布功能。 在我的發布定義中,我有幾個發布變量,需要在PowerShell任務中引用(在遠程計算機上執行)。 到目前為止,我已經嘗試了以下選項,但無法使其正常工作。

添加了Execute PowerShell任務以將發布變量存儲到環境變量中:

$releaseVaraiables = Get-ChildItem Env: | Where-Object { $_.Name -like "ACL_*" } 
Write-Host "##vso[task.setvariable variable=aclVariables]$releaseVaraiables"

添加了在遠程計算機上執行Execute PowerShell任務:

在這里,我無法讀取環境變量(也許因為這是遠程計算機任務?)

Write-Verbose "problem reading $env:aclVariables" -Verbose

然后我嘗試將環境變量作為參數傳遞,但是那也不起作用

param
(
    $RbacAccessTokenParams
)

$RbacAccessTokenParams.GetEnumerator() | % {$_.Name}
$RbacAccessTokenParams | % {
    Write-Verbose "variable is $_" -Verbose
    Write-Verbose "name is $_.Name" -Verbose
    Write-Verbose "value is $_.Value" -Verbose
}

這就是我作為論點傳遞的方式

-RbacAccessTokenParams $(aclVariables)

我在這里想念的是什么?

非秘密變量已經存儲為環境變量; 您無需執行任何特殊操作即可訪問它們。 您可以使用$ENV:VariableName訪問它們。 下划線將替換為下划線。 所以Foo.Bar將是$env:FOO_BAR

機密變量應傳遞到需要它們的腳本中。

但是,這僅適用於代理 如果您使用“ PowerShell On Target Machines上運行PowerShell On Target Machines任務來運行腳本,則需要將變量作為參數傳遞給腳本。 除非您選擇使用部署組,否則無法解決此問題。

或者,更好的是,遵循配置即編碼的約定,並將特定於應用程序的值存儲在腳本讀取的源代碼控制的配置文件中,以使您不會與部署流程平台緊密耦合。

我已經使用TFS 2017.3.1在我這邊測試了您的方案,並且在將環境變量作為參數傳遞時可以使用。 您可以先升級TFS,然后重試。 附上我的步驟供您參考:

1。 在此處輸入圖片說明

2。 在此處輸入圖片說明

3。

在此處輸入圖片說明

    4。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM