Azure devops 在Azure devops中跨构建管道共享变量

Azure devops 在Azure devops中跨构建管道共享变量,azure-devops,azure-pipelines,azure-devops-rest-api,Azure Devops,Azure Pipelines,Azure Devops Rest Api,在我的azure devops项目中,我有两个构建管道,一个用于构建源代码,另一个用于 正在进行设置。 我希望编译代码的第一个管道生成的内部版本号传递到创建安装文件的下一个管道,因为我希望安装文件采用相同的版本,所以我添加了一个变量组,其中包含一个名为sharedBuildCounter的变量 但是,当我使用如下日志命令(在PowerShell任务中使用)在第一个管道中设置sharedBuildCounter内部版本号时: 写入主机“##vso[task.setvariable=variable

在我的azure devops项目中,我有两个构建管道,一个用于构建源代码,另一个用于 正在进行设置。 我希望编译代码的第一个管道生成的内部版本号传递到创建安装文件的下一个管道,因为我希望安装文件采用相同的版本,所以我添加了一个变量组,其中包含一个名为sharedBuildCounter的变量

但是,当我使用如下日志命令(在PowerShell任务中使用)在第一个管道中设置sharedBuildCounter内部版本号时:

写入主机“##vso[task.setvariable=variable_name;]new_value”

该变量确实获取了新值,我可以使用另一个PowerShell任务输出新值,只需一行:

写入主机$(SharedBuildCounter)

当我运行构建设置的下一个管道时,我发现sharedBuildCounter被重新设置为默认的空值


注意:我发现一些线程建议使用API rest调用来更改变量值,但在使用管道变量(不是变量组)的情况下,它似乎没有包含特定的管道名称。

变量组将有助于在构建和发布管道之间共享静态值

您需要的是一种将变量从一个管道传递到另一个管道的方法。我恐怕要说的是,这并不是官方的做法

作为一种解决方法,您可以更新变量组中变量的值。有多种方法可以处理此问题,Rest API、powershell和第三方扩展。具体方法请参考此问题的答案:

如果要获取管道中变量的值。因为您使用了日志命令来更新该变量


您需要使用获取特定构建日志以获取相关信息

变量组将有助于在构建和发布管道之间共享静态值。你的意思是只能在UI中手动更改变量组吗?@OmarBousbia不,这不是我的意思。对不起,没有说得更清楚。不能使用日志记录命令task.setvariable更改变量组中的变量(日志记录命令只能针对特定运行进行更改)。它不是动态的。换句话说,即使您更改了变量值,也不会影响变量组中的原始变量值。您需要使用RESTAPI直接更新变量组,这意味着与特定的构建/发布管道无关。希望这更清楚。至于如何使用Rest API更新变量组,请看这个问题:谢谢@Patricklu msft调用Rest API是解决方案,但是对于变量组id有没有办法得到它,因为我用一个新创建的项目和管道测试了rest调用,该项目和管道只有一个变量组,所以我在url中将变量组id设置为1?嗨,Omar,您可以通过使用这个rest api--,获得变量组id。您将看到所有变量组信息,如组名、ID、变量。。在项目中,从JSON响应