跨多个构建定义共享Git存储库目录

时间:2018-01-24 21:27:29

标签: visual-studio msbuild azure-devops azure-pipelines

当私有代理构建在VSTS中启动时,会为其分配一个目录,例如C:\ vstsagent_work \ 1 \ S

有没有办法将其设置为不同的路径?在Jenkins等其他CI服务器上,我可以为作业定义自定义工作区。我正在处理一个巨大的monorepo,并且在同一个存储库周围有许多构建定义。无论如何,在构建代理计算机上共享一个目录是有意义的。

对我来说,好处是我的构建可以使用来自上游存储库的预构建组件(如果它们已经构建)。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

VSTS构建始终为每个构建定义创建一个工作目录。这有两个选择:

  1. 创建单个构建定义并在步骤上使用条件以跳过某些步骤,以便仅运行所需的内容。这允许您使用标准步骤,并且可能需要PowerShell脚本来确定要运行的步骤以及要跳过的步骤。使用特殊日志记录命令从powershell设置变量。
  2. 禁用获取源步骤并添加手动提取源的步骤。您需要清理工作目录,签出正确的提交,基本上手动复制get sources步骤中的操作。对于正常构建,拉取请求构建等,可能需要一些小工具才能正确获取所有行为。这样您就可以完全控制检出源的位置。
  3. 我还建议您调查2017项目格式,这些格式在项目文件中使用新的UPDATE mytable SET address = "empty" , email = "empty"; 来获取包。新系统支持配置版本范围,该版本范围始终可以获取最新的可用软件包版本。这是一个更好的长期解决方案。

答案 1 :(得分:0)

不,它在VSTS构建系统中不可用。

您可以更改代理的工作目录(C:\ vstsagent_work)(重新配置它并指定另一个工作文件夹),但它不会对不同的构建定义使用相同的源文件夹,该文件夹将为1​​,2 ,3 ......