如何通过Python运行Azure DevOps中已定义的流水线?
问题解答
该需求完全可以实现,核心是调用Azure DevOps官方提供的REST API触发流水线运行,具体操作步骤如下:
第一步:准备访问凭据
- 登录你的Azure DevOps网页端,进入「用户设置」-「个人访问令牌」,点击新建令牌
- 令牌权限按需勾选:如果是触发YAML构建流水线,勾选
Build (Read & execute);如果是触发经典发布流水线,额外勾选Release (Read, write, & execute) - 设置合理的有效期,生成后保存好令牌字符串,该字符串仅在生成时显示一次,丢失需要重新生成
第二步:准备本地环境
- 本地安装Python 3.7及以上版本,执行命令安装HTTP请求库:
pip install requests
第三步:获取流水线配置参数
你需要提前拿到3个必填参数:
- Azure DevOps组织名称:就是你访问DevOps时URL里的组织名,比如
https://dev.azure.com/xxx里的xxx就是组织名 - 项目名称:流水线所属的项目名
- 流水线ID:打开目标流水线的详情页,URL中
pipelineId=后的数字就是对应ID
第四步:编写Python触发脚本
直接使用如下示例代码,替换对应参数后运行即可:
import requests import base64 # 替换为你自己的配置 ORG_NAME = "你的组织名" PROJECT_NAME = "你的项目名" PIPELINE_ID = "你的流水线ID" PAT = "你刚才生成的PAT令牌" # 构造请求鉴权信息 authorization = str(base64.b64encode(bytes(':'+PAT, 'ascii')), 'ascii') headers = { 'Content-Type': 'application/json', 'Authorization': 'Basic '+ authorization } # 触发流水线的API URL url = f"https://dev.azure.com/{ORG_NAME}/{PROJECT_NAME}/_apis/pipelines/{PIPELINE_ID}/runs?api-version=7.1-preview.1" # 如果你的流水线需要传自定义参数,可在下方body的variables字段里添加 body = { "resources": { "repositories": { "self": { "refName": "refs/heads/main" # 替换为你要触发的分支名 } } }, # 可选:自定义参数示例 # "variables": { # "env": {"value": "test"}, # "version": {"value": "1.0.0"} # } } response = requests.post(url, headers=headers, json=body) if response.status_code == 200: print("流水线触发成功,运行ID:", response.json()["id"]) else: print("触发失败,错误信息:", response.text)
补充说明
- 脚本运行成功后,直接登录Azure DevOps对应流水线页面就能看到新生成的运行任务
- 不要将PAT硬编码到公开的代码仓库中,生产环境建议将PAT存入系统环境变量读取,避免凭据泄露
- 如果你的流水线有其他资源依赖(比如关联了其他仓库、构件),可以根据需求修改body内的resources字段配置
内容的提问来源于stack exchange,提问作者humanbeing
相关产品推荐
相关产品推荐

