我在Azure Devops上有一个管道,我正在尝试使用REST API以编程/无头模式运行它:https://learn.microsoft.com/en-us/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://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-6.0
"parameters": "{\"HELLO_WORLD\": \"HelloWorldValue\", \"ANOTHER_KEY\": \"ANOTHER_VALUE\"}"
。 - danielorn