一个构建管道是否可以将值作为参数发送到它在 Azure DevOps 中触发的下一个管道

问题描述 投票:0回答:3

我有一个构建管道,假设 A - 在文件夹中存储一个文件(该文件具有在该构建管道中设置的变量值)。此管道 A 触发另一个管道 B,该管道 B 使用发布工件任务将该文件夹发布为工件。但文件夹名称是动态的,因为它是从管道 A 中的该文件中获取的。我需要在触发它时将具有该变量值的文件从管道 A 传递到管道 B。有没有办法在 Azure DevOps 中执行此操作,而不使用 yaml 管道?

我有一组使用经典模式设置的复杂管道,将它们全部转换为 yaml 需要很长时间,所以想知道是否有任何解决办法。

variables azure-devops azure-pipelines
3个回答
5
投票

有几个解决方法:

  1. 创建一个变量组,并在Pipeline A期间使用Rest API设置变量值,然后Pipeline B使用该变量。

  2. 在管道 A 期间,使用 Rest API 使用新值更新管道 B 定义。

  3. 在管道A中使用触发构建任务触发管道B,您可以将变量值传递给管道B(您可以在“构建参数”字段中执行此操作)。


3
投票

如果您需要通过在管道 B 的触发器部分下添加管道 A 来触发构建,我认为没有一种干净的方法可以做到这一点。

考虑使用 REST API 在管道 A 完成时触发管道 B。这样,您就可以将“文件路径”作为管道 B 上的变量并将其传递到

parameters
集合中。

类似:

POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?ignoreWarnings={ignoreWarnings}&checkInTicket={checkInTicket}&sourceBuildId={sourceBuildId}&api-version=5.0

{
    "definition": {
        "id": 1234
    },
    "parameters": "{\"fileName\":\"yourfilename\"}"
}
  • filePath 将是管道 B 中变量的名称

查看Builds - Queue文档以获取更多信息。


0
投票

除了 Charlie 对 DevOps API 7.1 版的回答之外,您还应该使用 此端点

POST https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=7.1-preview.1

{
    "templateParameters": {
        "yourParameterName": ""object:\r\n  'example':\r\n    in:\r\n    - yaml""
    }
}

要进行身份验证,您可以使用带有任何用户名字符串和PAT 令牌作为密码的基本身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.