当前,我们正在从XAML迁移到Azure Pipelines。为了防止相同的内部版本号,我们使用一个特殊变量来初始化第一个迁移的内部版本定义的内部版本号。首次构建后,该变量已过时,可以在构建内部删除。 如何在Powershell中执行此操作?
答案 0 :(得分:0)
如何在Powershell中执行此操作?
似乎您想通过powershell任务删除/删除不需要的构建管道变量(经典构建管道?),可以使用Definitions-Update rest api。
PUT https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=5.1
这是我的工作示例,用于通过内部版本的PowerShell任务删除变量:
$url = "$($env:SYSTEM_TEAMFOUNDATIONSERVERURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=5.1"
$response = Invoke-RestMethod -Uri $url -Method Get -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
# Remove the variable you don't like.
$response.variables.PSObject.Properties.Remove('InvalidVariable')
$json = @($response) | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
第1步::确保包含Powershell任务的作业允许脚本访问OAuth令牌,因为我的脚本使用OAuth令牌而不是PAT来调用rest api。 (单击代理作业名称=>其他选项)
第二步::找到您的管道页面并管理特定构建管道的安全性,允许 Edit Build Pipeline
用户ProjectName Build Service(OrgName)
。 (它不起作用,请尝试允许Project Collection Build Service
帐户的权限)
3。在Inline script
模式下使用普通的Powershell task在上面运行我的脚本。您只需修改变量名称即可。如果变量的名称为MyVar
,则$response.variables.PSObject.Properties.Remove('MyVar')
。
上面的脚本首先获取Definition,然后删除不需要的变量,最后使用Definitions-Update rest api更新构建管道定义。
运行PS任务之前:
运行PS任务后:
不需要的变量将被删除。