日志中出现以下错误。
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.
我只更改了其中一个服务的代码,因此我只更改了清单中的一个版本的代码。
在这种情况下,通过Visual Studio进行升级没有问题。
但是,通过VSTS升级会导致上述错误。
我默认为Service Fabric创建了VSTS CI / CD。 (管道:VSTS Git Repo - > Build - > Release)
首先'提交>构建>发布'好的。
Service Fabric Manifest版本
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代码。并编辑服务结构清单的验证。
Service Fabric Manifest版本
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 / code / config)进行版本升级,如下所示。
Service Fabric Manifest版本
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)。
答案 0 :(得分:5)
您收到的错误显示错误消息:
' ConfigPackage 服务清单' PackageName '中的内容已包含 已更改,但版本号相同。
这意味着:我们在这个软件包中找到了与先前版本不匹配的东西,因为你说版本应该是相同的,它们应该匹配,所以我不知道该做什么会让你修复它。
这条消息不是很具有启发性,所以乍看之下你会迷失方向。
我在error-while-upgrading-azure-service-fabric-through-vsts-ci-cd回答了同样的问题,请检查答案是否可以帮助您解决问题。
我会再解释一下:
每当您注册一个应用程序时,服务结构会将正在注册的新版本与当前服务器中的版本进行比较,如果已经存在相同的服务版本,它将比较软件包,配置包,代码包等等。如果它们中的任何一个不匹配,它将无法部署。
其中任何一项的小改动都应该触发版本升级,例如,如果在Setting.xml中添加或删除配置设置,则必须升级配置文件的版本和服务清单中的版本。
在:
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
对于代码包,同样的情况发生,如果您同时升级代码和配置,则只应升级服务清单一个版本,如:
app1 -------> 1.0.1
service1 -> 1.0.1
code ---> 1.0.1
config -> 1.0.1
这里最棘手的挑战是代码更改,每当触发新构建时,构建将下载源并编译所有内容,您知道基于提交更改已发生了什么变化,但是对于构建,所有内容都将生成程序集,因此它不关心它是否改变,它将生成一个新的程序集,尽管代码与之前的构建相同,但大多数时候的输出二进制文件将是不同的。
通过应用程序注册,如果版本保持不变,这些二进制文件应该与现有的二进制文件相匹配,不会发生什么。为了解决这个问题,差异化包装加入了派对,我不会在这里提供太多细节,因为这个答案的范围已经超出范围,但是你可以获得有关这些链接的更多信息: