根据此文档,我已经在Visual Studio Team Services中为Service Fabric应用程序配置了CI构建:https : //azure.microsoft.com/zh-cn/documentation/articles/service-fabric-set-up-continuous -一体化
但是,我没有执行CI构建进行发布,而是仅执行了“构建”和“打包”任务,并在下拉菜单中包括了所有与Service Fabric相关的输出,例如pkg文件夹,脚本,发布配置文件和应用程序参数。这样,我可以将其传递到新的Release管道(基于代理的发行版)中,以进行我的服务结构应用程序的实际部署。
在我的发行版定义中,我有一个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脚本是使用点源表示法调用的,该脚本将$clusterConnection
变量置于当前范围内。
我不确定通过发布管道运行脚本时是否有使用点源的方法,但是作为解决方法,您可以$clusterConnection
在通过Connect-ServiceFabricCluster
调用设置变量后立即将其设置为全局变量。编辑您的Deploy-FabricApplication.ps1
脚本,并在连接逻辑之后添加以下行(〜第169行):
$global:clusterConnection = $clusterConnection
顺便说一句,您可能需要考虑设置用于部署Service Fabric应用程序的自定义生成/发布任务,而不是使用各种Deploy-FabricApplication.ps1脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句