构建管道可用JSON无法设置Azure DevOps发布管道变量,求REST API方案
使用REST API设置Azure DevOps发布管道变量
当然可以!不过发布管道的REST API逻辑和构建管道确实有差异,我给你拆解两种常见场景,对应不同的实现方式:
场景1:触发新发布时临时传递变量(仅当前发布生效)
这和你之前用构建管道传递参数的场景最类似——不需要修改管道定义,只是在触发发布时临时传入变量值,仅对本次发布有效。
调用的API端点
POST https://dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=7.1-preview.8
请求体示例
{ "definitionId": 25, // 替换成你的发布管道定义ID "variables": { "var": { "value": "value", "isSecret": false // 如果是机密变量,这里设为true } } }
和构建管道的parameters字段不同,发布管道用variables对象来承载临时变量,每个变量需要用包含value和isSecret的子对象定义。
场景2:永久更新发布定义中的变量(修改管道配置)
如果要把变量值永久保存到发布管道的定义里,后续所有发布都会使用这个值,就需要用更新发布定义的API:
调用的API端点
PUT https://dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=7.1-preview.8
操作步骤与请求体提示
- 先通过
GET请求获取当前发布定义的完整内容(避免覆盖原有配置):GET https://dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=7.1-preview.8 - 从返回的JSON中找到
variables字段,修改或添加目标变量:{ "id": 25, "variables": { "existingVar": { "value": "updatedValue", "isSecret": false }, "newVar": { "value": "newValue", "isSecret": true } }, // 必须保留原有定义的其他字段(比如environments、artifacts等),不能只传variables ... } - 将修改后的完整JSON作为请求体,通过
PUT请求提交更新。
总结一下:如果只是单次发布临时用变量,用场景1的方式最直接;如果要长期修改管道的默认变量,就用场景2的方式。
内容的提问来源于stack exchange,提问作者mystack
相关产品推荐
相关产品推荐

