![](/img/trans.png)
[英]Upload changes from AzureDevOps git repo to private TFS server using Build/Release pipeline task
[英]How to get the variable value in TFS/AzureDevOps from Build to Release Pipeline?
我在我的 TFS/AzureDevops 构建定义中定义了一个变量(比如time
),并在我的构建定义中使用 PowerShell 任务分配值。
喜欢,
类型:内联脚本。
内联脚本:
$date=$(Get-Date -Format g);
Write-Host "##vso[task.setvariable variable=time]$date"
你可以参考这个类似的例子
现在我想在我的发布定义管道中获取这个值。 我将此构建定义配置为对我的发布定义的持续部署。
如何使用其他变量在发布定义中获取time
值? 这可能吗?
这不是将变量从 Build 传递到 Release 的官方方式。 完成此操作的唯一方法是将值存储在文件中(json、xml、yaml、你有什么)并将其作为构建工件附加。 这样您就可以在发行版中读取文件并再次设置变量。
Martin Hinshelwood 似乎对这个问题感到非常沮丧, 并将该功能变成了 Azure DevOps Pipelines 的扩展。
包含的任务
- 变量保存任务- 在构建期间,您可以将变量保存到与其他构建资产一起存储的 json 文件中
- 变量加载任务- 在发布期间,您可以加载保存的变量并访问它们。
在变量组中使用变量怎么样?
我设法将变量组中的变量值设置为来自构建管道的变量,然后在发布管道中读取该变量。
为此,有必要:
$(variableName)
标识。假设它的值将存储在$(variableValue)
中)。$(variableGroupId)
中),这可以通过在 Azure DevOps 上导航到该变量组来完成。 然后,组 ID 将出现在 URL 中。$(personalAccessToken)
)CI 管道
- powershell: |
az pipelines variable-group variable update --group-id $(variableGroupId) --name $(variableName) --value $(variableValue)
displayName: 'Store the variable in a group variable'
env:
AZURE_DEVOPS_EXT_PAT: $(personalAccessToken)
然后,只需将变量组链接到发布管道,变量将被播种到该管道。
我发现了另一种解决方案,即使没有文本文件也可以使用 Azure REST API 获取构建参数。
在我的发布管道中,我首先执行此 Powershell 任务以提取任何构建管道参数:
function Get-ObjectMember {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True, ValueFromPipeline=$True)]
[PSCustomObject]$obj
)
$obj | Get-Member -MemberType NoteProperty | ForEach-Object {
$key = $_.Name
[PSCustomObject]@{Key = $key; Value = $obj."$key"}
}
}
$url = "https://dev.azure.com/$(account)/$(project)/_apis/build/builds/$(Build.BuildId)?api-version=6.0"
$build = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
$params = $build.templateParameters
if ($params) {
$params | Get-ObjectMember | foreach {
Write-Host $_.Key : $_.Value
echo "##vso[task.setvariable variable=$($_.Key);]$($_.Value)"
}
}
我的构建管道包含参数: RELEASE_VERSION
,在执行上述代码后,我可以在其他发布任务中使用$(RELEASE_VERSION)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.