简而言之,我正在尝试从构建管道执行PowerShell脚本时更新变量组(增加内部版本号,但这部分并不那么重要)。
根据this topic和Azure DevOps docs中的建议,我使用类似于以下代码:
getVertex(v,i,j) {
var vid = 3*(i*(this.div+1) + j);
v[0] = this.vbuffer[vid]; //should be this.vBuffer
v[1] = this.vbuffer[vid+1]; //should be this.vBuffer
v[2] = this.vbuffer[vid+2]; //should be this.vBuffer
}
setVertex(v,i,j) {
var vid = 3*(i*(this.div+1) + j);
this.vbuffer[vid] = v[0]; //should be this.vBuffer
this.vbuffer[vid+1] = v[1]; //should be this.vBuffer
this.vbuffer[vid+2] = v[2]; //should be this.vBuffer
}
除一件事外,一切正常。我似乎没有某种权限来更新此值,收到以下错误消息:
您没有权限对该变量执行此操作 组。变量组管理员应将您添加到 管理员角色。
但是:
有点奇怪,因为对我来说$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 1000)"
实际上应该属于从Azure内部调用的流程(管道执行流程),因此它也应该可以访问变量组。 (无论如何,我都不知道当前正在运行的管道的身份是什么,以及它的设置位置是什么。)
我可以理解,该过程是在一台机器上执行的(实际上,是在不同的系统上执行的,所以这很复杂,并不意味着执行Identity的管道会自动直接访问变量组),但是我找不到有关如何设置所有这些访问权限的文档。 (附件链接上的文章未提及访问权限。)
我尝试将任何(可能相关的)用户/组添加/设置到“组变量权限”(“变量组”部分的{$env:SYSTEM_ACCESSTOKEN
部分),但是REST API更新仍然不走运。
那么,关于设置当前执行构建管道标识的权限的任何提示吗?