调用Run Pipeline REST API触发指定分支流水线的参数问题
问题根因
调用Azure DevOps Runs REST API触发YAML流水线时,服务默认从仓库配置的默认分支(当前环境为master分支)拉取流水线YAML定义文件,不会主动读取其他分支上的YAML文件,因此会抛出指定YAML文件不存在的校验异常。
正确传参方式
在触发流水线的POST请求体中,通过resources.repositories.self.refName字段传入YAML文件所在分支的完整引用,即可指定服务从对应分支拉取流水线定义并执行,无需将YAML文件同步到master分支。
请求示例
请求接口格式:
POST https://dev.azure.com/{组织名}/{项目名}/_apis/pipelines/{流水线ID}/runs?api-version=6.0
请求体示例:
{ "resources": { "repositories": { "self": { "refName": "refs/heads/你的目标feature分支完整名称" } } } }
注意事项
refName字段必须传入完整的Git引用格式,不能只传分支短名:例如分支为feature/pipeline-demo时,取值需要写为refs/heads/feature/pipeline-demo,直接传feature/pipeline-demo会导致参数不生效- 该参数同时会指定流水线默认的代码检出分支,如果需要在执行时单独指定代码拉取分支,可以在YAML的checkout步骤中显式配置ref参数覆盖默认值
- 如果需要在触发时传入自定义流水线变量,可以在请求体中与
resources同级添加variables字段配置,不会和分支参数冲突
内容的提问来源于stack exchange,提问作者Kushal Billakanti
相关产品推荐
相关产品推荐

