Service Fabric - 如何在一个集群上部署多个代码分支?

Service Fabric - How to deploy multiple branches of code on one cluster?

由于硬件要求,每个集群必须至少有 3 台服务器,我想使用该硬件来支持多个 branches/environments。具体来说,我们一般一个应用程序同时拥有3个Dev和3个Test分支运行,以支持多个并行开发项目。在我们发布到生产环境后,代码会合并回其他分支。

我知道我可以创建一个应用程序类型的多个实例,但我认为我真正需要的是在同一个集群上拥有一个应用程序类型的多个版本。很可能同时在 A 和 B 分支中进行开发。我们想要测试两个分支并将其部署到开发集群。

同样,我想使用同一个集群来公开测试环境端点。因此,随着代码的提升,我可以部署应用程序的 TestB 版本,如果发生错误修复,这些错误将被修复并部署在该应用程序类型的 DevB 版本中。

为了处理 WebAPI 端点端口问题,我们计划让构建脚本选择环境特定的 WEBAPI 服务清单,因为它包含将 Service Fabric 应用程序公开给调用应用程序的端口号。所以我将有一个 ServiceManifest-DevB.xml 文件,该文件被重命名为普通的旧 ServiceManifest.xml 并在它发布时与 DevB 构建打包在一起。然后 ServiceManifest-TestB.xml 将执行相同的操作,但具有不同的端口。这里的另一个选项是 Tokenizer。

但我正在苦苦思索如何在集群上拥有相同应用程序类型 运行 的不同版本?我可以覆盖参数文件中的应用程序类型或类似的内容吗?我真的希望我不需要为此构建 6 个集群?那是一大堆不会飞的硬件。

请帮助并提前致谢, 格雷格

您可以在通过 New-ServiceFabricApplication 创建应用程序实例时传递所需的应用程序版本。只需复制、注册,然后更新您需要的应​​用程序类型和版本。

我一年前就有这个问题,并把它记下来了。现在回来了,所以这次我会记录下来!!!

我正在为我的开发和测试环境使用一个集群,我们为此使用两个分支。我需要能够以不同的应用程序名称为这两个分支部署应用程序。

为了解决这个问题,我遵循了 ps1 线索。首先,您查看 Deploy-FabricApplication.ps1,它刚刚将 PublishProfile 传递给 Publish-NewServiceFabricApplication.ps1。这家伙使用了实用程序中的一种方法。ps1 称为 Get-ApplicationNameFromApplicationParameterFile。所有这一切都是打开特定于环境的应用程序参数文件并从顶部读取它:

使用这是我的开发应用程序参数文件:

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/MyAppDEVA" xmlns="http://schemas.microsoft.com/2011/01/fabric">

在我的测试应用程序参数文件中使用它

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/MyAppTEST" xmlns="http://schemas.microsoft.com/2011/01/fabric">

当你知道时,轻松愉快,知道是成功的一半。