我正在尝试使用另一个变量更新 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 管道中的变量组变量?
如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure Logic App 向 DevOps 发送发布请求?)