gpt4 book ai didi

azure - 无法从变量组(库)更新变量

转载 作者:行者123 更新时间:2023-12-03 04:59:18 29 4
gpt4 key购买 nike

我正在尝试在 Azure Devops 中创建一个构建管道,它将更新变量组中的变量。

  • 所以我有我的变量组:
    enter image description here

  • 然后,在我的构建管道中,我链接变量组:
    enter image description here

  • 在我的 yaml 文件中声明变量:

variables:
- group: Validation
- name: BetaVersionClient
value: '0.0.0.0'
- name: BetaVersionServer
value: '0.0.0.0'
  • 后来在同一个文件中我设置了变量:
- task: VariableSetTask@1
displayName: 'Set variable'
inputs:
VariableName: BetaVersionClient
Value: '$(AssemblyInfo.AssemblyVersion)'

变量在作业持续时间内更新,但不在保存变量组的库中更新。

我在这里缺少什么?如何从 yaml 文件更新库变量?

最佳答案

第一部分是假设,但看起来 Azure DevOps 会为构建执行拍摄快照。这就是为什么您会在特定运行中看到此内容,但在一般情况下不会看到此内容。这可能是通过这种方式完成的,因为组可以根据构建定义共享,因此一个管道可以更改另一个管道。

如果这是您想要执行的操作,您可以使用 REST API 或 CLI。

对于 CLI,您有这个 command

az pipelines variable-group variable update --group-id
--name
[--detect {false, true}]
[--new-name]
[--org]
[--project]
[--prompt-value {false, true}]
[--secret {false, true}]
[--value]

我不记得代理上是否已安装 devops 扩展,因此您可能也对 installing it 感兴趣.

另一个选择是使用 REST API和这个端点:

PUT https://dev.azure.com/{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=5.1-preview.1

如何从管道调用 REST API 的示例可以在此处找到:How to send post build message in azure DevOps YAML pipeline?

编辑

这是更改变量组中变量的方法:


variables:
orgName: 'thecodemanual'
variableGroupId: 3

steps:
- pwsh: |

$url = "https://dev.azure.com/$(orgName)/$(System.TeamProject)/_apis/distributedtask/variablegroups/$(variableGroupId)?api-version=5.1-preview.1"
$variableGroup = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
Write-Host "Pipeline = $($variableGroup | ConvertTo-Json -Depth 100)"

$variableGroup.variables.name.value = "fromPipeline"

$json = $variableGroup | ConvertTo-Json -Depth 100

Invoke-RestMethod -Method PUT -Uri $url -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Body $json
name: initial
env:
SYSTEM_ACCESSTOKEN: $(system.accesstoken)

如果您收到此错误:

{"$id":"1","customProperties":{"Descriptor":"Microsoft.TeamFoundation.ServiceIdentity;a960b165-7bec-46ad-9fa3-a4a754989d4e:Build:4fa6b279-3db9-4cb0-aab8-e06c2ad550b2","IdentityDisplayName":"DevOps Manual Build Service (thecodemanual)","Token":"3","RequestedPermissions":2,"NamespaceId":"b7e84409-6553-448a-bbb2-af228e07cbeb"},"innerException":null,"message":"You do not have permissions to perform this operation on the variable group. A variable group Administrator should add you to the Administrator role.","typeName":"Microsoft.VisualStudio.Services.Security.AccessCheckException, Microsoft.VisualStudio.Services.WebApi","typeKey":"AccessCheckException","errorCode":0,"eventId":3000}

请检查此Having no permission for updating Variable Group via Azure DevOps REST API from running Pipeline

关于azure - 无法从变量组(库)更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799711/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com