Min*_*nos 6 azure azure-service-fabric azure-devops azure-pipelines-release-pipeline
日志中出现以下错误.
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.
Run Code Online (Sandbox Code Playgroud)
我只更改了其中一个服务的代码,所以我只更改了清单中的一个版本的代码.
在这种情况下,通过Visual Studio进行升级没有问题.
但是,通过VSTS升级将导致上述错误.
我默认为Service Fabric创建了VSTS CI/CD.(管道:VSTS Git Repo - >构建 - >发布)
首先'提交>构建>发布'是好的.
服务结构清单版本
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
Run Code Online (Sandbox Code Playgroud)
现在,我只修复OneService代码.并编辑服务结构清单的验证.
服务结构清单版本
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
Run Code Online (Sandbox Code Playgroud)
第二次提交>构建是好的.但发布失败.日志中出现以下错误.
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.
Run Code Online (Sandbox Code Playgroud)
但我没有修改TwoService Pkg(Both Code,Config).
此外,立即通过VS2017 IDE发布到"Azure Cloud Service Fabric Cluster"是件好事.(当然,选中"升级应用程序"选项.)
目前的临时解决方案是对所有(所有pkg/code/config)进行版本升级,如下所示.
服务结构清单版本
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(*)
Run Code Online (Sandbox Code Playgroud)
我想构建构建管道,但它是令人困惑的.
我只使用默认的VSTS Service Fabric模板.
并仅修改发布配置文件名称(Cloud.xml - > Cloud.Development.xml).
错误消息提示您得到的错误:
' ConfigPackage服务清单' PackageName '中的内容已更改,但版本号相同。
这意味着:我们在此软件包中发现了与以前版本不匹配的其他地方,因为您已经说过版本应该相同,应该匹配,所以我不知道该怎么做,您可以修复该问题。
该消息不是很有启发性,因此乍看之下您会迷路。
我在这里通过vsts-ci-cd进行升级时会同时回答相同的问题,请检查答案是否可以帮助您解决问题。
我将解释更多:
每当您注册一个应用程序时,服务结构都会将正在注册的新版本与服务器中当前的版本进行比较,如果已经存在相同的服务版本,它将对程序包,配置程序包,代码程序包等进行比较。它们中的任何一个都不匹配将导致部署失败。
其中任何一个小的更改都应触发版本升级,例如,如果在Setting.xml中添加或删除配置设置,则必须升级配置文件的版本以及服务清单中的一个。
之前:
app1 -------> 1.0.0
service1 -> 1.0.0
code ---> 1.0.0
config -> 1.0.0
Run Code Online (Sandbox Code Playgroud)
后
app1 -------> 1.0.1
service1 -> 1.0.1
code ---> 1.0.0
config -> 1.0.1
Run Code Online (Sandbox Code Playgroud)
对于代码包,也会发生同样的情况,如果同时升级代码和配置,则应该仅升级服务清单一个版本,例如:
app1 -------> 1.0.1
service1 -> 1.0.1
code ---> 1.0.1
config -> 1.0.1
Run Code Online (Sandbox Code Playgroud)
这里最棘手的挑战是代码更改,每当触发一个新的构建时,该构建都会下载源代码并编译所有内容,您知道基于提交更改所做的更改,但是对于构建,所有内容都会生成一个程序集,因此它不会不管它是否更改,它都会生成一个新的程序集,尽管代码与以前的版本相同,但大多数情况下输出二进制文件会有所不同。
通过应用程序注册,如果版本保持不变,则这些二进制文件应与现有二进制文件匹配,否则不会发生。为了解决这个问题,差异包装参加了聚会,在这里我不会提供太多细节,因为超出了此答案的范围,但是您可以在以下链接上获得更多信息:
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |