【发布时间】:2018-11-27 00:53:50
【问题描述】:
在 VSTS CI/CD 中,我在 CI 的 Powershell 任务中设置了一些变量的值。 在 CD 期间,我想访问该变量的值来做某事,比如说 echo。
这可能吗?如果是这样,怎么做?
【问题讨论】:
标签: azure-devops azure-pipelines azure-pipelines-release-pipeline
在 VSTS CI/CD 中,我在 CI 的 Powershell 任务中设置了一些变量的值。 在 CD 期间,我想访问该变量的值来做某事,比如说 echo。
这可能吗?如果是这样,怎么做?
【问题讨论】:
标签: azure-devops azure-pipelines azure-pipelines-release-pipeline
您可以将其写入 json/xml 文件,并将该文件包含在构建定义的已发布工件中。然后在发布定义中通过 PowerShell 读入该文件。
ConvertTo-Json | Out-File "file.json"
Get-Content "file.json" | ConvertFrom-Json
【讨论】:
对于 VSTS 本身,它不能持久化从构建到发布的变量。
一种解决方法是将变量的值存储在变量组中并将变量组链接到您的发布定义中。详细步骤如下:
在构建过程中,您可以Add a variable group 名称为group-$(Build.BuildId),并将您要传输的变量存储在变量组中。
发布时可以先get variable groups,过滤变量group-$(Build.BuildId)下的变量。和delete the group group 在发布结束时。
此外,如果为您的发布定义构建工件类型,您还可以将变量值存储在文件中,然后将文件作为构建工件发布(如 Calidus 所说)。
【讨论】:
查看 Azure DevOps 扩展 Variable Tools for Azure DevOps Services。
在“构建管道”中,您可以使用“保存变量”创建 JSON 文件。此文件需要作为工件或与现有工件一起发布。
在“发布管道”中,您可以使用 JSON 文件中的“加载变量”恢复变量。
【讨论】: