我在Azure Devops上有一个管道,我正在尝试使用REST API进行程序化/无头运行:https ://docs.microsoft.com/zh-cn/rest/api/azure/devops/pipelines/runs/run% 20pipeline?view = azure-devops-rest-6.0
到目前为止,我可以进行身份验证并开始运行。我想将数据传递给文档建议variables
在请求正文中使用的此管道。我的请求正文:
{
"variables": {
"HELLO_WORLD": {
"isSecret": false,
"value": "HelloWorldValue"
}
}
}
我的管道YAML如下所示:
trigger: none
pr: none
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
KEY=$(HELLO_WORLD)
echo "Hello world key: " $KEY
但是,这给我一个错误消息“ HELLO_WORLD:找不到命令”。
我尝试将“ HELLO_WORLD”变量添加到管道中,并启用了“让用户在运行此管道时覆盖此值”设置。这导致该HELLO_WORLD
变量不再是未知的,而是卡在其初始值上,并且当我使用REST API触发运行时未设置
如何使用REST API将变量传递到管道?重要的是,仅针对特定的运行/构建设置变量值
我找到了另一个用于运行构建的API,但似乎您不能对其使用“个人访问令牌”身份验证,就像可以与管道api一起使用-仅OAuth2- https: //docs.microsoft.com/zh-cn/rest/ api / azure / devops / build / builds / queue?view = azure-devops-rest-6.0
您可以同时使用Runs API和Build Queue API来完成此任务,两者都可以与Personal Access Token一起使用。对于哪个更好/更好,请参阅以下问题:Azure Devops Builds-Queue与运行管道REST API之间的区别,但总而言之,Runs API将是更可靠的选择
POST https://dev.azure.com/{{organization}}/{{project}}/_apis/pipelines/{{PipelineId}}/runs?api-version=6.0-preview.1
您的正文将是类型application/json
(HTTP标头Content-Type
设置为application/json
),与下面类似,只需替换resources.repositories.self.refName
为适当的值即可
{
"resources": {
"repositories": {
"self": {
"refName": "refs/heads/main"
}
}
},
"variables": {
"HELLO_WORLD": {
"isSecret": false,
"value": "HelloWorldValue"
}
}
}
POST https://dev.azure.com/{{organization}}/{{project}}/_apis/build/builds?api-version=6.0
您的正文将是类型application/json
(HTTP标头Content-Type
设置为application/json
),与下面类似,只需替换definition.id
并sourcebranch
使用适当的值即可。还请注意参数部分的“字符串化”内容(它应该是json映射的字符串表示形式)
{
"parameters": "{\"HELLO_WORLD\":\"HelloWorldValue\"}",
"definition": {
"id": 1
},
"sourceBranch": "refs/heads/main"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句