Microsoft.TeamFoundation.Build.WebApi 在排队之前将工件与构建相关联
Microsoft.TeamFoundation.Build.WebApi associate an artifact with a build before queuing it
我在 Azure Devops 中有两个管道。一个生成工件,另一个在其上运行测试。每当创建 PR 时,都会触发生成工件的管道。运行测试的管道只有在某些检查为真时才会触发。
我正在尝试以编程方式将第一个管道的工件 ID 与第二个管道相关联,但似乎找不到执行此操作的方法。 SDK 提供 BuildHttpClientBase.CreateArtifactAsync()
方法,但您必须已经有构建 ID 才能这样做。我不确定如何获取 ID,因为如果不首先设置此工件,使用 BuildHttpClient.QueueBuildAsync()
对构建进行排队将会失败。
首先,我认为你对BuildHttpClientBase.CreateArtifactAsync()
方法有误解。此方法应用于为构建创建工件,而不是将工件分配给另一个构建。 SDK提供的方法只能触发流水线,无法将一个构建流水线生成的工件关联到另一个构建流水线。
所以要实现这一点,我们需要设置第二个构建管道定义并将下载管道工件任务添加到第二个管道以下载第一个管道中生成的工件。
例如:
1.Publishing 第一个管道中的工件:
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: $(System.DefaultWorkingDirectory)/bin/WebApp
artifactName: WebApp
2.Downloading 第二条管道中的工件:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: WebApp
详情请参考本官方document.
我在 Azure Devops 中有两个管道。一个生成工件,另一个在其上运行测试。每当创建 PR 时,都会触发生成工件的管道。运行测试的管道只有在某些检查为真时才会触发。
我正在尝试以编程方式将第一个管道的工件 ID 与第二个管道相关联,但似乎找不到执行此操作的方法。 SDK 提供 BuildHttpClientBase.CreateArtifactAsync()
方法,但您必须已经有构建 ID 才能这样做。我不确定如何获取 ID,因为如果不首先设置此工件,使用 BuildHttpClient.QueueBuildAsync()
对构建进行排队将会失败。
首先,我认为你对BuildHttpClientBase.CreateArtifactAsync()
方法有误解。此方法应用于为构建创建工件,而不是将工件分配给另一个构建。 SDK提供的方法只能触发流水线,无法将一个构建流水线生成的工件关联到另一个构建流水线。
所以要实现这一点,我们需要设置第二个构建管道定义并将下载管道工件任务添加到第二个管道以下载第一个管道中生成的工件。
例如:
1.Publishing 第一个管道中的工件:
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: $(System.DefaultWorkingDirectory)/bin/WebApp
artifactName: WebApp
2.Downloading 第二条管道中的工件:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: WebApp
详情请参考本官方document.