gpt4 book ai didi

azure - 无法更改 Azure DevOps 发布管道任务中的服务连接

转载 作者:行者123 更新时间:2023-12-03 02:34:24 25 4
gpt4 key购买 nike

我在 Azure DevOps 中有一个只有一个阶段的发布管道。该阶段包含用于登录 AKS 集群的任务“Kubectl”。它需要一个服务连接作为参数。我的问题是我从上一个任务中获取了服务连接,该任务从“应用程序配置”中读取值。我从应用程序配置获得的值设置为环境变量,然后以这种方式传递该变量 echo "##vso[task.setvariable variable=SC]$AKS_SERVICECONNECTION"。所以变量是 SC,我在“Kubectl”-login 中使用 $(SC) 设置服务连接。 $AKS_SERVICECONNECTION 具有正确的值,我将其打印出来进行检查。

这行不通。即使环境变量 SC 现在具有正确的值,该值也未设置。因此,我使用 namespace 参数对其进行了测试,并且该参数有效,只是不适用于服务连接。我的问题和假设是服务连接必须在执行时设置,并且不能在后续任务将使用的前一个任务中设置?

最佳答案

Kubectl 任务的服务连接似乎是在任务执行之前的编译时检索的。我在发布管道变量部分创建了一个测试变量,并使用 echo "##vso[task.setvariable..> 更改了脚本任务中的测试变量值。我在任务日志中看到始终选择测试变量的原始值。

查看类似问题here .

但是,您可以使用 rest api作为解决方法。请参阅以下步骤:

1、在发布管道中添加第二阶段。将触发器选择为仅手动。将 Kubectl 任务和相关任务移至第二阶段(即下面屏幕截图中的 Kubectcl 阶段) enter image description here

2、在Variables部分定义变量ServiceCon。选择第二阶段的变量Scope(即Kubetcl)。检查在发布时可设置

enter image description here

3、添加调用更新的脚本任务release environment rest api在第一阶段(即 SetServiceCon 阶段)。请参阅下面的内联 powershell 脚本:变量 SC 被分配了上一个任务中的服务连接名称。

$url = "https://vsrm.dev.azure.com/Org/Project/_apis/Release/releases/$(Release.ReleaseId)/environments/$($(Release.EnvironmentId)+1)?api-version=6.1-preview.7"

#override the variable ServiceCon by referencing to variable $(SC) from your previous task
$body = @{
status= "inProgress";
variables= @{ ServiceCon= @{value= $(SC)}}
}

Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $(System.AccessToken)"} -Method patch -Body (ConvertTo-Json $body) -ContentType "application/json"

以上脚本将使用更新的服务连接名称触发第二阶段(即 kubetcl 阶段)

4、为了在上述步骤中可以访问 token $(System.AccessToken),您需要进入第一阶段的编辑页面并选中选项允许脚本访问 OAuth token 请参阅下面的屏幕截图。

enter image description here

5,您还需要为构建服务帐户允许管理部署编辑发布阶段权限。请参阅下面的屏幕截图。

在您的发布管道编辑页面中。单击右上角的 3 个点。然后选择安全

enter image description here

允许(ProjectName)构建服务(OrgName)管理部署编辑发布阶段权限帐户。

enter image description here

完成上述步骤后,当您的发布管道被触发时,将首先执行第一阶段,脚本任务将调用更新发布环境rest api。然后将使用更新的服务连接名称触发第二阶段

关于azure - 无法更改 Azure DevOps 发布管道任务中的服务连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63757820/

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