Azure devops 如何使用Azure和NX部署多个应用程序(monorepo)
我正在使用工具来管理包含多个应用程序的monorepo,我正在努力理解如何使用Azure和发布管道进行部署 免责声明:总体而言,我对Azure和devops非常陌生 我的理解是: 我创建了一个管道(不是发布管道,如果有意义的话,只是一个“常规管道”)并插入一个yml。此外,管道链接到Azure Repos上的一个repo,这意味着每次我推送到这个repo时,它都会触发管道并运行yaml命令。 在这个命令上,我运行lint、test和build 这就是我能做和能理解的,以下内容变得更加模糊了: 如果我在master上进行pusing/merging,构建作业应该创建一个工件,我可以对其进行条件化。 现在我可以创建一个发布管道,当它链接到repo时,它将被触发,从而创建一个工件。然后,该发布管道可以将该工件发送到应用程序服务,该应用程序服务是应用程序将驻留的插槽 好的,但我使用的是monorepo,这意味着构建将生成多个应用程序,并且这些应用程序中的每一个都应该部署到正确的应用程序服务 经过一些研究,总体思路是为每个应用程序创建一个发布管道。这些发布管道都链接到同一个monorepo,但它们有一个过滤器,它是一个构建标记。在使用yml文件构建应用程序时添加build标记 这些基本上就是我对所有这些的理解。下面是问题:Azure devops 如何使用Azure和NX部署多个应用程序(monorepo),azure-devops,monorepo,Azure Devops,Monorepo,我正在使用工具来管理包含多个应用程序的monorepo,我正在努力理解如何使用Azure和发布管道进行部署 免责声明:总体而言,我对Azure和devops非常陌生 我的理解是: 我创建了一个管道(不是发布管道,如果有意义的话,只是一个“常规管道”)并插入一个yml。此外,管道链接到Azure Repos上的一个repo,这意味着每次我推送到这个repo时,它都会触发管道并运行yaml命令。 在这个命令上,我运行lint、test和build 这就是我能做和能理解的,以下内容变得更加模糊了: 如
非常感谢您的帮助,我知道这是一篇冗长乏味的文章,帮助一个noob可能会很无聊,但我一直坚持这一点,因为它太长了……1,您可以从UI页面(构建摘要页面,见下文)或使用添加构建标签。它可以用于在构建之间进行过滤。如果您的构建管道生成了多个工件,那么构建标记将无法过滤在一个构建中生成的工件 2,因此您可以考虑如何分离管道中每个应用程序的构建工件 您可以使用压缩构建工件并使用发布 请参见下面的yaml示例:我使用两个归档文件任务分别打包了app1和app2的构建工件。并将压缩后的工件保存在文件夹
$(Build.ArtifactStagingDirectory)
中。
然后发布构建工件任务将工件发布到azure devops云。(发布管道将下载要部署到应用服务器的工件)
3,然后您可以在发布管道中使用多个阶段并使用。例如:
在第一阶段中,添加Azure应用程序服务部署任务
,并将包设置为$(System.DefaultWorkingDirectory)/**/app1/dist1.zip以部署app1。在第二阶段,将其设置为$(System.DefaultWorkingDirectory)/**/app2/dist2.zip以部署app2。
在monorepo中部署多个应用程序的另一个解决方法是创建多个构建/发布管道,每个应用程序一个。并且在构建管道中使用,仅当更新相应的应用程序时才触发构建管道
trigger:
paths:
include:
- root/app1/*
希望以上帮助 1,您可以从UI页面(构建摘要页面,见下文)或使用添加构建标记。它可以用于在构建之间进行过滤。如果您的构建管道生成了多个工件,那么构建标记将无法过滤在一个构建中生成的工件
2,因此您可以考虑如何分离管道中每个应用程序的构建工件
您可以使用压缩构建工件并使用发布
请参见下面的yaml示例:我使用两个归档文件任务分别打包了app1和app2的构建工件。并将压缩后的工件保存在文件夹$(Build.ArtifactStagingDirectory)
中。
然后发布构建工件任务将工件发布到azure devops云。(发布管道将下载要部署到应用服务器的工件)
3,然后您可以在发布管道中使用多个阶段并使用。例如:
在第一阶段中,添加Azure应用程序服务部署任务
,并将包设置为$(System.DefaultWorkingDirectory)/**/app1/dist1.zip以部署app1。在第二阶段,将其设置为$(System.DefaultWorkingDirectory)/**/app2/dist2.zip以部署app2。
在monorepo中部署多个应用程序的另一个解决方法是创建多个构建/发布管道,每个应用程序一个。并且在构建管道中使用,仅当更新相应的应用程序时才触发构建管道
trigger:
paths:
include:
- root/app1/*
希望以上帮助 您好,您有机会尝试下面的解决方案吗?进行得如何?您好,很抱歉,尽管信息丰富,但我没有花时间回答这篇帖子。我自己找到了这个解决方案,有很多来回,看起来很像你的解决方案,除了第一部分,在我的解决方案中,我用vso.addBuildTags在yaml文件中动态添加了标记。我想找到一个解决方案来归档和发布受影响的应用程序,而不必为ya中的每个应用程序手动执行
trigger:
paths:
include:
- root/app1/*