AzureDevOpsRESTapi-使用变量运行管道

我在 Azure Devops 上有一个管道,我正在尝试使用 REST api 以编程方式/无头方式运行:https ://docs.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://docs.microsoft.com/en-us/rest/ api/azure/devops/build/builds/queue?view=azure-devops-rest-6.0

回答

您可以使用Runs API和 Build Queue API 来实现,两者都使用 Personal Access Tokens。对于哪个更好/首选,请参阅此问题:Azure Devops Builds - Queue 与运行管道 REST APIs 之间的差异,但简而言之,Runs API 将是更具未来证明的选项

选项 1:运行 API

POST https://dev.azure.com/{{organization}}/{{project}}/_apis/pipelines/{{PipelineId}}/runs?api-version=6.0-preview.1
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为适当的值

选项 2:构建 API

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映射的字符串表示)

{
    "resources": {
        "repositories": {
            "self": {
                "refName": "refs/heads/main"
            }
        }
    },
    "variables": {
        "HELLO_WORLD": {
            "isSecret": false,
            "value": "HelloWorldValue"
        }
    }
}


以上是AzureDevOpsRESTapi-使用变量运行管道的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>