使用 Azure DevOps 部署具有不同名称的 Service Fabric 服务

Posted

技术标签:

【中文标题】使用 Azure DevOps 部署具有不同名称的 Service Fabric 服务【英文标题】:Deploy Service Fabric service with different names using Azure DevOps 【发布时间】:2020-09-28 13:11:41 【问题描述】:

我有一个带有一项服务 (MyService) 的 Service Fabric 应用程序。 现在,我正在使用构建管道构建应用程序,然后使用发布管道将工件部署到托管在 Azure 上的集群。

我想要的是在同一个集群上创建多个具有不同名称的服务实例(如 DEV_MyService、QA_MyService)。理想的选择是在发布管道中使用一个工件和多个阶段。

有没有办法通过 Azure DevOps 和发布管道实现这一目标?

我试图参数化服务名称,但它似乎不起作用。

【问题讨论】:

【参考方案1】:

您可以通过多种方式做到这一点:

    在现有应用程序中创建一个新的service:
sfctl application create --app-name fabric:/TestApp --app-type TestAppType --app-version 1.0
sfctl service create --app-id TestApp --name fabric:/TestApp/TestSvc1 --service-type TestServiceType --stateless --instance-count 1 --singleton-scheme
sfctl service create --app-id TestApp --name fabric:/TestApp/TestSvc2 --service-type TestServiceType --stateless --instance-count 1 --singleton-scheme
    在多个应用程序(一种应用程序类型)中创建服务:
sfctl application create --app-name fabric:/TestApp1 --app-type TestAppType --app-version 1.0
sfctl application create --app-name fabric:/TestApp2 --app-type TestAppType --app-version 1.0
sfctl service create --app-id TestApp1 --name fabric:/TestApp/TestSvc --service-type TestServiceType --stateless --instance-count 1 --singleton-scheme
sfctl service create --app-id TestApp2 --name fabric:/TestApp/TestSvc --service-type TestServiceType --stateless --instance-count 1 --singleton-scheme

如果你想让这个参数化,你可以在文件中使用task that replaces placeholders。

脚本文件(例如 #1)如下所示:

sfctl application create --app-name fabric:/__appName__ --app-type TestAppType --app-version 1.0
sfctl service create --app-id __appName__ --name fabric:/__appName__/__serviceName__ --service-type TestServiceType --stateless --instance-count 1 --singleton-scheme

您需要指定两个 Azure DevOps 管道变量:

    应用名称 服务名称

为每个阶段定义不同的值。

【讨论】:

以上是关于使用 Azure DevOps 部署具有不同名称的 Service Fabric 服务的主要内容,如果未能解决你的问题,请参考以下文章

YAML Azure Devops:步骤任务参考无效。任务名称不明确

Azure devops powershell 任务问题

如何将一个参数文件用于使用一些不同参数的模板? (在 DevOps Pipelines 中使用 Powershell 部署 Azure LogicApp)

通过Rest API或客户端DLL创建具有'Contributors'类的Azure Devops(安全)组,并具有权限

Azure DevOps(内部部署) - Minimatch模式下载工件的多个部分

如何从 Azure DevOps 中的文件夹(不是 zip)部署 WebApp