问题描述
我在Azure Devops中有两个管道。一个生成工件,另一个生成工件。每当创建PR时,就会触发生成工件的管道。仅当某些检查为真时,才会触发运行测试的管道。
我正在尝试以编程方式将第一个管道中的工件ID与第二个管道相关联,但似乎没有找到实现此目标的方法。 SDK提供了BuildHttpClientBase.CreateArtifactAsync()
方法,但您必须已经具有一个构建ID。我不确定如何获取ID,因为使用BuildHttpClient.QueueBuildAsync()
对构建进行排队会在没有先设置此工件的情况下失败。
解决方法
首先,我认为您对BuildHttpClientBase.CreateArtifactAsync()
方法有误解。应该使用此方法为构建创建工件,而不是将工件分配给另一个构建。 SDK提供的方法只能触发管道,不能将一个构建管道生成的工件与另一构建管道相关联。
为此,我们需要设置第二个构建管道定义,并向第二个管道添加下载管道工件任务,以下载在第一个管道中生成的工件。
例如:
1。在第一个管道中发布工件:
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: $(System.DefaultWorkingDirectory)/bin/WebApp
artifactName: WebApp
2。在第二个管道中下载工件:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: WebApp
有关详细信息,请参阅此官方document。