如何在 Azure DevOps 中读取发布管道中工件的目录路径?

Gol*_*Age 6 azure-devops azure-pipelines

我希望能够在发布管道的 PowerShell 任务中显示工件的目录路径。在构建管道中,Artifact 的目录由变量描述$(System.DefaultWorkingDirectory),如果我尝试使用命令在 PowerShell 任务中显示它

Write-Host $(System.DefaultWorkingDirectory)
Run Code Online (Sandbox Code Playgroud)

在控制台输出中,它显示了路径C:\agent\_work\3\a。这个变量在发布管道中不存在,当我运行命令时

Get-ChildItem Env:
Run Code Online (Sandbox Code Playgroud)

在 powerhsell 任务中,在发布管道中,我可以看到所有环境变量,但没有一个变量存储C:\agent\_work\3\a path 我如何获取它,因为在执行工件下载过程时,AgentJob 以某种方式知道工件的正确目录。有任何想法吗?干杯

Dan*_*ann 5

在脚本中访问构建和发布变量作为环境变量时,需要替换._. 这在文档中进行了解释。在 PowerShell 中,您将访问$env:SYSTEM_DEFAULTWORKINGDIRECTORY.

变量名转换为大写,字符“.” 和“ ”被“_”代替。

例如,Agent.WorkFolder 变为 AGENT_WORKFOLDER。在 Windows 上,您可以作为 %AGENT_WORKFOLDER 或 $env:AGENT_WORKFOLDER 访问它。在 Linux 和 macOS 上,您使用 $AGENT_WORKFOLDER。

  • `$env:SYSTEM_DEFAULTWORKINGDIRECTORY` 的值**是**运行发布时的构建工件目录。这是工件下载到的位置。每个工件都放在不同的文件夹中。请参阅提供的文档链接,因为它解释了所有这些。 (2认同)