簡體   English   中英

VSTS版本上的Service Fabric服務版本升級部署失敗

[英]Deployment for Service Fabric service version upgrade fails on VSTS Release

摘要

日志中出現以下錯誤。

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 - >構建 - >發布)

首先'提交>構建>發布'是好的。

服務結構清單版本

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代碼。 並編輯服務結構清單的驗證。

服務結構清單版本

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(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(*)

我想構建構建管道,但它是令人困惑的。


附加信息

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

並僅修改發布配置文件名稱(Cloud.xml - > Cloud.Development.xml)。

發布任務截圖 發布任務截圖

您收到的錯誤顯示錯誤消息:

PACKAGENAME'ConfigPackage服務清單內容“發生了變化,但版本號是一樣的。

這意味着:我們在這個軟件包中找到了與先前版本不匹配的東西,因為你說版本應該是相同的,它們應該匹配,所以我不知道該做什么並且會讓你解決這個問題。

這條消息不是很具有啟發性,所以乍看之下你會迷失方向。

我在這里回答了同樣的問題錯誤 - 升級 - 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

這里最棘手的挑戰是代碼更改,每當觸發新構建時,構建將下載源並編譯所有內容,您知道基於提交更改已發生的變化,但是對於構建,一切都將生成程序集,因此它不會如果它改變與否,它將生成一個新的程序集,盡管代碼與之前的構建相同,但大多數時候的輸出二進制文件將是不同的。

通過應用程序注冊,如果版本保持不變,這些二進制文件應該與現有的二進制文件相匹配,不會發生什么。 為了解決這個問題,差異化包裝加入了派對,我不會在這里提供太多細節,因為這個答案超出了范圍,但是你可以獲得有關這些鏈接的更多信息:

帶有diff包的Service Fabric應用程序

StackOverflow問題:差異化包裝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM