如何使用“发布生成工件”任务发布特定文件

时间:2019-05-30 11:51:32

标签: c# azure-devops azure-pipelines azure-pipelines-build-task azure-artifacts

我正在使用Visual Studio Build in Azure Pipeline构建C#应用程序。

我的解决方案包含多个项目(ManagerWeb和WebAPI)。

我想分别发布两个单独的Artifact ManagerWeb和WebAPI。

enter image description here 所有必需的文件都在>>> a = [(1, 2, 3), (1, 2, 3), (1, 2, 3)] >>> avgs = [sum(vals)/len(a) for vals in zip(*a)] >>> avgs [1.0, 2.0, 3.0] 中。

如何指定可以使用“两个分开的工件”的图案? 示例在第一个工件中以Build.ArtifactStagingDirectory和在另一个工件中为WebAPI的所有文件名。

ArtifactStaging目录中的文件名如下

ManagerWeb

任何帮助都是有意义的。

预先感谢。

2 个答案:

答案 0 :(得分:1)

添加PowerShell任务以创建两个文件夹并将文件移动到该文件夹​​:

cd $(Build.ArtifactStagingDirectory)
$files = dir
mkdir WebAPI
mkdir ManagerWeb
ForEach($file in $files)
{
   if($file.FullName.Contains("WebAPI"))
   {
       mv $file.FullName -Destination WebAPI
   }
   else
   {
       mv $file.FullName -Destination ManagerWeb
   }      
}

然后在“发布路径”字段中添加文件夹:

对于WebApi工件:

$(Build.ArtifactStagingDirectory)/WebAPI

对于ManagerWeb工件:

$(Build.ArtifactStagingDirectory)/ManagerWeb

答案 1 :(得分:1)

添加两个用于复制的 Copy Files 步骤;

  • 将ManagerWeb文件保存到$(Build.ArtifactStagingDirectory)\ManagerWeb
  • 将WebAPI文件添加到$(Build.ArtifactStagingDirectory)\WebAPI

然后有两个 Publish Artifact 步骤;

  • $(Build.ArtifactStagingDirectory)\ManagerWeb发布为ManagerWeb
  • $(Build.ArtifactStagingDirectory)\WebAPI发布为WebAPI

我对此进行了模拟,并按如下所示导出了YAML;

pool:
  name: Hosted VS2017
steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\ManagerWeb'
  inputs:
    SourceFolder: 'your/path/here/ManagerWeb'
    TargetFolder: '$(Build.ArtifactStagingDirectory)\ManagerWeb'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)\WebAPI'
  inputs:
    SourceFolder: 'your/path/here/WebAPI'
    TargetFolder: '$(Build.ArtifactStagingDirectory)\WebAPI'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: ManagerWeb'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)\ManagerWeb'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: WebAPI'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)\WebAPI'