如何保留代理的临时文件夹以便手动从 Azure DevOps 发布管道调用命令

问题描述 投票:0回答:3

我想对 Azure DevOps 发布管道(经典模式)中的单个步骤进行故障排除。

该步骤在部署虚拟机上调用类似的命令:

C:\azagent\A1\_work\_tool\VsTest\17.0.0\x64\tools\net451\Common7\IDE\Extensions\TestPlatform\vstest.console.exe "@_work\_temp\qrjwcoj0moy.tmp

但是临时文件夹

C:\azagent\A1\_work\_temp\
已被删除。我可以保留临时文件以便手动调用命令吗?

azure-devops azure-pipelines azure-pipelines-release-pipeline azure-devops-self-hosted-agent
3个回答
4
投票

根据https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml(检查“Agent.TempDirectory”)这是不可能的,因为 temp每次管道作业后都会清理文件夹。

如果您想保留这些文件,您需要在作业结束之前将它们复制(任务:CopyFiles)到不同的文件夹,以便稍后检查它们。


3
投票

我添加了一个根据变量“system.debug”复制目录的步骤:

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Agent.TempDirectory)'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)\AgentTempDirectory'
  displayName: 'Copy Agent.TempDirectory to drop'
  condition: eq(variables['system.debug'], 'true')

0
投票

基于@PainElemental答案,以下是如何将临时目录发布为调试工件:

- task: PublishPipelineArtifact@1
  displayName: 'Publish Agent.TempDirectory'
  inputs:
    targetPath: '$(Agent.TempDirectory)'
    artifact: TempDirectory
  condition: eq(variables['system.debug'], 'true')

请注意,从例如计算机读取的密码或其他机密信息变量组可能会以“纯文本”形式包含在已发布的脚本中。至少对于我来说,PowerShell 脚本是这样。

© www.soinside.com 2019 - 2024. All rights reserved.