我正在尝试使用另一个变量更新 azure devops 中的管道变量。但我不确定如何做到这一点

Posted

技术标签:

【中文标题】我正在尝试使用另一个变量更新 azure devops 中的管道变量。但我不确定如何做到这一点【英文标题】:I'm trying to update a pipeline variable in azure devops with another variable. But I'm not sure how to do this exactly 【发布时间】:2022-01-11 02:49:45 【问题描述】:

我正在从 .json 文件中读取一个值并将其存储在一个变量中。然后将此值更新为管道变量。

$data = (Get-content -Path("C:/Desktop/file.json")).androidVersionName |Out-String

在上面的cmd中,我是从file.son中读取androidVersionName的数据,并将其转换为字符串数据类型

Write-Host "##vso[task.setVariable variable=version;]$data"

在上面的 cmd 中,我将管道变量 version 的值设置为 data 中可用的值。但是该值在 azure 的 powershell 任务中没有得到更新。请帮忙。我正在尝试将其用于发布管道 CD

尝试了 cmets 部分中建议的不同方法。不知道为什么它没有在管道变量部分更新。访问会有什么问题吗?或者如果我添加变量组并使用它会起作用吗?

【问题讨论】:

您是否阅读过 Microsoft 网站上的在脚本中设置变量? docs.microsoft.com/en-us/azure/devops/pipelines/process/…> 【参考方案1】:

你能检查一下这条线吗?

Write-Host "##vso[task.setVariable.variable=version;]data"

根据文档,您应该使用task.setVariable variable=version 而不是task.setVariable.variable=version:Set variables in scripts

例子:

Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic"
Write-Host "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value"

另外,检查你的Get-Content,你应该转换你的json字符串.....作为例子

$data = Get-content -Path "C:/Desktop/file.json" | ConvertFrom-Json
$version = $data.androidVersionName

Write-Host "##vso[task.setVariable variable=version]$version"

【讨论】:

是的,抱歉。我的错。也这样做了。还是不能更新 @Mitsuhaki,检查你的文件阅读,我已经更新了我的答案。 也试过这个@Shamrai Aleksander。仍然没有运气。访问会有什么问题吗?或者我可以使用变量组来解决这个问题吗? @Mitsuhaki,能分享一下C:/Desktop/file.json的内容吗? @Mitsuhaki,这不是 json 格式。你必须使用"androidVersionName" : "12.5"。在您的情况下,您将收到异常:ConvertFrom-Json : Invalid JSON primitive: "12.5"【参考方案2】:

echo "##vso[task.setvariable variable=myvar]Get-content -Path("C:/Desktop/file.json").androidVersionName |Out-String" --> 尝试了这段代码,它的工作方式就像魅力

【讨论】:

以上是关于我正在尝试使用另一个变量更新 azure devops 中的管道变量。但我不确定如何做到这一点的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法更新 Azure DevOps 管道中的变量组变量?

azure管道:访问机密变量

使用另一个项目中的 Azure Functions

我们如何将 azure 存储帐户表复制到另一个存储帐户?

如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure Logic App 向 DevOps 发送发布请求?)

Azure Cosmos DB:将集合克隆到另一个数据库