Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 一个构建管道能否将值作为参数发送到它在Azure DevOps中触发的下一个管道_Variables_Azure Devops_Azure Pipelines - Fatal编程技术网

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

Variables 一个构建管道能否将值作为参数发送到它在Azure DevOps中触发的下一个管道,variables,azure-devops,azure-pipelines,Variables,Azure Devops,Azure Pipelines,我有一个构建管道,比如a-在文件夹中存储一个文件(这个文件有一个在构建管道中设置的变量值)。此管道A触发另一个管道B,该管道使用发布工件任务将文件夹作为工件发布。但是文件夹名称是动态的,因为它是从管道A中的该文件中获取的。我需要在触发它的同时将带有该变量值的文件从管道A传递到管道B。在Azure DevOps中有没有任何方法可以做到这一点,而不使用yaml管道 我使用经典模式设置了一组复杂的管道,将它们全部转换为yaml需要很长时间,因此我想知道是否有解决方法。如果需要通过在管道B的触发器部分下

我有一个构建管道,比如a-在文件夹中存储一个文件(这个文件有一个在构建管道中设置的变量值)。此管道A触发另一个管道B,该管道使用发布工件任务将文件夹作为工件发布。但是文件夹名称是动态的,因为它是从管道A中的该文件中获取的。我需要在触发它的同时将带有该变量值的文件从管道A传递到管道B。在Azure DevOps中有没有任何方法可以做到这一点,而不使用yaml管道


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

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

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

比如:

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中变量的名称

有关更多信息,请参阅文档。

解决方法很少:

  • 创建一个变量组,在管道a中设置变量值,然后管道B使用该变量

  • 在管道A期间,使用新值更新管道B定义

  • 在管道A中,通过触发管道B,可以将变量值传递给管道B(在“Build Parameters”字段中执行)


  • 如何从A触发管道B?通过在管道B的触发器(构建完成)部分下添加管道A。Shayki的解决方案/解决方案是更好的方法。您尝试后的结果是什么?我所做的是,在管道B中创建一个变量。我尝试从管道a发送变量的值,使用REST API调用将此变量作为参数排入管道B的队列。是的,我支持这一点,我不认为你真的可以这样做,除了用一些变量强制触发另一个构建,或者从已启动的构建发送一个api请求以获取有关已完成构建的一些数据之外,为什么不使用诸如Azure logic apps之类的orchestrator?谢谢,我只想更新所有检查此问题的人,上面的解决方案就是我实现的,它也起了作用。我无法访问您提到的触发器生成任务,但我所做的是在管道B中创建一个变量。我尝试从管道a发送变量的值,方法是使用REST API调用将此变量作为参数排入管道B的队列。但是我被它的curl命令卡住了(由于某些原因,我无法发送请求正文中的parameters对象。它只接受生成定义。