将单个服务/项目文件夹移动/部署到Git Mono存储库中的不同环境

问题描述

当前,我们正在使用Azure A repres(Git)中的服务的单存储库方法。我们面临的一个问题是,由于它只有一个存储库,因此无法一次将一个服务移至不同的环境。

例如,我们有 服务1(仍在开发中) 服务2(仍在开发中) 服务3(已准备好进行质量检查)

我们的用例是只需要将与Service 3相关的代码移至qa或更高版本的环境。 每个服务都有几个与我们相关联的功能分支。开发该功能后,我们将其合并到一个dev分支中。

当仅移动服务时,我们想到的一种方法是从一开始就挑选提交,但是如您所见,这可能是非常乏味的方法

所以我想知道是否有一种方法只能将service / project文件夹移动到不同的环境。维护单存储区时,我们需要借鉴哪些最佳实践。

解决方法

我们没有内置选项,只能在Azure DevOps管道中获取部分存储库。

作为一种解决方法,您可以选择禁用“ 获取源代码”步骤,并通过在脚本中手动执行相应的git命令来仅获取所需的源代码。

要禁用默认的“获取来源”,只需在checkout语句中不指定任何内容即可:

- checkout: none

然后通过 git sparse-checkout 仅获得部分回购。

您可以在以下链接中找到答案的更多详细信息:Checkout part of a branch in Azure DevOps Pipelines (GetSources)

最后,您还可以在CD发行版中设置相应的CI触发器和目标环境。或使用multiple stage pipeline