从另一个 Azure 流水线下载流水线工件

14

我非常陌生这个流程,正在尝试构建一种自动化方式来生成我的应用程序的 .msi 安装程序文件。

我有2个项目,一个是.Net Core,另一个是Python,所以我创建了 2个流程管道。 .Net Core 流程将构建并保存文件到一个位置,Python 流程使用该位置的文件作为其依赖项,并构建一个新的 .msi 文件,流程的最后一部分 newsetup.py 构建 .msi 文件,我将传递 .Net Core 流程输出文件的位置给它。

我得到的错误是 Artifact dropcli was not found for build 150.

.Net Core 流程脚本:

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(Build.ArtifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    
- task: PublishPipelineArtifact@1
  inputs:
   targetPath: '$(Pipeline.Workspace)'
   artifact: 'dropcli'
   publishLocation: 'pipeline'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

Python pipeline脚本:

- task: DownloadPipelineArtifact@2
  inputs:
    buildType: 'current'
    artifactName: 'dropcli'
    targetPath: '$(Pipeline.Workspace)'

- task: PythonScript@0
  inputs:
    scriptSource: 'filePath'
    scriptPath: 'src/python/newsetup.py'
    arguments: 'bdist_msi $(Pipeline.Workspace)'

如果我在某个地方指定了构建号,那么当新的流水线创建时,这会成为一个问题吗?还是这是一个限制?


每个流水线都应该使用自己的 $(Pipeline.Workspace),因此您需要使用共享文件夹,例如 $(System.DefaultWorkingDirectory) 或其他任何东西来发布和下载工件。同时,请将构建编号添加到您的工件名称中。 - Juanma Feliu
1个回答

23
在您的DownloadPipelineArtifact@2任务中,buildType的值为current。这意味着您正在当前运行中下载该工件。您应该将buildType设置为specific。以下是一个示例,用于从特定的流水线下载最新的工件:
- task: DownloadPipelineArtifact@2
  inputs:
    buildType: 'specific'
    project: '{project id}'
    definition: '{pipeline id}'
    buildVersionToDownload: 'latest'
    artifactName: 'dropcli'
    targetPath: '$(Pipeline.Workspace)'

你可以点击任务顶部的“设置”按钮,它会帮助你更轻松地完成任务。

enter image description here

enter image description here

点击下载管道工件任务以获取有关此任务参数的详细信息。

如果我在某个地方指定了构建编号,那么当创建新的管道时会有问题吗?还是这是一个限制?

您不需要指定构建编号,您需要指定的是管道定义 ID。您可以下载管道的最新工件,也可以下载特定构建的工件。


1
什么是一个项目,这个存储库名称对我无效。 - Mb175
在运行DownloadPipelineArtifact@2任务之后,是否可以将存储库中的特定文件夹复制到另一个文件夹中? - undefined
1
@JoshMonreal 你可以尝试使用复制文件任务 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接