发布生成 Artifacts 任务

Azure Pipelines |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018 |TFS 2017 |TFS 2015。3

注意

此任务已弃用。 建议改为使用管道 Artifacts任务。

在生成管道中使用此任务将生成项目发布到 Azure Pipelines、TFS 或文件共享。

需求

YAML 代码段

# Publish build artifacts
# Publish build artifacts to Azure Pipelines or a Windows file share
- task: PublishBuildArtifacts@1
  inputs:
    #pathToPublish: '$(Build.ArtifactStagingDirectory)' 
    #artifactName: 'drop' 
    #publishLocation: 'Container' # Options: container, filePath
    #targetPath: # Required when publishLocation == FilePath
    #parallel: false # Optional
    #parallelCount: # Optional
    #fileCopyOptions: #Optional

参数

参数 说明
pathToPublish
要发布的路径
(必需)
要发布的文件夹或文件路径。 此路径可以是完全限定的路径,也可以是相对于存储库根目录的路径。 不支持通配符。 请参阅Azure Pipelines 中的 Artifacts
默认值:30$(Build.ArtifactStagingDirectory)
ArtifactName
项目名称
(必需)
指定要创建的项目的名称。 它可以是你想要的任何内容。
默认值:30drop
publishLocation
项目发布位置
(必需)
选择是将项目存储在 Azure Pipelines (Container) 中,还是将其复制到 FilePath 必须可从生成代理访问的 () 的文件共享中。 若要了解详细信息,请参阅Azure Pipelines 中的 Artifacts
默认值:30Container
TargetPath
文件共享路径
必需(如果
指定要将文件复制到的文件共享的路径。 路径必须是完全限定的路径或相对于存储库根目录的有效路径。 不支持将项目从 Linux 或 macOS 代理发布到文件共享。
Parallel
并行复制 (Azure PipelinesTFS 2018或更高版本)
选择是否要使用多个线程并行复制文件,以获得更大的潜在吞吐量。 如果未启用此设置,将使用单个线程。
ParallelCount
并行计数 (Azure PipelinesTFS 2018或更高版本)
输入并行度 () 用于执行复制的线程数。 该值必须至少为1,且不能大于128。 选择基于生成代理的 CPU 功能的值。
默认值:308
FileCopyOptions
文件复制选项
将附加选项传递给 Robocopy 命令。 例如,recursive minimatch 模式 **/*
控制选项

注意

不能使用作为项目名称的 IIS 保留的 BinApp_Data 和其他文件夹名称,因为此内容不会用于响应 Web 请求。 有关更多详细信息,请参阅ASP.NET Web Project 文件夹结构

示例

steps:
- task: CopyFiles@2
  inputs:
    contents: '_buildOutput/**'
    targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: $(Build.ArtifactStagingDirectory)
    artifactName: MyBuildOutputs

常见问题

问:我在发布项目时遇到问题。 如何查看详细日志?

为管道启用详细日志:

  1. 编辑管道并选择 变量
  2. 添加具有名称和值的新变量 System.Debugtrue
  3. 保存

问:我可以使用哪些变量?

答: $(Build.SourcesDirectory)$(Agent.BuildDirectory) 只是几个可在管道中使用的变量。 变量可用作 表达式 或脚本。

若要了解不同类型的变量,请参阅 定义变量预定义变量经典发布和项目变量

问:任务允许我在 yaml 管道中的部署作业中发布项目,但无法在下游管道中使用它?

答:部署作业没有源分支的上下文,因此不适合发布项目。 它们主要用于使用项目。 一种解决方法是将该逻辑隔离到一个单独的作业 () 的部署作业上。