mik*_*nyg 7 azure-service-fabric azure-devops
我已根据此文档在Visual Studio Team Services中为Service Fabric应用程序配置了CI构建:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-set-up-continuous -积分
但是,我没有让我的CI构建进行发布,而是执行构建和打包任务,并在drop中包含所有与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.
cha*_*isk 31
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
Run Code Online (Sandbox Code Playgroud)
顺便说一下,您可能需要考虑设置部署Service Fabric应用程序的自定义构建/发布任务,而不是使用各种Deploy-FabricApplication.ps1脚本.
| 归档时间: |
|
| 查看次数: |
4669 次 |
| 最近记录: |