gpt4 book ai didi

azure - 在 VSTS 版本上部署 Service Fabric 服务版本升级失败

转载 作者:行者123 更新时间:2023-12-04 15:06:57 24 4
gpt4 key购买 nike

摘要

日志中出现以下错误。

The content in ConfigPackage Name:Config and Version:1.0.0.20180315.2 in Service Manifest 'TwoServicePkg' has changed, but the version number is the same.

我只更改了其中一项服务的代码,因此我只更改了 list 中代码的一个版本。

本例中通过Visual Studio升级是没有问题的。

但是通过VSTS升级会出现上述错误。

详细信息

我默认为 Service Fabric 创建了 VSTS CI/CD。(管道:VSTS Git Repo -> 构建 -> 发布)

第一次“提交>构建>发布”就可以了。

Service Fabric list 版本

MyAppType: 1.0.0
OneService: Pkg 1.0.0 / Code 1.0.0 / Config 1.0.0
TwoService: Pkg 1.0.0 / Code 1.0.0 / Config 1.0.0

现在,我仅修复 OneService 代码。并编辑服务结构 list 的版本。

Service Fabric list 版本

MyAppType: 1.0.1(*)
OneService: Pkg 1.0.1(*) / Code 1.0.1(*) / Config 1.0.0
TwoService: Pkg 1.0.0 / Code 1.0.0 / Config 1.0.0

第二次提交 > 构建正常。但发布失败。日志中出现以下错误。

The content in ConfigPackage Name:Config and Version:1.0.0.20180315.2 in Service Manifest 'TwoServicePkg' has changed, but the version number is the same.

但我没有修改 TwoService Pkg(代码、配置)。

此外,通过 VS2017 IDE 立即发布到“Azure Cloud Service Fabric Cluster”也很好。 (当然,选中“升级应用程序”选项。)

当前的临时解决方案是对所有(所有 pkg​​/代码/配置)进行版本升级,如下所示。

Service Fabric list 版本

MyAppType: 1.0.1(*)
OneService: Pkg 1.0.1(*) / Code 1.0.1(*) / Config 1.0.1(*)
TwoService: Pkg 1.0.1(*) / Code 1.0.1(*) / Config 1.0.1(*)

我想构建构建管道,但它很困惑。

<小时/>

其他信息

我只使用默认的 VSTS Service Fabric 模板。

并且仅修改发布配置文件名称(Cloud.xml -> Cloud.Development.xml)。

发布任务截图 Release Task Screenshot

最佳答案

错误消息提示您收到的错误:

'The content in ConfigPackage Service Manifest 'PackageName' has changed, but the version number is the same.

这意味着:我们在这个包中发现了一些与以前的版本不匹配的不同内容,因为你说过版本应该相同,它们应该匹配,所以我不知道该怎么办,会让你解决这个问题。

该消息的暗示性并不强,因此乍一看您会迷失方向。

我在这里回答了同样的问题error-while-upgrading-azure-service-fabric-through-vsts-ci-cd ,请检查答案是否能帮助您解决问题。

我会解释一下:

每当您注册一个应用程序时,Service Fabric 都会将注册的新版本与服务器中当前的版本进行比较,如果相同的服务版本已经存在,它将比较包、配置包、代码包等打开,如果其中任何一个不匹配,部署都会失败。

其中任何一个小的更改都应该触发版本升级,例如,如果您在Setting.xml中添加或删除配置设置,则必须升级配置文件的版本和服务 list 中的版本。

之前:

app1 -------> 1.0.0
service1 -> 1.0.0
code ---> 1.0.0
config -> 1.0.0

之后

app1 -------> 1.0.1
service1 -> 1.0.1
code ---> 1.0.0
config -> 1.0.1

对于代码包也是如此,如果你同时升级代码和配置,你应该只升级服务 list 的一个版本,例如:

app1 -------> 1.0.1
service1 -> 1.0.1
code ---> 1.0.1
config -> 1.0.1

这里最棘手的挑战是代码更改,每当触发新的构建时,构建都会下载源代码并编译所有内容,您知道基于提交更改发生了什么变化,但是对于构建,所有内容都会生成一个程序集,因此它不关心它是否改变,它会生成一个新的程序集,尽管代码与之前的构建相同,但大多数情况下输出二进制文件会有所不同。

通过应用程序注册,如果版本保持相同,这些二进制文件应该与现有的相匹配,这是不会发生的。为了解决这个问题,差异化包装加入了队伍,我不会在这里提供太多细节,因为这超出了这个答案的范围,但您可以通过以下链接获取更多信息:

Service Fabric Application with a diff package

StackOverflow Question: Differential Packaging

关于azure - 在 VSTS 版本上部署 Service Fabric 服务版本升级失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316938/

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