如何控制 Azure DevOps 管道的工作文件夹?

How to control work folder for Azure DevOps pipeline?

通常情况下,如果您使用的是自托管 Azure 代理,它会自动为您选择目标文件夹(我假设是基于管道名称),在工作文件夹下...例如:

/home/xxxxx/azure/_work/2/t/

有没有一种方法可以从 YAML 管道控制此选择?我的用例是我有一个非常大的回购协议,以及几个不同的管道来检查它。我的机器上只有一个代理 运行ning,所以我的偏好是 所有 我在这个代理上 运行 的管道检出到同一个文件夹(像 /home/xxxxx/azure/_work/MyProject),确保只有一次检出这个大型仓库。

您可以通过设置 checkout: none:

完全避免在管道中同步源
steps:
- checkout: none

然后添加命令行或脚本任务以通过 git 命令手动克隆存储库。

我们最近一直在测试 link 源文件夹,它一直运行良好,所以这可能是一个比公认的答案更简单的答案。

也就是说,您可以创建一个特定的文件夹(比方说 ~/projects/AcmeC:\projects\acme),然后在您的 Azure 管道中 steps before checkout 您删除 s 文件夹并将其 link 到目标项目文件夹。

# In PowerShell (Windows)
New-Item -Type Junction -Path s -Target C:\projects\acme

# In Bash (Linux/MacOS)
ln -s ~/projects/acme s

这种方法的优点是您不必尝试覆盖分散在整个管道和模板文件中的数十个内置任务的工作文件夹;它是管道顶部的一些设置,然后其余任务可以正常运行。