没有权限通过运行Pipeline通过Azure DevOps REST API更新变量组

时间:2018-10-25 09:37:59

标签: azure-devops

简而言之,我正在尝试从构建管道执行PowerShell脚本时更新变量组(增加内部版本号,但这部分并不那么重要)。

根据this topicAzure 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
}

除一件事外,一切正常。我似乎没有某种权限来更新此值,收到以下错误消息:

  

您没有权限对该变量执行此操作   组。变量组管理员应将您添加到   管理员角色。

但是:

  1. 有点奇怪,因为对我来说$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内部调用的流程(管道执​​行流程),因此它也应该可以访问变量组。 (无论如何,我都不知道当前正在运行的管道的身份是什么,以及它的设置位置是什么。)

  2. 我可以理解,该过程是在一台机器上执行的(实际上,是在不同的系统上执行的,所以这很复杂,并不意味着执行Identity的管道会自动直接访问变量组),但是我找不到有关如何设置所有这些访问权限的文档。 (附件链接上的文章未提及访问权限。)

我尝试将任何(可能相关的)用户/组添加/设置到“组变量权限”(“变量组”部分的{$env:SYSTEM_ACCESSTOKEN部分),但是REST API更新仍然不走运。 enter image description here

那么,关于设置当前执行构建管道标识的权限的任何提示吗?

1 个答案:

答案 0 :(得分:1)

OAuth访问令牌是使用“ Project Collection Build Service(xxx)”帐户创建的,而不是您的帐户创建的。

因此,您只需要为变量组添加“ Project Collection Build Service(xxx)”帐户作为Administrator角色。

enter image description here