如何在 Azure DevOps 管道中管理构建工件?

How build artifacts are managed in Azure DevOps pipeline?

我正在为我的 webapp 设置一个新的 Azure DevOps 管道。我可以看到构建工件保存在名为 $Build.ArtifactStagingDirectory 的路径中。此路径变量指向何处以及我可以访问我的工件多长时间?

此外,Azure DevOps 版本(跟踪一段时间内构建的所有工件)是否构建了工件?如果不是,如何对我的构建工件进行版本控制?

您需要发布 artifacts using task,因为默认情况下它们不会发布。如果您使用的是 yaml,只需添加

# Publish Build Artifacts
# Publish build artifacts to Azure Pipelines/TFS or a 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

有配置保留多长时间those artifacts as我记得默认情况下是 30 天和 3 或 5 个最后的构建

代理中有 3 个文件夹:abs。变量 $(Build.ArtifactStagingDirectory) 指向文件夹 a (artifacts),所以路径是 c:\agent\_work\a(如果代理位置是 c:\agent1也可以是另一个数字,根据有多少构建,这个数字是递增的)。

那里没有保存的神器!当您构建代码时,所有代码和工件都存在于文件夹 s 中(ssources),最佳做法是仅将工件复制到文件夹 a然后使用任务 "Publish build artifacts",在此任务中,您从文件夹 a 中获取工件并将它们放在 Azure DevOps 存储或文件共享中(如果您使用自托管代理)。

根据您的保留策略,存在来自 Azure DevOps 存储/文件共享的工件。

如果您将工件保存在 Azure DevOps 中,您可以从构建摘要页面访问您的工件或创建发布管道。如果您将它们保存在文件共享中,您可以在那里或在发布管道中访问它们。

您可以控制多少天您希望在删除之前保留每个构建(默认 30 天)(请参阅 Build and release retention policies)。删除构建时,已发布的工件也会被删除。

要对构建工件进行版本控制,您可以使用将跟踪的构建编号。

$Build.ArtifactStagingDirectory 指向的位置取决于您选择的发布位置。参见 Artifacts in Azure Pipelines