作为部署脚本的一部分,我想为给定的azure devops项目自动创建服务连接。我调查了Terraform,但尚不支持。 ARM模板也没有任何服务连接。
https://docs.microsoft.com/en-us/azure/devops/cli/service_endpoint?view=azure-devops
此链接中有一些有关如何操作的注释。我已经按照链接所述捕获了发布请求正文,并将其存储在 config.json 文件
中我正在运行以下命令来创建服务原理。
az devops service-endpoint create --service-endpoint-configuration config.json --organization "https://dev.azure.com/ojaskale" --project "Test Project"
这确实创建了服务连接,但是此连接不起作用。如果我从控制台创建服务原理,它将按预期工作。
我收到以下错误消息。
管道无效。作业构建:步骤Docker输入 containerRegistry引用服务连接 找不到 acrserviceconnectiontest 。服务 连接不存在或尚未被授权使用。对于 授权详细信息,请参阅https://aka.ms/yamlauthz。
我可以在build.yml中看到 acrserviceconnectiontest 。
Azure准则说,我需要复制发帖请求正文并填写所需的详细信息。帖子正文默认情况下没有 servicePrincipalId 。我做了一些研究,发现自己需要创建一个角色并为其分配角色。这里提供了两个脚本,我正在关注这些脚本。
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal
一旦创建了服务原理,我就会得到以下输出。
服务主体ID:xxxxxxxxxxxxxxxxxxxxxxxxxx
服务主体密码:xxxxxxxxxxxxxxxxxxxxxxxxxx
我已经尝试了两个方法来代替 servicePrincipalId ,但是它们似乎都不起作用。
工作服务连接的服务原理ID与我使用cli创建的服务原理ID不同。
我认为我已经非常接近使其工作了,因为我可以看到正在创建服务连接,但是它不起作用。有人可以指出我所缺少或做错的事情吗?谢谢。
答案 0 :(得分:0)
对于您引用的服务连接,您应该使用config.json中name
属性下的任何内容