发布和下载生成工件
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.ArtifactStagingDirectory
和Build.StagingDirectory
可互换。每次生成后会清理
Build.ArtifactStagingDirectory
路径。删除与已发布到文件共享的包关联的生成会导致删除该 UNC 路径中的所有工件。
如果你要将包发布到文件共享,请确保提供对生成代理的访问权限。
如果你的组织使用防火墙,请确保允许 Azure Artifacts 域 URL 和 IP 地址。