Abh*_*rma 7 continuous-integration continuous-deployment azure-devops azure-pipelines
我正在尝试在 PowerShell 中设置 Azure 管道变量值。我winversion在 Azure 管道中创建了一个变量。现在,在 PowerShell 任务中,我想为winversion变量分配一些值。我的简单问题是如何在运行时更改 Azure PipeLine 变量的值?
Write-Host "Main value is $winversion"
$env:WINVERSION="abhinav";
Write-Host "Modified value is $env:WINVERSION"
Write-Host "Main value is $(winversion)"
Run Code Online (Sandbox Code Playgroud)
第一行打印:原始值为 123
第三行打印:修改值为 abhinav
第四行打印:123
我希望当我将 winversion 的值从“123”更改为“abhinav”时,它实际上将管道变量值更改为 abhinav。
我想通过 Powershell 更新这个变量。我正在使用一个 PowerShell 脚本调用 API 并尝试更新其变量,但发现页面未找到错误:-
param(
[string]$winVersion
)
$body = "{ 'definition' : { 'id' :85}
}"
$valueName="Winver"
$definitionId=85
$User=""
$Password=""
$base64authinfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $User, $Password)))
$Uri = "https://Muac.visualstudio.com/OSGCXE/_apis/release/releases?api-version=2.0"
$urlDef = "https://Muac.visualstudio.com/OSGCXE/_apis/release/definitions/" + $definitionId + "?api-version=2.0"
$definition = Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64authInfo)} -Method Get -Uri $urlDef
#Write-Host $definition
$definition.variables.$valueName.Value = "$winVersion"
$definitionJson = $definition | ConvertTo-Json -Depth 50 -Compress
#Write-Host (ConvertTo-Json $definition -Depth 100)
$update=Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64authInfo)} -Method Put -Uri $urlDef -Body $definitionJson -ContentType "application/json"
#Write-Host "$update"
#$buildresponse = Invoke-RestMethod -Method Post -ContentType application/json -Uri $Uri -Headers @{Authorization=("Basic {0}" -f $base64authinfo)} -Body $body
#write-Host $buildresponse.status
Run Code Online (Sandbox Code Playgroud)
如何从 PowerShell 设置 azure 管道变量
这里有点混乱,你$winversion在powershell脚本中使用了变量,但是变量是testvar在管道变量中设置的。
无论如何,无论我们像你一样直接覆盖管道变量值,还是使用脚本"##vso[task.setvariable variable=testvar;]testvalue"覆盖它,覆盖值仅适用于当前构建管道。当您使用$(winversion)获取值时,它仍然会从管道变量值中提取值。要获取当前值,您需要使用$env:WINVERSION.
另外,你说:
我希望当我将 winversion 的值从“123”更改为“abhinav”时,它实际上将管道变量值更改为 abhinav。
如果您的意思是要更改Web 门户上的管道变量值,则需要 REST API(定义 - 更新)来更新构建任务中构建管道定义变量的值。
有一个非常相似的线程,您可以查看答案以了解详细信息:
如何从发布任务修改 Azure DevOps 发布定义变量?
注意:将 API 更改为构建定义:
PUT https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=5.0
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
11777 次 |
| 最近记录: |