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

Visual studio 跨多个构建定义共享Git存储库目录,visual-studio,msbuild,azure-devops,azure-pipelines,Visual Studio,Msbuild,Azure Devops,Azure Pipelines,在VSTS中启动专用代理生成时,会为其分配一个目录,例如C:\vstsagent\U work\1\s 有没有办法将其设置为其他路径?在其他CI服务器(如Jenkins)上,我可以为作业定义自定义工作区。我正在处理一个巨大的monorepo,在同一个存储库中有几十个构建定义。在build agent计算机上共享一个目录(对我来说)是有意义的 对我来说,好处是我的构建可以使用来自上游存储库的预构建组件(如果它们已经构建) 感谢您的帮助否,它在VSTS生成系统中不可用 您可以更改代理的工作目录(C:

在VSTS中启动专用代理生成时,会为其分配一个目录,例如C:\vstsagent\U work\1\s

有没有办法将其设置为其他路径?在其他CI服务器(如Jenkins)上,我可以为作业定义自定义工作区。我正在处理一个巨大的monorepo,在同一个存储库中有几十个构建定义。在build agent计算机上共享一个目录(对我来说)是有意义的

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


感谢您的帮助

否,它在VSTS生成系统中不可用


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

VSTS build始终会根据每个生成定义创建一个工作目录。这给您留下了两个选择:

  • 创建单个生成定义,并在步骤上使用条件跳过某些步骤,以便只运行所需的内容。这允许您使用标准步骤,并且可能需要powershell脚本来确定要运行哪些步骤以及要跳过哪些步骤。使用特殊的日志记录命令从powershell设置变量
  • 禁用获取源步骤并添加手动获取源的步骤。您需要清理工作目录,签出正确的提交,基本上手动复制GetSources步骤中的操作。它可能需要一些坐立不安,才能正确获得正常构建、拉请求构建等的所有行为。这样,您就可以完全控制检出源的位置

  • 我还建议您调查2017项目格式,这些格式在项目文件中使用新的
    来获取包。新系统支持配置一个版本范围,该范围始终可以获取软件包的最新可用版本。这是一个更好的长期解决方案

    自有代理还是私人代理?您看过Visual Studio 2017.3+中的Nuget
    packageReference
    ?这允许您设置一个版本规范,该规范将只获取最新版本,或者允许您使用MsBuild属性为引用设置与您自己的项目相同的版本。@jessehouwing,我正在使用私有代理。我真的不想再走努吉路线了。上一次我被严重烧伤了,管理起来很复杂。我想让事情保持简单,而当前的方法很简单,不幸效率低下。您是否在构建过程中设置程序集版本?您有一个或多个生成定义吗?每个构建定义都有自己的工作区,并从较旧版本的依赖项开始。如果是一个包含大量条件的生成定义,则每次都应将其重定向到同一个工作区/repo。您可以关闭“获取源”步骤,并在生成的第一步调用
    git.exe
    tf.exe
    。这样,您可以完全控制位置,但必须手动操作。