发布和下载生成工件

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

注意

建议使用下载管道工件发布管道工件以提高性能。

Azure Artifacts 允许团队使用源和上游源来管理其依赖项。 可以使用 Azure Pipelines 发布和下载不同类型的工件作为 CI/CD 工作流的一部分。

发布工件

可以在管道的任何阶段发布工件。 可以使用 YAML 或经典 Azure DevOps 编辑器来发布包。

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • pathToPublish:工件的路径。 这可以是绝对路径或相对路径。 不支持通配符。
  • artifactName:工件的名称。

注意

发布工件时,请确保不要使用保留的文件夹名称。 有关更多详细信息,请参阅应用程序文件夹

示例:使用多个任务

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • pathToPublish:工件的路径。 这可以是绝对路径或相对路径。 不支持通配符。
  • artifactName:工件的名称。

示例:复制和发布二进制文件

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • sourceFolder:包含要复制的文件的文件夹。 如果将此项留空,则会从 $(Build.SourcesDirectory) 复制。
  • contents:要作为副本的一部分包含的文件路径。
  • targetFolder:目标文件夹。
  • pathToPublish:要发布的文件夹或文件路径。 可以是绝对路径或相对路径。 不支持通配符。
  • artifactName:要创建的工件的名称。

注意

确保不要为 artifactName 使用保留的名称,例如 Bin 或 App_Data。 有关更多详细信息,请参阅 ASP.NET Web 项目文件夹结构

注意

每次生成后会清理 Build.ArtifactStagingDirectory 路径。 如果使用此路径发布工件,请确保在发布步骤之前将想要发布的内容复制到此目录中。

下载工件

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactsDirectory)'
  • buildType:指定要下载的生成工件:current(默认值)或特定生成的工件。
  • downloadType:选择是要下载单个工件还是下载特定版本的所有工件。
  • artifactName:要下载的工件的名称。
  • downloadPath:代理计算机上要将工件下载到的路径。

注意

如果使用部署任务,可以使用 $(Agent.BuildDirectory) 引用生成工件。 有关更多详细信息,请参阅代理变量

管道运行完成后,导航到“摘要”以浏览或下载工件。

已发布生成工件

下载特定工件

steps:
- task: DownloadBuildArtifacts@1
  displayName: 'Download Build Artifacts'
  inputs:
    buildType: specific
    project: 'xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx'
    pipeline: 20
    buildVersionToDownload: specific
    buildId: 128
    artifactName: drop
    extractTars: false

提示

  • 如果使用 Azure DevOps Server 以允许使用个人访问令牌进行身份验证,请禁用 IIS 基本身份验证。 有关更多详细信息,请参阅 IIS 基本身份验证和 PAT

  • 在文件路径参数中使用正斜杠。 反斜杠在 macOS/Linux 代理中不起作用。

  • 生成工件存储在 Windows 文件系统中,这会导致所有 UNIX 权限(包括执行位)丢失。 从 Azure Pipelines 下载工件后,可能需要恢复正确的 UNIX 权限。

  • Build.ArtifactStagingDirectoryBuild.StagingDirectory 可互换。

  • 每次生成后会清理 Build.ArtifactStagingDirectory 路径。

  • 删除与已发布到文件共享的包关联的生成会导致删除该 UNC 路径中的所有工件。

  • 如果你要将包发布到文件共享,请确保提供对生成代理的访问权限。

  • 如果你的组织使用防火墙,请确保允许 Azure Artifacts 域 URL 和 IP 地址