我正在遵循本指南https://learn.microsoft.com/en-us/azure/devops/repos/git/create-pr-status-server-with-azure-functions?view=azure-devops创建自定义分支策略。文章的要点是:当创建或更新 ADO PR 时,会发生以下情况:
Azure 函数使用 个人访问令牌 通过 ADO 进行身份验证以发布自定义状态。我不喜欢这种方法的两件事:
因此,我想知道是否有一种方法可以直接在 ADO 中使用 Azure Functions 托管身份/服务主体:向托管身份授予 ADO 权限,并使用 Azure AD 令牌在 ADO API 中对用户进行身份验证。
我知道您可以设置 ADO 组织来使用 Azure AD 用户。这就是我的组织目前的设置方式: 显示所有“活动”用户,但我没有看到任何托管身份/服务主体。看起来只有用户与 ADO 同步。
使用Python,你可以做这样的事情:
from azure.identity import DefaultAzureCredential
from msrest.authentication import BasicAuthentication
from azure.devops.connection import Connection
credentials = DefaultAzureCredential()
ADO_APP_CLIENT_ID = "499b84ac-1321-427f-aa17-267ca6975798/.default"
accessToken = credentials.get_token(ADO_APP_CLIENT_ID)
auth = BasicAuthentication("", accessToken.token)
azure_devops_connection = Connection(base_url="<ado org url>", creds=auth)
... do whatever you want
azure_devops_client = azure_devops_connection.clients.get_git_client()
使用 DefaultAzureCredential,您可以使用托管身份、服务原理、az cli 等进行连接,请参阅 docs 了解可用的环境变量配置。