我有一个包含多个项目的Visual Studio解决方案,每个项目都是一个单独的微服务。对于开发团队来说,将所有服务都放在同一解决方案和git repo中非常方便,因为服务可以相互调用。
Master.sln - SubFolderA - MicroserviceA.sln
- SubFolderB - MicroserviceB.sln
- SubFolderC - MicroserviceC.sln
Run Code Online (Sandbox Code Playgroud)
但是,我想在Azure DevOps发生更改时独立构建/发布单个微服务,因此,如果ServiceA是唯一要更改的服务,则ServiceA是唯一构建和部署的服务。
为此,我创建了一个新的构建管道定义,其中设置了“路径过滤器”,以在微服务文件夹的内容更改时触发构建(因此,要监视的每个微服务都添加了一个路径过滤器)。
我的问题是,当触发构建时(例如,基于对SubFolderA的更改),我无法告诉构建定义仅在SubFolderA中构建.sln文件。
我可以为每个微服务创建一个单独的构建定义,并在单独的子文件夹上触发每个构建,但这会产生很大的开销,即我需要维护15个单独的构建定义(对于我构建的每个分支也是如此),以及所需的存储空间在我们的自托管构建代理上,现在将是NumberOfService x NumberOfBranchesBeingBuild x SizeOfRepo。
有没有一种方法可以使用带有git“路径过滤器”和多个定义路径的单个构建定义,这反过来又启动了多个构建实例,并将触发构建的路径的值输入到构建定义中,因此告诉构建实例要建立哪个.sln文件?
我希望这是有道理的!