从 azure devops 管道更新变量组

Posted

技术标签:

【中文标题】从 azure devops 管道更新变量组【英文标题】:update variable group from azure devops pipeline 【发布时间】:2021-11-23 07:12:12 【问题描述】:

我正在尝试使用管道中的az pipelines cli 更新变量组中的变量,我已经创建了一个 PAT 并将其传递给管道它工作正常。但我使用默认值,例如$(System.AccessToken),它能够从变量组中列出变量,但无法更新变量组。 它的说法

错误:您无权在 变量组。变量组管理员应将您添加到 管理员角色。 ##[错误]脚本失败,退出代码:1

经过一番搜索,我发现我需要在变量组中添加 Project Collection Build Service (name) 作为管理员,然后重试。我已经添加了,但我仍然遇到同样的错误。有什么建议吗?

我使用的是经典管道,这是从管道中导出的任务。

steps
- task: AzureCLI@2
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: 'sc'
    scriptType: pscore
    scriptLocation: inlineScript
    inlineScript: |
     az extension add --name azure-devops
     az pipelines variable-group variable list --group-id id --org "orgname" --project "projectname"
     az pipelines variable-group variable update --group-id id --name apim-service-name --value $(str_tf_module_containername) --org "orgname" --project "projectname"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

【问题讨论】:

您在哪个身份下运行 az 命令?我可以看到您正在使用服务连接。您可以尝试添加az account show 并检查日志以查看帐户/身份是否具有变量组所需的管理员权限? 将项目集合构建服务添加为 管理员 帮助我克服了错误。这仍然是个问题吗? 是的,我不能使用 system.accesstoken,我必须使用我自己的 PAT 来完成这项工作。 System.Accesstoken 是为服务身份“项目集合构建服务(帐户)”生成的 PAT 令牌。此令牌有效期为 48 小时。 @threeleggedrabbit 请在下面发布对您有用的答案,以便对社区中的其他人也有帮助.. 【参考方案1】:

这很好用:

steps
- pwsh: |
     az extension add --name azure-devops
     az pipelines variable-group variable list --group-id id --org "orgname" --project "projectname"
     az pipelines variable-group variable update --group-id id --name apim-service-name --value $(str_tf_module_containername) --org "orgname" --project "projectname"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

但是你需要给Project Collection Build Service (account) 管理员权限来给变量组:

【讨论】:

以上是关于从 azure devops 管道更新变量组的主要内容,如果未能解决你的问题,请参考以下文章

使用调度程序和变量组运行 Azure DevOps CI 管道

Azure DevOps 发布管道的动态变量组

如何在 Azure DevOps 变量组中使用 SecureFile?

我正在尝试使用另一个变量更新 azure devops 中的管道变量。但我不确定如何做到这一点

更新 Azure DevOps 版本的变量组快照

Azure Devops:如何使用 if 语句设置组变量