最近项目有用到Azure DevOps
,虽然以前也有用过Github Actions
和AWS CodePipeline
,但都没实际去使用过RestAPI。
这回希望从Azure Functions
中直接去调用DevOps API
,因为DevOps的认证需要单独跟Microsoft Entra ID
关联才行,加上最轻松的PAT
方式在维护层面不方便,所以在此简单记录下通过Azure Functions Python 去做Managed ID方式的认证。
环境准备
- 为Azure Functions创建用户托管标识(Managed Identity)
- 在
Functions APP > 标识(ID) > 用户分配
中添加刚刚创建的用户托管标识 - 登录DevOps,在
组织设置(Organization Settings) > 用户
中添加创建的用户托管标识,并确保有足够的权限(Basic用户访问权限,另项目设置中也有权限设定需要注意) - 在Functions的
配置 > 应用程序设置
中添加Client ID
的环境变量,Client ID
可从用户托管标识的概述从复制
Functions调用DevOps
需要以下依赖包
azure-functions azure-identity azure-devops
获取Entra ID Access Token,scope填写默认scope固定值
from azure.identity import ManagedIdentityCredential scope = "499b84ac-1321-427f-aa17-267ca6975798/.default" credential = ManagedIdentityCredential(client_id=YOUR_CLIENT_ID) access_token = credential.get_token(scope)
创建连接
from azure.devops.connection import Connection from msrest.authentication import BasicTokenAuthentication creds = BasicTokenAuthentication({"access_token": access_token.token}) connection = Connection(base_url=f'https://dev.azure.com/{YOUR_ORGANIZATION}', creds=creds)
调用服务
pipeline_client = connection.clients.get_pipelines_client() run_params = { 'templateParameters': { 'KEY': 'VALUE' } } run = pipeline_client.run_pipeline(project="YOUR_PROJECT_NAME", pipeline_id="PIPELINE_ID", run_parameters=run_params)
phdmxhkrly
哈哈哈,写的太好了https://www.cscnn.com/
nubcddgxaf
叼茂SEO.bfbikes.com
xfuuxrysmh
不错不错,我喜欢看
k桑
嗨~请问大佬,文章缩略图默认使用第一张图,但背景图也被继承了和缩略图一样,如何背景图还是和主页背景图一样,而不同步缩略图呢?
k桑
嗨~请问大佬,文章缩略图默认使用第一张图,但背景图也被继承了和缩略图一样,如何背景图还是和主页背景图一样,而不同步缩略图呢?
k桑
嗨~请问大佬,文章缩略图默认使用第一张图,但背景图也被继承了和缩略图一样,如何背景图还是和主页背景图一样,而不同步缩略图呢?
k桑
嗨~请问大佬,文章缩略图默认使用第一张图,但背景图也被继承了和缩略图一样,如何背景图还是和主页背景图一样,而不同步缩略图呢?
jiyouzhan
这篇文章写得深入浅出,让我这个小白也看懂了!