我想通过REST API启动Azure Pipelines构建。有一个API用于排队构建,但是我找不到定义变量的方法。
当您需要在队列时间设置值时,被接受的答案并没有真正回答问题。解决方案实际上非常简单,您只需向json有效负载添加一个parameters
字段即可。内容应该是一个JSON字符串(不是直接的对象),其中包含参数。
例如:
{
"parameters": "{\"ReleaseNumber\": \"1.0.50\", \"AnotherParameter\": \"a value\"}",
"definition": {
"id": 2
}
}
编辑:该功能现已被明确记录为“可选的字符串化字典”。请参见https://www.visualstudio.com/fr-fr/docs/integrate/api/build/builds#queue-a-build
变量包含在定义中,您可以通过构建定义API更新构建定义以设置变量,然后排队构建。
以下是通过构建定义API获取的变量部分:
"variables": {
"system.debug": {
"value": "false",
"allowOverride": true
},
"BuildConfiguration": {
"value": "release",
"allowOverride": true
},
"BuildPlatform": {
"value": "any cpu",
"allowOverride": true
}
},
对于任何寻找此内容的人,我能够使用'templateParameters'使其在7.1版本中工作,它允许您发送一个Object
而不是String
。
POST
https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=7.1-preview.7
{
"sourceBranch":"Development",
"definition": {
"id": 5
}
"templateParameters": {
"PARAMETER1": "value1",
"parameter2": "valuex"
}
}
对于那些遇到问题的人(我就是),自接受答案以来使用的API有所不同(对我来说根本不起作用)。但是按照Cyprien Autexier的建议,我看了一下底层代码(Firefox开发工具),我注意到该门户网站不再使用Builds API。它使用了Pipelines API (https://learn.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-6.1)。使用这个API后,一切都运行得很顺畅。
看起来它可以在5.1版本中使用。您需要做的就是将传递给管道的变量定义为管道变量中的参数,并确保选中“可在队列时间设置”复选框。如果您在任何库中具有相同的变量,请确保删除这些引用,因为库变量被视为覆盖通过API设置的变量。
请注意,我使用的是Azure Devops Server 2019
导航到设置变量:编辑YAML管道-->单击“运行”按钮附近的3个点-->变量-->变量选项卡
希望对某人有所帮助