背景技術(shù):
1.背景和相關(guān)技術(shù)
計(jì)算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會(huì)的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已經(jīng)改變了我們生活和工作的方式。計(jì)算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)之前被手動(dòng)執(zhí)行的大量任務(wù)(例如,文字處理、調(diào)度、會(huì)計(jì)等)。最近,計(jì)算機(jī)系統(tǒng)已經(jīng)被彼此耦合并且被耦合到其他電子設(shè)備,以形成計(jì)算機(jī)系統(tǒng)和其他電子設(shè)備可以在其上傳送電子數(shù)據(jù)的有線和無線計(jì)算機(jī)網(wǎng)絡(luò)。因此,許多計(jì)算任務(wù)的執(zhí)行跨多個(gè)不同的計(jì)算機(jī)系統(tǒng)和/或多個(gè)不同的計(jì)算環(huán)境被分布。
為了執(zhí)行計(jì)算任務(wù),計(jì)算機(jī)系統(tǒng)運(yùn)行軟件。例如,為了提供文字處理功能,計(jì)算機(jī)系統(tǒng)運(yùn)行文字處理軟件(應(yīng)用)。軟件不斷演進(jìn),以包括更新的功能,例如,以糾正錯(cuò)誤、解決安全問題、添加特征等。軟件開發(fā)者可以不時(shí)地向他們的軟件發(fā)布包含更新的功能的更新。計(jì)算機(jī)系統(tǒng)用戶可以在它們的計(jì)算機(jī)系統(tǒng)上安裝更新,以向它們的軟件添加更新的功能。
在獨(dú)立的計(jì)算環(huán)境中(例如,在家庭用戶臺(tái)式計(jì)算機(jī)上),安裝更新是相對(duì)直截了當(dāng)?shù)倪^程。許多應(yīng)用和操作系統(tǒng)已經(jīng)內(nèi)置了使用網(wǎng)絡(luò)(例如,因特網(wǎng))連接來確定更新何時(shí)可用的更新器(其他軟件)。一些更新器在更新可用時(shí)自動(dòng)警告用戶(例如,通過用戶界面)。其他更新器至少允許用戶在他們需要時(shí)檢查更新。當(dāng)更新可用時(shí),用戶可以選擇更新,并且更新器自動(dòng)為用戶安裝更新。
在云計(jì)算環(huán)境中,應(yīng)用和操作系統(tǒng)在分布式和/或聯(lián)網(wǎng)環(huán)境中被運(yùn)行,如例如在公共和私有云中被運(yùn)行。在云計(jì)算環(huán)境中,硬件可以被配置為虛擬機(jī)(“vm”)??梢詾橹T如管理、計(jì)算、存儲(chǔ)和聯(lián)網(wǎng)之類的不同功能分配虛擬機(jī)。管理vm可以包括向客戶端或客戶提供管理功能的各種不同的互操作管理軟件應(yīng)用。管理功能可以包括對(duì)管理vm、計(jì)算vm、存儲(chǔ)vm和聯(lián)網(wǎng)vm的配置、部署、監(jiān)控和更新。
不同的開發(fā)組可以擁有并負(fù)責(zé)維護(hù)不同的管理軟件應(yīng)用。因此,針對(duì)不同管理軟件應(yīng)用發(fā)布更新的時(shí)間安排可以變化。一些開發(fā)組可以按計(jì)劃發(fā)布更新,并且其他開發(fā)組可以在自組織的基礎(chǔ)上發(fā)布更新。即使當(dāng)更新按計(jì)劃被發(fā)布時(shí),不同的開發(fā)組也可以有不同的計(jì)劃。因此,在任何給定時(shí)間,一些不同數(shù)量和種類的管理軟件應(yīng)用更新可能可用于在云計(jì)算環(huán)境中運(yùn)行的管理vm。
云計(jì)算環(huán)境中的更新也可以被手動(dòng)執(zhí)行。管理員可以標(biāo)識(shí)要安裝的多個(gè)更新,手動(dòng)制定安裝計(jì)劃(例如,如何關(guān)閉并啟動(dòng)系統(tǒng),確定用于安裝更新的指定的順序等),并且然后根據(jù)安裝計(jì)劃來安裝更新(例如,關(guān)閉并啟動(dòng)系統(tǒng),以指定的順序安裝更新等)。然而,由于管理軟件應(yīng)用必須互操作但是經(jīng)常由不同的組開發(fā),所以對(duì)一個(gè)管理軟件應(yīng)用的更新可以導(dǎo)致另一管理軟件應(yīng)用以意外的方式操作。意外的操作可能由一個(gè)開發(fā)組不知道針對(duì)另一開發(fā)組的應(yīng)用的要求、管理員的安裝計(jì)劃的問題等導(dǎo)致。
在一些云計(jì)算環(huán)境中,軟件和硬件由相同實(shí)體擁有(或至少在其控制之下)。例如,軟件公司可能具有用于員工的私有云。私有云可以包括運(yùn)行軟件的各種硬件組件,包括由軟件公司開發(fā)的各種不同的內(nèi)插管理軟件應(yīng)用。在這些云計(jì)算環(huán)境中,技術(shù)人員和工程師可以(物理和虛擬地)完全訪問硬件和軟件。完全訪問硬件和軟件使技術(shù)人員和工程師更容易些地標(biāo)識(shí)和解決管理vm處的操作問題。
在其他云計(jì)算環(huán)境中,軟件由一個(gè)實(shí)體開發(fā),并且在由各種其他不同實(shí)體管理和控制的硬件上運(yùn)行。例如,軟件公司可以開發(fā)用于管理云計(jì)算環(huán)境中的vm的管理軟件。管理軟件可以包括許多不同的互操作管理軟件應(yīng)用。各種其他第三方(例如,其他公司)可以購買和運(yùn)行不同互操作軟件應(yīng)用中的一些或全部來管理在它們控制下的硬件上運(yùn)行的vm。一些第三方可以使用管理軟件來管理在僅由公司使用的私有云中的vm。其他第三方可以使用管理軟件來管理被轉(zhuǎn)售給外部客戶的vm。在一些環(huán)境中,第三方運(yùn)行復(fù)雜的多節(jié)點(diǎn)私有云設(shè)備,其向多個(gè)租戶提供基礎(chǔ)架構(gòu)即服務(wù)(“iaas”)服務(wù)。
在這些其他云計(jì)算環(huán)境中更新管理軟件應(yīng)用通常也由管理員手動(dòng)執(zhí)行。然而,在這些其他云計(jì)算環(huán)境中,標(biāo)識(shí)和解決管理vm處的操作問題可能會(huì)困難得多。例如,不同的第三方可以在它們的硬件上安裝管理軟件應(yīng)用的不同組合。不同的第三方也可以具有不同的更新組合,并且可能還安裝了附加修復(fù)(第三方可能希望以自己的速度進(jìn)行更新)。因此,即使第三方安裝了相同的管理軟件應(yīng)用,管理軟件應(yīng)用也可能處于不同的更新并且可能安裝了不同的修復(fù)。
基于管理軟件應(yīng)用的數(shù)量以及針對(duì)每個(gè)管理軟件應(yīng)用的更新和應(yīng)用的修復(fù)的數(shù)量,非常大量的不同組合是可能的。管理軟件應(yīng)用和更新(可能還有修復(fù))的每個(gè)不同組合都可能導(dǎo)致不同的操作問題。組合的絕對(duì)數(shù)量可能使軟件開發(fā)方的技術(shù)人員和工程師更加難以標(biāo)識(shí)和解決第三方管理vm處的管理軟件操作問題。例如,甚至可能難以標(biāo)識(shí)用于管理vm的先前運(yùn)行狀態(tài)。
另外,第三方可能限制對(duì)它們的軟件、硬件和操作數(shù)據(jù)(例如,日志)的(物理和/或虛擬的)訪問。例如,第三方可能不具有網(wǎng)絡(luò)(例如,因特網(wǎng))連通性。受限的訪問可能是由于第三方或第三方的客戶的要求。例如,如果醫(yī)療保健提供方是第三方云提供商的客戶,則醫(yī)療保健提供方可能會(huì)限制那些可以訪問患者醫(yī)療保健數(shù)據(jù)的人。具有對(duì)軟件、硬件和數(shù)據(jù)中的一個(gè)或多個(gè)的受限訪問進(jìn)一步增加了技術(shù)人員和工程師在嘗試標(biāo)識(shí)和解決第三方管理vm處的管理軟件操作問題時(shí)的困難。
此外,第三方可能要求以不違反指定的服務(wù)水平協(xié)議(“sla”)的方式執(zhí)行更新。在管理軟件應(yīng)用提供方和第三方之間可以有一個(gè)sla。這一sla可以規(guī)定管理主管可以引發(fā)的最大停機(jī)時(shí)間。第三方與它的客戶之間可以有另一sla。這一另一sla規(guī)定了客戶對(duì)于其資產(chǎn)將面臨的最大停機(jī)時(shí)間。因此,任何更新以及任何必要的故障排除無法在一個(gè)或兩個(gè)sla下不造成成本的情況下關(guān)閉第三方的管理vm達(dá)任何大量時(shí)間。以不違反客戶sla的方式安裝軟件更新增加了安裝復(fù)雜性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明擴(kuò)展到用于為軟件系統(tǒng)準(zhǔn)備安裝和更新的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。各種不同的開發(fā)組管理用于軟件系統(tǒng)(例如,云設(shè)備)的多個(gè)對(duì)應(yīng)(以及可能是互操作的)軟件組件(例如,應(yīng)用、操作系統(tǒng)等)的代碼的開發(fā)。每個(gè)不同的開發(fā)組可以在不同和變化的時(shí)間發(fā)布用于它們的一個(gè)或多個(gè)對(duì)應(yīng)軟件組件的代碼改變(例如,更新和/或修復(fù))。
本發(fā)明的各方面包括創(chuàng)建軟件更新包,其可被選擇以自動(dòng)用于安裝任何數(shù)量的軟件組件的基本上任何數(shù)量的代碼改變以更新軟件系統(tǒng)。在一個(gè)方面中,軟件更新包包括:對(duì)針對(duì)多個(gè)軟件組件的代碼改變的引用以及對(duì)用于安裝代碼改變的安裝工件的引用,并且還指示多個(gè)軟件組件之間的相互依賴性。在另一方面中,軟件更新包包括對(duì)用于驗(yàn)證軟件更新包已經(jīng)將軟件系統(tǒng)轉(zhuǎn)換到目標(biāo)狀態(tài)的驗(yàn)證代碼的引用。在又一方面中,軟件更新包明確地指示在用于更新軟件系統(tǒng)的多遍安裝過程中的不同遍期間,針對(duì)不同安裝工件的安裝工件引用將被處理。
本發(fā)明的附加特征和優(yōu)點(diǎn)將在下面的描述中被闡述,并且部分地將從描述中顯而易見,或者可以通過本發(fā)明的實(shí)踐而被了解。本發(fā)明的特征和優(yōu)點(diǎn)可以通過所附權(quán)利要求中特別指出的儀器和組合而被實(shí)現(xiàn)和獲得。根據(jù)以下描述和所附權(quán)利要求,本發(fā)明的這些和其它特征將變得更加顯而易見,或者可以通過如在下文中闡述的本發(fā)明的實(shí)踐而被了解。
附圖說明
為了描述可以獲得本發(fā)明的上述和其它優(yōu)點(diǎn)和特征的方式,將通過參考在附圖中示出的其具體實(shí)現(xiàn)方式來提供對(duì)上面簡(jiǎn)要描述的本發(fā)明的更具體的描述。理解這些附圖僅描繪了本發(fā)明的一些實(shí)現(xiàn)方式并且未因此被認(rèn)為是對(duì)其范圍的限制,將通過使用附圖以附加的特征和細(xì)節(jié)來描述和說明本發(fā)明,在附圖中:
圖1示出了示出正由開發(fā)組發(fā)布的軟件改變的示例計(jì)算機(jī)架構(gòu)。
圖2示出了促進(jìn)創(chuàng)建軟件更新包的示例計(jì)算機(jī)架構(gòu)。
圖3示出了用于創(chuàng)建軟件更新包的示例方法的流程圖。
圖4示出了用于軟件更新包的物料憑單(bom)的一個(gè)示例。
圖5示出了促進(jìn)創(chuàng)建軟件安裝包和軟件更新包的示例計(jì)算機(jī)架構(gòu)。
圖6示出了用于安裝軟件更新的不同客戶的時(shí)間安排的示例。
圖7示出了促進(jìn)創(chuàng)建用于經(jīng)驗(yàn)證的目標(biāo)狀態(tài)之間的線性進(jìn)展的軟件更新包的示例計(jì)算機(jī)架構(gòu)。
圖8示出了用于創(chuàng)建用于經(jīng)驗(yàn)證的目標(biāo)狀態(tài)之間的線性進(jìn)展的軟件更新包的示例方法的流程圖。
圖9示出了促進(jìn)創(chuàng)建用于在多遍安裝中使用的軟件更新包的示例計(jì)算機(jī)架構(gòu)。
圖10示出了用于創(chuàng)建用于在多遍安裝中使用的軟件更新包的示例方法的流程圖。
圖11示出了描繪用于更新云設(shè)備的數(shù)據(jù)流的示例計(jì)算機(jī)架構(gòu)。
具體實(shí)施方式
本發(fā)明擴(kuò)展到用于為軟件系統(tǒng)準(zhǔn)備安裝和更新的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。各種不同的開發(fā)組管理用于軟件系統(tǒng)(例如,云設(shè)備)的多個(gè)對(duì)應(yīng)(以及可能是互操作的)軟件組件(例如,應(yīng)用、操作系統(tǒng)等)的代碼的開發(fā)。每個(gè)不同的開發(fā)組可以在不同和變化的時(shí)間發(fā)布用于它們的一個(gè)或多個(gè)對(duì)應(yīng)軟件組件的代碼改變(例如,更新和/或修復(fù))。
本發(fā)明的各方面包括創(chuàng)建軟件更新包,其可被選擇以自動(dòng)安裝用于任何數(shù)量的軟件組件的基本上任何數(shù)量的代碼改變以更新軟件系統(tǒng)。在一個(gè)方面中,軟件更新包包括:對(duì)用于多個(gè)軟件組件的代碼改變的引用以及對(duì)用于安裝代碼改變的安裝工件的引用,并且還指示多個(gè)軟件組件之間的相互依賴性。在另一方面中,軟件更新包包括對(duì)用于驗(yàn)證軟件更新包已經(jīng)將軟件系統(tǒng)轉(zhuǎn)換到目標(biāo)狀態(tài)的驗(yàn)證代碼的引用。在又一方面中,軟件更新包明確地指示在用于更新軟件系統(tǒng)的多遍安裝過程中的不同遍期間,針對(duì)不同安裝工件的安裝工件引用將被處理。
本發(fā)明的實(shí)現(xiàn)方式可以包括或利用包括計(jì)算機(jī)硬件(如例如一個(gè)或多個(gè)處理器和系統(tǒng)存儲(chǔ)器,如在下面更詳細(xì)地討論的)的專用或通用的計(jì)算機(jī)。本發(fā)明的范圍內(nèi)的實(shí)施方式還包括用于攜帶或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他的計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)。攜帶計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。因此,通過示例而非限制,本發(fā)明的實(shí)現(xiàn)方式可以包括至少兩種明顯不同種類的計(jì)算機(jī)可讀介質(zhì):計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)和傳輸介質(zhì)。
計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)包括ram、rom、eeprom、cd-rom、固態(tài)驅(qū)動(dòng)(“ssd”)(例如,基于ram)、閃存、相變存儲(chǔ)器(“pcm”)、其他類型的存儲(chǔ)器、其他光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其他磁存儲(chǔ)設(shè)備,或者可以用來以計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式存儲(chǔ)所需程序代碼,并且可以被通用或?qū)S玫挠?jì)算機(jī)訪問的任何其他介質(zhì)。
“網(wǎng)絡(luò)”被定義為使能計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間的電子數(shù)據(jù)的傳送的一個(gè)或多個(gè)數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連接(硬連線、無線或硬連線或無線的組合)而被傳送或提供給計(jì)算機(jī)時(shí),計(jì)算機(jī)將連接正確地視為傳輸介質(zhì)。傳輸介質(zhì)可以包括網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路,其可以用于以計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式攜帶期望的程序代碼裝置,并且可以被通用或?qū)S玫挠?jì)算機(jī)訪問。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
另外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式的程序代碼裝置可以從傳輸介質(zhì)被自動(dòng)地傳送給計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可以被緩沖在網(wǎng)絡(luò)接口模塊(例如,“nic”)內(nèi)的ram中,并且然后最終被傳送給計(jì)算機(jī)系統(tǒng)ram和/或被傳送給計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)。因此,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)(設(shè)備)可以被包括在還(甚至主要)利用傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。
計(jì)算機(jī)可執(zhí)行指令包括例如當(dāng)在處理器處被執(zhí)行時(shí)使通用計(jì)算機(jī)、專用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或一組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以例如是二進(jìn)制文件,諸如匯編語言之類的中間格式指令,或者甚至是源代碼。雖然已經(jīng)用特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語言描述了主題內(nèi)容,但是將理解,在所附權(quán)利要求中限定的主題不一定限于上面所描述的特征或動(dòng)作。相反,所描述的特征和動(dòng)作被公開為實(shí)現(xiàn)權(quán)利要求的示例形式。
本領(lǐng)域技術(shù)人員將領(lǐng)會(huì)到,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中被實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持設(shè)備、可穿戴設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)pc、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話,pda、平板計(jì)算機(jī)、尋呼機(jī)、手表、路由器、交換機(jī)等。本發(fā)明還可以在分布式系統(tǒng)環(huán)境中被實(shí)踐,其中通過網(wǎng)絡(luò)(通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或通過硬連線和無線數(shù)據(jù)鏈路的組合)而被鏈接的本地和遠(yuǎn)程的計(jì)算機(jī)系統(tǒng)都執(zhí)行任務(wù)。在分布式系統(tǒng)環(huán)境中,程序模塊可能位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。
本發(fā)明還可以在云計(jì)算環(huán)境中被實(shí)現(xiàn)。在本說明書和所附權(quán)利要求中,“云計(jì)算”被定義為用于使能對(duì)可配置計(jì)算資源的共享池的按需網(wǎng)絡(luò)訪問的模型。例如,云計(jì)算可以在市場(chǎng)中用來提供對(duì)可配置計(jì)算資源的共享池的無處不在和便利的按需訪問??膳渲糜?jì)算資源的共享池可以經(jīng)由虛擬化被快速提供,并以低管理工作量或服務(wù)提供方交互而被發(fā)布,并且然后被相應(yīng)地縮放。
云計(jì)算模型可以由各種特性組成,這些特性例如是按需自助服務(wù)、寬帶網(wǎng)絡(luò)訪問、資源池、快速彈性、測(cè)量的服務(wù)等等。云計(jì)算模型還可以揭示各種服務(wù)模型,例如,軟件即服務(wù)(“saas”)、平臺(tái)即服務(wù)(“paas”)以及基礎(chǔ)架構(gòu)即服務(wù)(“iaas”)。還可以使用諸如私有云、社區(qū)云、公共云、混合云等的不同部署模型來部署云計(jì)算模型。在本說明書和權(quán)利要求書中,“云計(jì)算環(huán)境”是其中采用云計(jì)算的環(huán)境。
在本說明書和所附權(quán)利要求中,“云設(shè)備”被定義為運(yùn)行一個(gè)或多個(gè)(例如,預(yù)配置的)軟件組件的計(jì)算機(jī)系統(tǒng)(例如,商用硬件)。在一些方面中,云設(shè)備是安裝有虛擬機(jī)(vm)映像的計(jì)算機(jī)系統(tǒng)。虛擬機(jī)映像文件可以包括一個(gè)或多個(gè)(預(yù))配置的軟件組件。
圖1示出了示例計(jì)算機(jī)架構(gòu)100,其示出正被開發(fā)組發(fā)布的軟件更改(例如,更新和/或修復(fù))。如所示,開發(fā)組101包括開發(fā)組101a、101b、101c等。開發(fā)組101a、101b、101c等中的每一個(gè)可以負(fù)責(zé)以下各項(xiàng)中的一項(xiàng)或多項(xiàng):開發(fā)、維護(hù)和更新在軟件系統(tǒng)(例如,云設(shè)備)上運(yùn)行的軟件組件。例如,開發(fā)組101a可以負(fù)責(zé)軟件組件102a,開發(fā)組101b可以負(fù)責(zé)軟件組件102b,開發(fā)組101c可以負(fù)責(zé)軟件組件102c,等等。
為了維護(hù)軟件組件,開發(fā)組可以發(fā)布對(duì)軟件組件的改變。不同的開發(fā)組可以在不同和變化的時(shí)間發(fā)布對(duì)它們的軟件組件的改變。
在圖1中,時(shí)間從左邊(更早的時(shí)間)進(jìn)行到右邊(稍后的時(shí)間)。因此,隨著時(shí)間,開發(fā)組101a發(fā)布對(duì)軟件組件102a的各種改變,包括更新103a,隨后是修復(fù)104a,隨后是修復(fù)106a,隨后是更新107a。類似地,隨著時(shí)間,開發(fā)組101b發(fā)布對(duì)軟件組件102b的各種改變,包括修復(fù)103b,隨后是更新104b。同樣地,隨著時(shí)間,開發(fā)組101c發(fā)布對(duì)軟件組件102c的各種改變,包括修復(fù)103c,隨后是更新104c,隨后是更新106c。
這樣,在任何給定的時(shí)間,各種不同的改變組合可以可用于不同的軟件組件。在時(shí)間t1,更新103a和修復(fù)103c可用。稍后在時(shí)間t2,更新103a、修復(fù)104a、修復(fù)106a、修復(fù)103b、更新104b、修復(fù)103c和更新104c可用。隨著時(shí)間的進(jìn)展,其他更新和/或修復(fù)可能變得可用。
在t2和t3之間的某個(gè)時(shí)間,可以發(fā)出構(gòu)建命令111。構(gòu)建命令111可以是用來構(gòu)建新的軟件更新包的手動(dòng)或自動(dòng)的命令。
轉(zhuǎn)到圖2,圖2示出了促進(jìn)創(chuàng)建軟件安裝包的示例計(jì)算機(jī)架構(gòu)200。參考圖2,計(jì)算機(jī)架構(gòu)200包括構(gòu)建系統(tǒng)201。構(gòu)建系統(tǒng)201可以被連接到網(wǎng)絡(luò)(或者是網(wǎng)絡(luò)的一部分),網(wǎng)絡(luò)如例如是局域網(wǎng)(“l(fā)an”)、廣域網(wǎng)(“wan”)以及甚至因特網(wǎng)。因此,構(gòu)建系統(tǒng)201以及任何其他連接的計(jì)算機(jī)系統(tǒng)以及它們的組件可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)來交換消息相關(guān)數(shù)據(jù)(例如,因特網(wǎng)協(xié)議(“ip”)數(shù)據(jù)報(bào)和利用ip數(shù)據(jù)報(bào)的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“tcp”)、超文本傳輸協(xié)議(“http”)、簡(jiǎn)單郵件傳輸協(xié)議(“smtp”)等,或使用其他非數(shù)據(jù)報(bào)協(xié)議)。
如所示,構(gòu)建系統(tǒng)201還包括物料憑單生成器202和清單生成器203。通常,物料憑單生成器202被配置為生成用于包括在軟件更新包中的物料憑單(bom)。類似地,清單生成器203被配置為生成用于包括在軟件更新包中的清單。
物料憑單生成器202可以生成為了將軟件系統(tǒng)(例如,云設(shè)備)帶到下一版本而要被應(yīng)用的改變的列表。為了便于單擊升級(jí),物料憑單(bom)被設(shè)計(jì)為累積的。在構(gòu)建過程中,物料憑單生成器202掃描訪問的改變(例如,更新和修復(fù))以自動(dòng)生成要被應(yīng)用的更新的列表。
與用于軟件組件的代碼改變一起,開發(fā)組還可以使用于軟件組件的安裝工件(例如,安裝工件204a、204b、204c)和組件依賴性(例如,組件依賴性206a、206b、206c)可用于構(gòu)建系統(tǒng)201。
清單生成器203可以生成包括清單,清單用來安裝bom中的列出的更新的安裝工件(例如,安裝腳本)的列表并且描述軟件組件之間的組件間依賴性。在構(gòu)建過程期間,清單生成器203掃描提供的安裝工件和組件依賴性。清單生成器203可以使用提供的安裝工件來生成用于安裝列出的更新的安裝工件的列表。清單生成器203還可以分析提供的組件依賴性以標(biāo)識(shí)組件間依賴性。
圖3示出了用于創(chuàng)建軟件更新包的示例方法300的流程圖。將關(guān)于計(jì)算機(jī)架構(gòu)200的組件和數(shù)據(jù)來描述方法300。
方法300包括收集用于更新云設(shè)備的多個(gè)代碼改變,多個(gè)代碼改變包括針對(duì)多個(gè)軟件組件中的每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變,針對(duì)每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變已經(jīng)被用于軟件組件的管理開發(fā)組發(fā)布(301)。例如,響應(yīng)于構(gòu)建命令111,構(gòu)建系統(tǒng)201可以收集用于更新包括軟件組件102a、102b和102c的云設(shè)備的更新103a、修復(fù)104a、修復(fù)106a、修復(fù)103b、更新104b、修復(fù)103c和更新104c。
方法300包括為云設(shè)備創(chuàng)建軟件更新包,軟件更新包用于安裝多個(gè)代碼改變,以使云設(shè)備從一個(gè)或多個(gè)先前狀態(tài)中的任何先前狀態(tài)達(dá)到目標(biāo)狀態(tài)(302)。例如,構(gòu)建系統(tǒng)201可以創(chuàng)建軟件更新包211。軟件更新包211可以用于安裝更新103a、修復(fù)104a、修復(fù)106a、修復(fù)103b、更新104b、修復(fù)103c和更新104c以使包括軟件組件102a、102b和102c的云設(shè)備達(dá)到目標(biāo)狀態(tài)。
從云設(shè)備創(chuàng)建軟件包包括為軟件更新包版本制定物料憑單(bom),軟件更新包版本是用于更新云設(shè)備的多個(gè)軟件更新包版本的線性進(jìn)展中的下一版本,線性進(jìn)展中的一個(gè)或多個(gè)先前版本對(duì)應(yīng)于一個(gè)或多個(gè)先前狀態(tài),物料憑單(bom)指示對(duì)云設(shè)備的適用性以及如何訪問多個(gè)代碼改變(303)。例如,物料憑單生成器202可以制定物料憑單(bom)212。物料憑單212包括版本214和代碼引用216。版本214是用于更新包括軟件組件102a、102b和102c的云設(shè)備的軟件更新包版本的線性進(jìn)展中的下一版本。這樣,構(gòu)建系統(tǒng)201可能先前已經(jīng)創(chuàng)建了用于更新包括軟件組件102a、102b和102c的云設(shè)備的其他軟件更新包。例如,構(gòu)建系統(tǒng)201可能先前已經(jīng)在t1之后不久基于更新103a和修復(fù)103c來創(chuàng)建了軟件更新包。當(dāng)被安裝時(shí),這一先前軟件更新包將使包括軟件組件102a、102b和102c的云設(shè)備達(dá)到一個(gè)或多個(gè)先前狀態(tài)中的一個(gè)先前狀態(tài)。
物料憑單生成器202可以掃描更新103a、修復(fù)104a、修復(fù)106a、修復(fù)103b、更新104b、修復(fù)103c和更新104c以自動(dòng)生成代碼引用216。代碼引用216包括用于訪問代碼改變的引用。例如,引用216a可以對(duì)應(yīng)于用于更新103a的位置,引用216b可以對(duì)應(yīng)于用于修復(fù)104a的位置,引用216c可以對(duì)應(yīng)于用于修復(fù)106a的位置,引用216d可以對(duì)應(yīng)于用于修復(fù)103b的位置,等等。在一個(gè)方面中,當(dāng)用于代碼改變的明確引用未被包括時(shí),安裝系統(tǒng)可以被配置為檢查用于代碼改變的外部默認(rèn)位置。在另一方面中,當(dāng)用于代碼改變的明確引用未被包括時(shí),安裝系統(tǒng)可以檢查附加到軟件更新包的有效載荷。
簡(jiǎn)要地轉(zhuǎn)到圖4,圖4示出了用于軟件更新包的物料憑單(bom)400的示例。在bom400內(nèi),框401指示用于bom400的版本。框402指示用于“subsystem1”和“subsystem2”的代碼改變被包括在包含bom400的軟件更新包中???03指示“subsystem3”的代碼改變未被包括在包含bom400的軟件更新包中。由于沒有指出其他明確的引用,所以安裝系統(tǒng)可以檢查外部默認(rèn)位置(例如,更新網(wǎng)站)以尋找用于subsystem3的代碼改變???04指示用于“subsystem4”的代碼改變不在附加的有效載荷中。明確的引用指示用于subsystem4的代碼改變可以從https://www.updateappliance.com/updates/1.exe被下載并保存到“\\source\downloadedupdates\3rd-party\”。
回到圖3,從云設(shè)備創(chuàng)建軟件包包括制定清單。清單包括對(duì)用于安裝多個(gè)代碼改變的管理工件的引用并指示來自多個(gè)代碼改變的代碼改變之中的相互依賴性(304)。例如,清單生成器203可以制定清單213。清單213包括安裝工件引用217和組件間依賴性218。通常,管理工件可以包括安裝腳本、運(yùn)行手冊(cè)、映像、包、管理包、驗(yàn)證包等。
清單生成器213可以掃描安裝工件204a、204b和204c以生成安裝工件引用217。安裝工件引用217中的每個(gè)引用可以指代用于對(duì)應(yīng)代碼改變的安裝工件。例如,引用217a可以指代用于更新103a的安裝工件,引用217b可以指代用于修復(fù)104a的安裝工件,引用217c可以指代用于修復(fù)106a的安裝工件,引用217d可以指代用于修復(fù)103b的安裝工件,等等
清單生成器213還可以分析組件依賴性206a、206b和206c以確定組件間依賴性218。組件間依賴性218可以描述軟件組件102a、102b和102c之間的依賴性。
從云設(shè)備創(chuàng)建軟件包包括將憑單或物料和清單包括在軟件更新包中(305)。例如,構(gòu)建系統(tǒng)201可以將物料憑單(bom)212和清單213包括在軟件更新包211中。
在適當(dāng)時(shí),構(gòu)建系統(tǒng)201還可以將有效載荷219包括在軟件更新包212中。有效載荷219可以包括代碼改變,如例如以下各項(xiàng)中的一項(xiàng)或多項(xiàng):103a、修復(fù)104a、修復(fù)106a、修復(fù)103b、更新104b、修復(fù)103c和更新104c。
方法300包括使軟件更新包可用,從而使得運(yùn)行云設(shè)備的實(shí)體可以使云設(shè)備從一個(gè)或多個(gè)先前狀態(tài)中的任何先前狀態(tài)更新到目標(biāo)狀態(tài)(306)。例如,構(gòu)建系統(tǒng)201可以將軟件更新包211存儲(chǔ)在用于軟件更新的已知位置中。已知位置可以包括例如zip驅(qū)動(dòng)器、更新服務(wù)器、更新目錄、更新網(wǎng)站、可移動(dòng)盤等。
在一個(gè)方面中,構(gòu)建系統(tǒng)響應(yīng)于構(gòu)建命令來與軟件更新包一起生成對(duì)應(yīng)軟件安裝包。軟件安裝包可以用來在硬件上安裝云設(shè)備的實(shí)例。軟件更新包可以是已經(jīng)被安裝在硬件上的云設(shè)備的使用的更新實(shí)例。軟件安裝包和軟件更新包均被配置為使云設(shè)備達(dá)到基本相同的目標(biāo)狀態(tài)。
在另一方面中,中間登臺(tái)(staging)服務(wù)器和/或構(gòu)建服務(wù)器可以用來使代碼改變登臺(tái),或?yàn)閱为?dú)軟件組件構(gòu)建更新/修復(fù)??梢允勾a登臺(tái),并且在用于云設(shè)備的更復(fù)雜的安裝/更新版本之間為單獨(dú)軟件組件構(gòu)造更新/修復(fù)。
圖5示出了促進(jìn)創(chuàng)建軟件安裝包和軟件更新包的示例計(jì)算機(jī)架構(gòu)500。如所示,操作系統(tǒng)開發(fā)組501、開發(fā)組502和開發(fā)組503可以向云設(shè)備構(gòu)建系統(tǒng)504提交更新/修復(fù)??梢詫⒉僮飨到y(tǒng)更新511加載到登臺(tái)服務(wù)器521。更新/修復(fù)512可以被登記以構(gòu)建服務(wù)器522。更新/修復(fù)513可以被登記到構(gòu)建服務(wù)器523。
操作系統(tǒng)更新511可以被同步到登臺(tái)服務(wù)器531。可以用包構(gòu)建器506從登臺(tái)服務(wù)器531登記操作系統(tǒng)更新511。類似地,可以用包構(gòu)建器506分別從構(gòu)建服務(wù)器522和523登記更新/修復(fù)512和更新/修復(fù)513。(用于云設(shè)備的)配置更新/改變514也可以用包構(gòu)建器506被登記。響應(yīng)于構(gòu)建命令,包構(gòu)建器506可以基于操作系統(tǒng)更新511、更新/修復(fù)512、更新/修復(fù)513以及配置更新/改變514來為云設(shè)備構(gòu)建安裝包507和更新包505。
通常,構(gòu)建系統(tǒng)可以按照線性進(jìn)展來發(fā)布軟件更新版本,并且可以跟蹤每個(gè)軟件更新版本的目標(biāo)狀態(tài)。構(gòu)建系統(tǒng)還可以考慮跨越軟件更新版本的軟件組件的代碼改變的累積影響。當(dāng)按照線性進(jìn)展創(chuàng)建軟件更新版本時(shí),構(gòu)建系統(tǒng)可以確定如何使云設(shè)備從任何先前軟件更新版本的目標(biāo)狀態(tài)達(dá)到正被構(gòu)建的軟件更新版本的目標(biāo)狀態(tài)。
這樣,安裝包507和更新包508中的每一個(gè)被配置為使云設(shè)備達(dá)到相同的目標(biāo)狀態(tài)。附加地,更新包508可以被配置為獨(dú)立于云設(shè)備的先前狀態(tài)來使云設(shè)備達(dá)到相同的目標(biāo)狀態(tài)。
例如,云設(shè)備的第一實(shí)例可以處于通過安裝在更新包508之前兩個(gè)或更多個(gè)版本的更新包而被達(dá)到的先前狀態(tài)。云設(shè)備的第二實(shí)例可以處于通過安裝緊接在更新包508之前的版本的更新包而被達(dá)到的不同的先前狀態(tài)。在云設(shè)備的第一實(shí)例或第二實(shí)例中的任一個(gè)上安裝更新包508將導(dǎo)致轉(zhuǎn)換到用于更新包508的目標(biāo)狀態(tài)。這樣,客戶具有增加的靈活性以選擇何時(shí)應(yīng)用更新。
圖6示出了用于安裝軟件更新的不同客戶的時(shí)間安排的示例。在圖6中,時(shí)間從左邊(更早的時(shí)間)進(jìn)行到右邊(稍后的時(shí)間)。版本601在版本602之前被發(fā)布。版本602在版本603之前被發(fā)布。版本603在版本604之前被發(fā)布。然而,如所示,每個(gè)客戶選擇以不同的速度進(jìn)行更新甚至跳過版本。
如所示,客戶611和612安裝版本601??蛻?11在版本603的發(fā)布之前從版本601更新到版本602。另一方面,客戶612在版本603的發(fā)布之后從版本601更新到版本602。
客戶614安裝版本602??蛻?14跳過版本603而從版本602更新到版本604。類似地,客戶611跳過版本603而從版本602更新到版本604。客戶613安裝版本603并且不更新到版本604。客戶612在版本604被發(fā)布之后從版本602更新到版本603。
軟件更新包可以引用和/或包括用于驗(yàn)證對(duì)一個(gè)或多個(gè)軟件組件的改變的驗(yàn)證代碼。在一個(gè)方面中,用于驗(yàn)證對(duì)軟件組件的代碼改變(例如,更新或修復(fù))的驗(yàn)證代碼被包括在用于軟件組件的安裝工件中(例如,在安裝工件204a、204b、204c等中)。在另一方面中,用于驗(yàn)證對(duì)軟件組件的代碼改變的驗(yàn)證代碼與用于軟件組件的安裝工件分離。用于軟件組件的驗(yàn)證代碼可能由維護(hù)軟件組件的開發(fā)組維護(hù)或者可能不由其維護(hù)。在用于軟件組件的代碼改變被實(shí)現(xiàn)之后,驗(yàn)證代碼可以被運(yùn)行以驗(yàn)證代碼改變是否被正確實(shí)現(xiàn)。
類似的驗(yàn)證代碼可以用來驗(yàn)證軟件組件的初始安裝。在軟件組件被安裝之后,驗(yàn)證代碼可以被運(yùn)行以驗(yàn)證安裝是否被正確實(shí)現(xiàn)。
構(gòu)建系統(tǒng)還可以制定用于驗(yàn)證軟件更新包或軟件安裝包的內(nèi)容使云設(shè)備達(dá)到指示的目標(biāo)狀態(tài)的附加驗(yàn)證代碼。在單獨(dú)軟件組件的安裝和/或用于單獨(dú)軟件組件的代碼改變被驗(yàn)證之后,附加的驗(yàn)證代碼可以被運(yùn)行以驗(yàn)證云設(shè)備達(dá)到目標(biāo)狀態(tài)。在一個(gè)方面中,附加的驗(yàn)證代碼用來驗(yàn)證通過構(gòu)建系統(tǒng)分析而被標(biāo)識(shí)(并且可能未由開發(fā)組另外指出)的組件間依賴性。
這樣,軟件更新包可以通過經(jīng)驗(yàn)證狀態(tài)的線性進(jìn)展而進(jìn)展。由于先前狀態(tài)被驗(yàn)證并且構(gòu)建系統(tǒng)可以跟蹤先前狀態(tài),所以可能用于云設(shè)備的軟件組件的不同組合和版本的數(shù)量被顯著減少。減少的狀態(tài)數(shù)量轉(zhuǎn)而降低了從先前狀態(tài)進(jìn)展到目標(biāo)狀態(tài)的復(fù)雜性(即使當(dāng)與線性進(jìn)展中的一個(gè)或多個(gè)中間狀態(tài)對(duì)應(yīng)的軟件更新包未被使用時(shí))。減少的狀態(tài)數(shù)量也降低了測(cè)試負(fù)擔(dān)。
轉(zhuǎn)到圖7,圖7示出了促進(jìn)創(chuàng)建用于經(jīng)驗(yàn)證的目標(biāo)狀態(tài)之間的線性進(jìn)展的軟件更新包的示例計(jì)算機(jī)架構(gòu)700。參考圖7,計(jì)算機(jī)架構(gòu)700包括構(gòu)建系統(tǒng)701。構(gòu)建系統(tǒng)701可以被連接到網(wǎng)絡(luò)(或者是其一部分),網(wǎng)絡(luò)例如是局域網(wǎng)(“l(fā)an”)、廣域網(wǎng)(“wan”)以及甚至因特網(wǎng)。因此,構(gòu)建系統(tǒng)701以及任何其他連接的計(jì)算機(jī)系統(tǒng)以及它們的組件可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)來交換消息相關(guān)數(shù)據(jù)(例如,因特網(wǎng)協(xié)議(“ip”)數(shù)據(jù)報(bào)和利用ip數(shù)據(jù)報(bào)的其它更高層協(xié)議,諸如傳輸控制協(xié)議(“tcp”)、超文本傳輸協(xié)議(“http”)、簡(jiǎn)單郵件傳輸協(xié)議(“smtp”)等,或使用其他非數(shù)據(jù)報(bào)協(xié)議)。
通常,構(gòu)建系統(tǒng)701可以構(gòu)建用于驗(yàn)證云設(shè)備到目標(biāo)狀態(tài)的進(jìn)展的軟件更新包。構(gòu)建系統(tǒng)701被配置為訪問來自用于在云設(shè)備中使用的軟件組件的開發(fā)組的代碼改變(例如,更新和/或修復(fù))。構(gòu)建系統(tǒng)701還被配置為訪問用于驗(yàn)證訪問的代碼改變的正確實(shí)現(xiàn)的驗(yàn)證代碼。構(gòu)建系統(tǒng)701還被配置為訪問針對(duì)用于云設(shè)備的一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)的狀態(tài)數(shù)據(jù)。通過實(shí)現(xiàn)先前構(gòu)建的軟件更新包來更新云設(shè)備,云服務(wù)可以通過一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)來線性地進(jìn)展。根據(jù)訪問的代碼改變、訪問的驗(yàn)證代碼和訪問的狀態(tài)數(shù)據(jù),構(gòu)建系統(tǒng)701可以構(gòu)建用于驗(yàn)證軟件設(shè)備從一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)中的任何先前驗(yàn)證狀態(tài)到目標(biāo)狀態(tài)的線性進(jìn)展的軟件更新包。
圖8示出了用于800創(chuàng)建用于經(jīng)驗(yàn)證的目標(biāo)狀態(tài)之間的線性進(jìn)展的軟件更新包的示例方法的流程圖。將針對(duì)計(jì)算機(jī)架構(gòu)700的組件和數(shù)據(jù)來描述方法800。
方法800包括收集用于更新云設(shè)備的多個(gè)代碼改變,多個(gè)代碼改變包括針對(duì)多個(gè)軟件組件中的每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變,針對(duì)每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變已經(jīng)被軟件組件的管理開發(fā)組發(fā)布(801)。例如,構(gòu)建系統(tǒng)701可以從開發(fā)組702收集代碼改變711。開發(fā)組702中的每個(gè)開發(fā)組可以管理要在云設(shè)備處被更新的軟件組件。
方法800包括為云設(shè)備創(chuàng)建軟件更新包,軟件更新包用于安裝多個(gè)代碼改變,以使云設(shè)備從一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)中的任何先前驗(yàn)證狀態(tài)達(dá)到目標(biāo)狀態(tài)(802)。例如,構(gòu)建系統(tǒng)701可以構(gòu)建軟件更新包721。軟件更新包721可以用于在云設(shè)備處實(shí)現(xiàn)代碼改變711,以使云設(shè)備從一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)中的任何先前驗(yàn)證狀態(tài)達(dá)到目標(biāo)狀態(tài)726。
為云設(shè)備創(chuàng)建軟件更新包包括標(biāo)識(shí)指示如何訪問多個(gè)代碼改變的代碼改變引用(803)。例如,構(gòu)建系統(tǒng)701可以標(biāo)識(shí)指示如何訪問代碼改變711的代碼改變引用。為云設(shè)備創(chuàng)建軟件更新包包括分析多個(gè)代碼改變以標(biāo)識(shí)多個(gè)軟件組件之間的組件間依賴性(804)。例如,構(gòu)建系統(tǒng)701可以分析代碼改變711(可能連同其他開發(fā)者提供方信息)以標(biāo)識(shí)由開發(fā)組702管理的軟件組件之間的組件間依賴性723。
為云設(shè)備創(chuàng)建軟件更新包包括訪問用于一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)的狀態(tài)數(shù)據(jù)(805)。例如,構(gòu)建系統(tǒng)701可以訪問狀態(tài)數(shù)據(jù)717。狀態(tài)數(shù)據(jù)717可以用于云設(shè)備的一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)。
為云設(shè)備創(chuàng)建軟件更新包包括標(biāo)識(shí)用于驗(yàn)證軟件更新包的實(shí)現(xiàn)使云設(shè)備達(dá)到目標(biāo)狀態(tài)的驗(yàn)證代碼,驗(yàn)證代碼基于訪問的狀態(tài)數(shù)據(jù)和標(biāo)識(shí)的組件間依賴性而被標(biāo)識(shí)(806)。例如,構(gòu)建系統(tǒng)701可以基于狀態(tài)數(shù)據(jù)717和組件間依賴性723來標(biāo)識(shí)以下各項(xiàng)中的一項(xiàng)或多項(xiàng)中的相關(guān)部分:(由開發(fā)組702提供的)驗(yàn)證代碼717和(從其他源提供的)驗(yàn)證代碼714。驗(yàn)證代碼的標(biāo)識(shí)的部分可以用來驗(yàn)證軟件更新包721使云設(shè)備達(dá)到目標(biāo)狀態(tài)726。
構(gòu)建系統(tǒng)701還可以管理驗(yàn)證代碼716。當(dāng)構(gòu)建系統(tǒng)701檢測(cè)到其他驗(yàn)證代碼不足以驗(yàn)證軟件更新包時(shí),構(gòu)建系統(tǒng)701可以創(chuàng)建或修改驗(yàn)證代碼716以補(bǔ)充其他驗(yàn)證代碼。
為云設(shè)備創(chuàng)建軟件更新包包括參考標(biāo)識(shí)的驗(yàn)證代碼來制定驗(yàn)證代碼引用(807)。例如,構(gòu)建系統(tǒng)701可以參考驗(yàn)證代碼712、驗(yàn)證代碼714和驗(yàn)證代碼716中的一項(xiàng)或多項(xiàng)中的標(biāo)識(shí)的部分來制定驗(yàn)證代碼引用724。
為云設(shè)備創(chuàng)建軟件更新包包括將代碼改變引用、組件間依賴性、驗(yàn)證代碼引用和目標(biāo)狀態(tài)包括在軟件更新包中(808)。例如,構(gòu)建系統(tǒng)701可以將代碼改變引用732、組件間依賴性723、驗(yàn)證代碼引用724和目標(biāo)狀態(tài)726包括在軟件更新包731中。在適當(dāng)時(shí),構(gòu)建系統(tǒng)701還可以將有效載荷727包括在軟件更新包721中。有效載荷727可以包含代碼改變和/或驗(yàn)證代碼。
方法800包括使軟件更新包可用,從而使得運(yùn)行云設(shè)備的實(shí)體可以驗(yàn)證軟件更新包的實(shí)現(xiàn)使云設(shè)備從一個(gè)或多個(gè)先前驗(yàn)證狀態(tài)中的任何先前驗(yàn)證狀態(tài)達(dá)到目標(biāo)狀態(tài)(809)。例如,構(gòu)建系統(tǒng)701可以將軟件更新包721存儲(chǔ)在用于軟件更新的已知位置中。已知位置可以包括例如更新目錄、更新網(wǎng)站、可移動(dòng)盤等。
類似于方法800的方法也可以用來創(chuàng)建軟件安裝包。
在一些方中面,軟件更新包被創(chuàng)建以用于在多遍安裝過程中使用。多遍過程中的每遍可以執(zhí)行用于安裝軟件更新并驗(yàn)證軟件更新的工作的一部分。用于每個(gè)軟件組件的安裝工件可以具有針對(duì)多遍安裝過程中的不同遍而被定制的代碼。定制的代碼可以指定要針對(duì)多遍過程中的每遍而被執(zhí)行的動(dòng)作。在一個(gè)方面中,多遍過程中的各遍包括預(yù)驗(yàn)證遍、更新遍和測(cè)試遍。
轉(zhuǎn)到圖9,圖9示出了促進(jìn)創(chuàng)建用于在多遍安裝中使用的軟件更新包的示例計(jì)算機(jī)架構(gòu)900。參考圖9,計(jì)算機(jī)架構(gòu)900包括構(gòu)建系統(tǒng)901。構(gòu)建系統(tǒng)901可以被連接到網(wǎng)絡(luò)(或者是網(wǎng)絡(luò)的一部分),網(wǎng)絡(luò)如例如是局域網(wǎng)(“l(fā)an”)、廣域網(wǎng)(“wan”)以及甚至因特網(wǎng)。因此,構(gòu)建系統(tǒng)901以及任何其他連接的計(jì)算機(jī)系統(tǒng)以及它們的組件可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)來交換消息相關(guān)數(shù)據(jù)(例如,因特網(wǎng)協(xié)議(“ip”)數(shù)據(jù)報(bào)和利用ip數(shù)據(jù)報(bào)的其它更高層協(xié)議,諸如傳輸控制協(xié)議(“tcp”)、超文本傳輸協(xié)議(“http”)、簡(jiǎn)單郵件傳輸協(xié)議(“smtp”)等,或使用其他非數(shù)據(jù)報(bào)協(xié)議)。
通常,構(gòu)建系統(tǒng)901可以構(gòu)建用于在多遍安裝中使用的軟件更新包。構(gòu)建系統(tǒng)901被配置為訪問來自用于在云設(shè)備中使用的軟件組件的開發(fā)組的代碼改變(例如,更新和/或修復(fù))。構(gòu)建系統(tǒng)901還被配置為訪問用于安裝訪問的代碼改變的安裝工件。構(gòu)建系統(tǒng)901可以標(biāo)識(shí)針對(duì)多遍安裝中的指定遍而被定制的安裝工件。構(gòu)建系統(tǒng)901可以在軟件更新中將針對(duì)指定遍而被定制的安裝工件引用分組在一起。根據(jù)訪問的代碼改變和訪問的安裝工件,構(gòu)建系統(tǒng)901可以構(gòu)建用于在多遍安裝中使用的軟件更新包。
圖10示出了用于創(chuàng)建用于在多遍安裝中使用的軟件更新包的示例方法1000的流程圖。將關(guān)于計(jì)算機(jī)架構(gòu)900的組件和數(shù)據(jù)來描述方法1000。
方法1000包括收集用于更新云設(shè)備的多個(gè)代碼改變,多個(gè)代碼改變包括針對(duì)多個(gè)軟件組件中的每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變,針對(duì)每個(gè)軟件組件的一個(gè)或多個(gè)代碼改變已經(jīng)被用于軟件組件的管理開發(fā)組發(fā)布(1001)。例如,構(gòu)建系統(tǒng)901可以分別從開發(fā)組902a和902b收集代碼改變911a和代碼改變911b。開發(fā)組902a和902b中的每個(gè)開發(fā)組可以管理要在云設(shè)備處被更新的軟件組件。
方法1000包括為云設(shè)備創(chuàng)建軟件更新包,該軟件更新包用于通過多遍安裝過程來安裝多個(gè)代碼改變(1002)。例如,構(gòu)建系統(tǒng)901可以為云設(shè)備創(chuàng)建軟件更新包921。軟件更新包921可以用于通過多遍安裝過程來在云設(shè)備處實(shí)現(xiàn)代碼改變911a和911b。多遍安裝過程可以包括三遍:遍924a(例如,預(yù)驗(yàn)證)、遍924b(例如,更新)和遍924c(例如,測(cè)試)。
創(chuàng)建軟件包包括標(biāo)識(shí)指示如何訪問多個(gè)代碼改變的代碼改變引用(1003)。例如,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)指示如何訪問代碼改變911a和911b的代碼改變引用922。創(chuàng)建軟件包包括標(biāo)識(shí)用于多個(gè)代碼改變中的每個(gè)代碼改變的安裝工件(1004)。例如,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)分別用于代碼改變911a和911b的安裝工件904a和904b。
創(chuàng)建軟件包包括:針對(duì)多遍中的每遍并且針對(duì)用于多個(gè)代碼改變中的每個(gè)代碼改變的標(biāo)識(shí)的安裝工件,標(biāo)識(shí)針對(duì)該遍而被定制的安裝工件的子集(1005)。例如,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)針對(duì)遍924a而被定制的工件906a和906b。類似地,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)針對(duì)遍924b而被定制的工件907a和907b。同樣地,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)針對(duì)遍924c而被定制的工件908a和908b。
創(chuàng)建軟件包包括確定用于標(biāo)識(shí)的安裝工件的安裝工件引用(1006)。例如,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)用于安裝工件904a和904b的安裝工件引用924。更具體地,構(gòu)建系統(tǒng)901可以標(biāo)識(shí)用于工件906a的引用916a,可以標(biāo)識(shí)用于工件907a的引用917a,可以標(biāo)識(shí)用于工件908a的引用918a,901可以標(biāo)識(shí)用于工件906b的引用916b,可以標(biāo)識(shí)用于工件907b的引用917b,并且可以標(biāo)識(shí)用于工件908b的引用918b。
創(chuàng)建軟件包包括將代碼改變引用和安裝工件引用包括在軟件更新包中(1007)。例如,構(gòu)建系統(tǒng)901可以將代碼改變引用和安裝工件引用包括在軟件更新包921中。在適當(dāng)時(shí),構(gòu)建系統(tǒng)901還可以將有效載荷927包括在軟件更新包921中。有效載荷927可以包含代碼改變和/或安裝工件。
將安裝工件引用包括在軟件更新包中包括:針對(duì)在多遍中的每遍,在軟件更新包中明確地指示用于針對(duì)該遍而被定制的安裝工件子集的安裝工件引用將在該遍期間被處理(1008)。例如,構(gòu)建系統(tǒng)901可以指示將在遍924a期間處理引用916a和916b。類似地,構(gòu)建系統(tǒng)901可以指示將在遍924b期間處理引用917a和917b。類似地,構(gòu)建系統(tǒng)901可以指示將在遍924c期間處理引用918a和918b。
方法1000包括使軟件更新包可用,從而使得運(yùn)行云設(shè)備的實(shí)體可以使用多遍安裝過程來實(shí)現(xiàn)軟件更新包(1009)。例如,構(gòu)建系統(tǒng)901可以將軟件更新包921存儲(chǔ)在用于軟件更新的已知位置中。已知位置可以包括例如更新目錄、更新網(wǎng)站、可移動(dòng)盤等。
類似于方法1000的方法也可以用于創(chuàng)建軟件安裝包。
本發(fā)明的任何所描述的方面也可以結(jié)合工作以創(chuàng)建軟件更新包或軟件安裝包。例如,構(gòu)建系統(tǒng)可以創(chuàng)建包括版本、物料憑單(bom)和清單的軟件更新包,其中驗(yàn)證代碼引用被包括在清單中。備選地,構(gòu)建系統(tǒng)可以構(gòu)建包括版本、憑單或物料(bom)和清單的軟件更新包,其中被包含在清單中的安裝工件引用被明確地指派給多遍安裝過程中的不同遍。作為另一選項(xiàng),構(gòu)建系統(tǒng)可以構(gòu)建包括驗(yàn)證代碼引用的軟件更新包,其中驗(yàn)證代碼引用被明確地指派給多遍安裝過程中的一遍。
在一些環(huán)境中,多個(gè)開發(fā)組正在改變被包括在云設(shè)備中的多個(gè)不同軟件組件的代碼。每個(gè)開發(fā)組可以按照不同的速度來改變代碼。利用用于云設(shè)備的不同實(shí)例之間的代碼發(fā)散潛力和代碼改變,本發(fā)明的各方面顯著降低了更新云設(shè)備實(shí)例的復(fù)雜性。在一個(gè)方面中,使單擊更新對(duì)運(yùn)行云設(shè)備實(shí)例的實(shí)體可用。實(shí)體可以選擇更新以自動(dòng)使對(duì)多個(gè)不同軟件組件的多個(gè)代碼改變被安裝以更新云設(shè)備。
圖11示出了描繪用于更新云設(shè)備的數(shù)據(jù)流的示例計(jì)算機(jī)架構(gòu)1100。在計(jì)算機(jī)架構(gòu)1100內(nèi),云設(shè)備1106的實(shí)例可以包括軟件組件1121。開發(fā)組1122可以隨時(shí)間來釋放用于軟件組件1121的代碼改變1123(例如,代碼改變1123a、1123b等)。不時(shí)地,例如,按照計(jì)劃或響應(yīng)于實(shí)體請(qǐng)求,構(gòu)建系統(tǒng)1101可以構(gòu)建軟件更新1124(例如,更新1124a、1124b等)。構(gòu)建系統(tǒng)1101可以在存儲(chǔ)裝置1102處存儲(chǔ)軟件更新。實(shí)體可以經(jīng)由網(wǎng)絡(luò)1103(例如,因特網(wǎng))來訪問被存儲(chǔ)在存儲(chǔ)裝置102處的更新。例如,實(shí)體1131可以從存儲(chǔ)裝置1102訪問更新1124a,以更新云設(shè)備1106(到一個(gè)狀態(tài))。類似地,實(shí)體1132可以從存儲(chǔ)裝置1102訪問更新1124b,以更新云設(shè)備1106(到另一個(gè)稍后的狀態(tài))。
出于安全和/或隱私的原因,實(shí)體1133可能更喜歡使部署的云設(shè)備保持與公共網(wǎng)絡(luò)(例如,因特網(wǎng))斷開連接。因此,構(gòu)建系統(tǒng)1101還可以將任何軟件更新1124(例如,更新1124a)存儲(chǔ)到可移動(dòng)存儲(chǔ)裝置1104(例如,拇指驅(qū)動(dòng)、dvd、cd等)上的自包含的包中??梢苿?dòng)存儲(chǔ)裝置1104可以被提供給實(shí)體1133。實(shí)體1133可以使用自包含的包來更新云設(shè)備110,而不必連接到公共網(wǎng)絡(luò)。
構(gòu)建系統(tǒng)1101可以包括為構(gòu)建系統(tǒng)201、包構(gòu)建器506、構(gòu)建系統(tǒng)701和構(gòu)建系統(tǒng)901描述的任何功能。因此,構(gòu)建系統(tǒng)1101可以創(chuàng)建軟件安裝包和軟件更新包。構(gòu)建系統(tǒng)1011可以被配置為創(chuàng)建包括物料憑單(bom)和清單的包(例如,類似于軟件更新包211)。構(gòu)建系統(tǒng)1101還可以被配置為創(chuàng)建包括驗(yàn)證代碼引用的包(例如,類似于軟件更新包721)。構(gòu)建系統(tǒng)1101還可以被配置為創(chuàng)建具有明確地指派給多遍安裝過程中的不同編的安裝工件引用的包(例如,類似于軟件更新包921)。構(gòu)建系統(tǒng)1101還可以被配置為創(chuàng)建包含描述的安排的不同組合的包。
在不脫離本發(fā)明的精神或基本特征的情況下,本發(fā)明可以按照其他具體形式而被實(shí)施。描述的實(shí)現(xiàn)方式在所有方面將被認(rèn)為僅是說明性的而不是限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求而不是前面的描述而被指示。在權(quán)利要求的等同物的含義和范圍內(nèi)的所有變化將被包括在其范圍內(nèi)。