gpt4 book ai didi

azure-devops - 如何从 VSTS 发布管道部署 Service Fabric 应用程序?

转载 作者:行者123 更新时间:2023-12-04 08:58:42 25 4
gpt4 key购买 nike

根据以下文档,我在 Visual Studio Team Services 中为 Service Fabric 应用程序配置了 CI 构建:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous-integration

但是,我没有让 CI 构建进行发布,而是只执行构建和打包任务,并在 drop 中包含所有与 Service Fabric 相关的输出,例如 pkg 文件夹、脚本、发布配置文件和应用程序参数。通过这种方式,我可以将其传递给新的发布管道(基于代理的发布)以执行我的服务结构应用程序的实际部署。

在我的发布定义中,我有一个 Azure Powershell 任务,它使用 ARM 端点(配置了适当的服务主体)。

当我将我的应用程序部署到现有服务结构集群时,我使用默认的 Deploy-FabricApplication cmdlet 传递 pkg 文件夹和配置为连接到现有集群的发布配置文件。

发布失败并显示错误消息“集群连接实例为空”。我不明白为什么?

做一些调试我发现:
Deploy-FabricApplication cmdlet 可以很好地执行 Connect-ServiceFabricCluster cmdlet,但是一旦 Publish-NewServiceFabricApplication cmdlet 接管执行,集群连接就会丢失。

我希望使用服务结构 cmdlet 可以实现这种情况,但我无法弄清楚如何在部署期间保持集群连接打开。

更新:文档链接不再引用 Service Fabric powershell 脚本,因此不再记录此问题的先决条件。这篇文章现在提到了 VSTS 构建和发布任务,它比我尝试使用的 powershell cmdlet 更受欢迎。

最佳答案

Connect-ServiceFabricCluster函数被调用(来自 Deploy-FabricApplication.ps1)本地 $clusterConnection在调用 Connect-ServiceFabricCluster 后设置变量.你可以看到使用 Get-Variable .

不幸的是,某些 SDK 脚本中存在期望设置该变量的逻辑,但由于它们在不同的范围内运行,因此该局部变量不可用。

它在 Visual Studio 中工作,因为 Deploy-FabricApplication.ps1 脚本是使用 dot source notation 调用的。 ,这把 $clusterConnection当前作用域中的变量。

我不确定在通过发布管道运行脚本时是否可以使用点源,但作为一种解决方法,您可以制作 $clusterConnection变量 global 在通过 Connect-ServiceFabricCluster 设置后立即生效称呼。编辑您的 Deploy-FabricApplication.ps1脚本并在连接逻辑之后添加以下行(~第 169 行):

$global:clusterConnection = $clusterConnection  

顺便说一句,您可能需要考虑设置 custom build/release tasks部署 Service Fabric 应用程序,而不是使用各种 Deploy-FabricApplication.ps1 脚本。

关于azure-devops - 如何从 VSTS 发布管道部署 Service Fabric 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com