从另一个管道Azure下载管道工件

从另一个管道Azure下载管道工件,azure,azure-devops,azure-pipelines,azure-artifacts,Azure,Azure Devops,Azure Pipelines,Azure Artifacts,我对这个管道非常陌生,我正在尝试构建一种自动化的方法来为我的应用程序构建.msi安装程序文件 我有两个项目.netcore和Python,所以我创建了两个管道。.Net核心管道将在某个位置生成并保存文件,Python管道将这些文件(从位置)用作其依赖项,并生成一个新的.msi文件,管道newsetup.py中的最后一部分构建了.msi,我将向其传递.Net核心管道的输出文件的位置 我得到的错误是未找到构建150的工件dropcli。 .Net核心管道脚本: - task: VSBuild@1

我对这个管道非常陌生,我正在尝试构建一种自动化的方法来为我的应用程序构建
.msi
安装程序文件

我有两个项目
.netcore
Python
,所以我创建了两个管道。.Net核心管道将在某个位置生成并保存文件,Python管道将这些文件(从位置)用作其依赖项,并生成一个新的
.msi
文件,管道
newsetup.py
中的最后一部分构建了
.msi
,我将向其传递.Net核心管道的输出文件的位置

我得到的错误是未找到构建150的工件dropcli。

.Net核心管道脚本:

- 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)'
- 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)'
Python管道脚本:

- 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)'
- 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)'

另外,如果我在某个地方指定了构建编号,那么在创建新管道时,这不是一个问题吗?或者这是一个限制?

在您的
DownloadPipelineArtifact@2
task,
buildType
的值为
current
。这意味着您正在当前运行中下载工件。您应该将
buildType
设置为
specific
。以下是从特定管道下载最新工件的示例:

- task: DownloadPipelineArtifact@2
  inputs:
    buildType: 'specific'
    project: '{project id}'
    definition: '{pipeline id}'
    buildVersionToDownload: 'latest'
    artifactName: 'dropcli'
    targetPath: '$(Pipeline.Workspace)'
您可以单击任务顶部的“设置”,这将帮助您更轻松地完成任务

单击以获取有关此任务参数的详细信息

如果我在某个地方指定了构建编号,那么在创建新管道时,这不是一个问题吗?或者这是一种限制


如上所述,您不需要指定内部版本号,您需要指定的是管道定义id。您可以下载管道的最新工件或管道的特定内部版本的工件。

每个管道都应该使用自己的$(pipeline.Workspace),因此您需要使用类似以下内容的共享文件夹$(System.DefaultWorkingDirectory)或任何其他内容来发布和下载工件。同时将buildnumber添加到工件名称中。。