有什么方法可以删除管道的一项作业中产生的构建工件,例如:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Agent.BuildDirectory)/${{ parameters.buildPath}}/'
artifact: 'RestoredBuilds'
publishLocation: 'pipeline'
被其他工作重复使用。这些文件在管道之外没有值,最好将其删除到空白空间。如果不可能,是否有其他方式在同一管道的作业之间交换文件夹/文件?
根据您的描述,您希望删除管道中产生的Build Artifact,同时保留管道运行,以避免占用Azure Artifacts存储。
但是,根据此Q&A,管道工件不可删除或不可覆盖。目前,您只能删除管道运行,管道工件将随运行一起删除。您可以为构建设置保留策略,这将删除旧的运行以节省存储空间。
如果不可能,是否有其他方式在同一管道的作业之间交换文件夹/文件?
使用文件共享进行工件交换
您可以将管道工件发布到必须可从管道代理访问的文件共享。然后就可以在后续的作业中下载该工件了。
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Agent.BuildDirectory)/${{ parameters.buildPath}}/'
artifact: 'RestoredBuilds'
publishLocation: 'filepath'
fileSharePath: '\\my\share\(Build.DefinitionName)\\(Build.BuildNumber)'
使用复制文件任务
您可以使用复制文件任务将文件复制到必须可从管道代理访问的文件共享。然后您可以在后续作业中将文件复制回来。
- task: CopyFiles@2
inputs:
SourceFolder: '$(Agent.BuildDirectory)/${{ parameters.buildPath}}/'
Contents: '**'
TargetFolder: '\\\\network-share\\path\\to\\folder'
在同一个自托管代理上运行作业
您可以指定代理的某些要求,以确保管道作业在同一个自托管代理上运行。在第一个作业中,您可以将文件复制并存储到自托管代理上的路径,然后在后续作业中,您可以访问该路径,因为它们在同一代理上运行。
pool:
name: Default
demands: SpecialCapabilities # exists check for capabilities