我想在天蓝色管道中的作业之间共享文件。我知道执行此操作的一种方法是使用 PublishPipelineArtifact Task。还有其他方法可以达到同样的效果吗?
我正在使用 Azure DevOps 服务并使用 Linux 计算机作为自托管代理。
提前致谢!
替代方案是 PublishBuildArtifacts 任务
参考 link 查看 PublishPipelineArtifact 上的差异 & 发布BuildArtifact
使用 PublishPipelineArtifact 任务(或 PublishBuildArtifacts 任务)将文件发布为命名工件是一个不错的选择。然后在其他作业/管道中使用 DownloadPipelineArtifact 任务(或 DownloadBuildArtifacts 任务)使用文件。您能告诉我为什么您想使用其他方法吗?
如果您想存储和共享大文件,可以使用存储帐户。在 Azure CLI 任务 中运行 az storage blob upload 将文件上传到存储 blob。运行 az storage blob download 从存储帐户下载文件。
如果您在 same 管道中运行不同的作业并使用 same 自托管代理,则可以在管道中定义共享路径变量并将文件存储在其中。此方法有局限性,不推荐。从这张票查看更多信息。
例如,
variables:
sharepath: $(Agent.BuildDirectory)\sharefolder
通过一项作业将目标文件复制到共享文件夹中。以 file1.zip 为例。将
TargetFolder
设置为 $(sharepath)
。
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: 'file1.zip'
TargetFolder: '$(sharepath)'
将共享文件夹中的文件复制到当前工作目录中进行使用。将
SourceFolder
设置为 $(sharepath)
。
- task: CopyFiles@2
inputs:
SourceFolder: '$(sharepath)'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)\CopiedFiles'
您还可以使用repo来存储文件并使用checkout来消费。
可能还有其他共享文件的方法。您需要根据自己的实际需求来选择。