虛擬化軟件構(gòu)建系統(tǒng)的制作方法
【專利說明】虛擬化軟件構(gòu)建系統(tǒng)
[0001]本申請(qǐng)要求2014年5月14日提交的美國臨時(shí)申請(qǐng)序列號(hào)61/993,102、標(biāo)題為“軟件測(cè)試和構(gòu)建系統(tǒng)(SOFTWARE TEST AND BUILD SYSTEM) ”的權(quán)益,本文通過引用清楚地將其全部內(nèi)容納入。
【背景技術(shù)】
[0002]開發(fā)軟件可能涉及需要協(xié)調(diào)管理的復(fù)雜過程。多個(gè)用戶可能在不同的位置致力于不同的項(xiàng)目。已經(jīng)有必要依賴各種過程(包括人工管理)保存和追蹤系統(tǒng)。
【附圖說明】
[0003]圖1是示出一種虛擬構(gòu)建和測(cè)試系統(tǒng)的示例性實(shí)例的各個(gè)方面的圖表。
[0004]圖2是不出一種不例性版本化構(gòu)建和測(cè)試系統(tǒng)的各個(gè)方面的圖表。
[0005]圖3A和圖3B是示出一種版本化構(gòu)建方法的各個(gè)方面的流程圖。
[0006]圖4是一種根據(jù)本文提供的各個(gè)方面使用的各種硬件組件和其他特征的示例性系統(tǒng)圖表。
[0007]圖5是根據(jù)本文提供的各個(gè)方面的各種示例性系統(tǒng)組件的圖表。
【具體實(shí)施方式】
[0008]下文結(jié)合附圖闡述的【具體實(shí)施方式】旨在作為各種配置的描述,并且不旨在僅表示本文描述的概念可以被實(shí)現(xiàn)的配置。出于提供對(duì)各種概念的完全理解的目的,該【具體實(shí)施方式】包括具體細(xì)節(jié)。然而,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)這些概念,這對(duì)于本領(lǐng)域技術(shù)人員而言將是明顯的。在一些情況下,以方框形式示出已知結(jié)構(gòu)和組件以避免模糊這些概念。
[0009]現(xiàn)在將針對(duì)各種設(shè)備和方法描述軟件構(gòu)建和測(cè)試系統(tǒng)的若干方面。這些設(shè)備和方法將在下列【具體實(shí)施方式】中描述并通過各種框圖、模塊、組件、電路、步驟、過程、算法等(統(tǒng)稱為“元件”)在附圖中示出。這些元件可以使用電子硬件、計(jì)算機(jī)軟件或其任意組合實(shí)施。這些元件是否作為軟件或硬件實(shí)施取決于具體應(yīng)用和施加在整個(gè)系統(tǒng)上的設(shè)計(jì)約束。
[0010]在過去,已經(jīng)有必要依賴各種過程(包括人工管理)保存和追蹤系統(tǒng)以用于開發(fā)軟件產(chǎn)品的源代碼。不僅有必要在具體時(shí)間點(diǎn)追蹤構(gòu)建系統(tǒng)本身,而且有必要追蹤構(gòu)建系統(tǒng)所需要的工具。
[0011]本文提供的版本化構(gòu)建和測(cè)試系統(tǒng)(Vers1ned Build and Test system,VBT)的各個(gè)方面提供一種在開發(fā)軟件時(shí)(甚至在使用可以在不同位置運(yùn)行的不同系統(tǒng)實(shí)例完成構(gòu)建時(shí))創(chuàng)建一致的構(gòu)建結(jié)果的方法。
[0012]在一些實(shí)施例中,VBT系統(tǒng)可以允許管理員使用配置文件指定構(gòu)建和測(cè)試環(huán)境的配置。之后,多個(gè)用戶(無論在相同地點(diǎn)或不同地點(diǎn)工作)能夠使用配置文件構(gòu)建包括虛擬機(jī)的一致虛擬構(gòu)建和測(cè)試環(huán)境。用戶接著能夠使用VBT實(shí)例構(gòu)建和測(cè)試他們的軟件項(xiàng)目并獲得一致的結(jié)果。多個(gè)用戶的任意一個(gè)對(duì)構(gòu)建系統(tǒng)進(jìn)行的改變和改進(jìn)能夠以協(xié)調(diào)和受控的方式與構(gòu)建系統(tǒng)的所有其他實(shí)例共享。
[0013]此外,構(gòu)建系統(tǒng)的每個(gè)實(shí)例能夠被分支以滿足各種用戶構(gòu)造的應(yīng)用程序和操作系統(tǒng)的獨(dú)特需求而不影響構(gòu)建的其他應(yīng)用程序(例如,由相同構(gòu)建系統(tǒng)構(gòu)建的)。
[0014]在一些實(shí)施例中,VBT能夠以下列方式提供一種建立和維持構(gòu)建和測(cè)試環(huán)境的方法:在需要改變時(shí)保存和版本化構(gòu)建系統(tǒng)的變化。在一些實(shí)施例中,這允許有能力在未來時(shí)間點(diǎn)精確再生若干先前版本中的任何一個(gè),以便先前版本中構(gòu)建的組件能夠以完全相同方式再次精確構(gòu)建。VBT的每個(gè)單獨(dú)的運(yùn)行版本是實(shí)例。
[0015]VBT的不同實(shí)例可以被指定為生產(chǎn)環(huán)境、分級(jí)環(huán)境和開發(fā)環(huán)境中的任何一個(gè)。VBT的實(shí)例還可以在不同類型的環(huán)境之間切換。
[0016]先前,有必要依賴各種過程和步驟(這些中的一些是人工的)保存和跟蹤構(gòu)建系統(tǒng)。不僅有必要跟蹤構(gòu)建系統(tǒng)本身,而且有必要跟蹤例如提供對(duì)一個(gè)或更多個(gè)構(gòu)建系統(tǒng)的控制的集成工具以及構(gòu)建系統(tǒng)可能已經(jīng)需要或在某個(gè)時(shí)間點(diǎn)可能已經(jīng)需要的任何工具。
[0017]在特定實(shí)施例中,VBT系統(tǒng)能夠提供一種隨時(shí)間跟蹤構(gòu)建系統(tǒng)的所有組件的方式。
[0018]圖1示出VBT系統(tǒng)100的實(shí)例的示例性圖表。VBT系統(tǒng)可以包括支持機(jī)102、構(gòu)建機(jī)104、構(gòu)建主機(jī)106和封裝主機(jī)108,其每個(gè)可以是不同的虛擬機(jī)實(shí)例。
[0019]虛擬支持機(jī)102(也被可互換地稱為“結(jié)構(gòu)系統(tǒng)”或“結(jié)構(gòu)”)可以是給其他系統(tǒng)提供支持和實(shí)用功能的虛擬機(jī)。
[0020]構(gòu)建機(jī)104(也被可互換地稱為“構(gòu)建器”)可以是運(yùn)行構(gòu)建工作的虛擬機(jī)。因此,虛擬構(gòu)建機(jī)實(shí)施任務(wù)以構(gòu)建軟件產(chǎn)品的代碼。
[0021]構(gòu)建主機(jī)106可以是提交并監(jiān)測(cè)已經(jīng)提交到虛擬構(gòu)建機(jī)104的構(gòu)建工作的虛擬機(jī)。因此,虛擬構(gòu)建主機(jī)管理軟件構(gòu)建項(xiàng)目內(nèi)的任務(wù)以構(gòu)建軟件產(chǎn)品的代碼。
[0022]VBT主機(jī)系統(tǒng)1-8可以是封裝其他虛擬機(jī)并能夠在構(gòu)建機(jī)104和構(gòu)建主機(jī)106之間通信的虛擬機(jī)。因此,VBT 100的實(shí)例在虛擬主機(jī)108上運(yùn)行。VBT形成具有其自身的存儲(chǔ)器的虛擬計(jì)算機(jī)。結(jié)構(gòu)系統(tǒng)102在封裝主機(jī)系統(tǒng)108內(nèi)建立本地化網(wǎng)絡(luò)環(huán)境,其允許其他虛擬機(jī)104、106相互通信并與VBT主機(jī)系統(tǒng)108外部的其他系統(tǒng)通信。
[0023]VBT可以用在各種場(chǎng)景中。作為一個(gè)示例,在新項(xiàng)目開始時(shí),可以使用最新的VBT,例如,使用最新的VBT配置文件,實(shí)例化VBT。接著新的構(gòu)建工作可以在VBT的構(gòu)建主機(jī)106內(nèi)建立。
[0024]—旦已經(jīng)執(zhí)行可行構(gòu)建工作,這些工作能夠簽入中央庫中以便其他用戶能夠使用它們構(gòu)建新的項(xiàng)目。在一些實(shí)施例中,庫可以是,例如,分布式版本控制和源代碼管理(SCM)系統(tǒng),如Git源庫。在另一個(gè)示例中,為了進(jìn)行現(xiàn)有項(xiàng)目,可能已經(jīng)簽入構(gòu)建工作。在一些實(shí)施例中,一旦最新的VBT系統(tǒng)啟動(dòng)并運(yùn)行,這些構(gòu)建工作能夠被簽出以開始在特定的VBT系統(tǒng)中構(gòu)建項(xiàng)目。
[0025]在過去,先前的構(gòu)建服務(wù)器需要輸入人工配置并人工保存變化。單個(gè)實(shí)體存儲(chǔ)與項(xiàng)目有關(guān)的信息。需要訪問這個(gè)單個(gè)點(diǎn)以接收和執(zhí)行構(gòu)建工作。由于試圖訪問系統(tǒng)的數(shù)量龐大的用戶,這是有問題的并且要求大量的人工管理以保證環(huán)境完整性。
[0026]作為對(duì)比,如本文提供的,保持虛擬環(huán)境的配置以便整個(gè)構(gòu)建和測(cè)試環(huán)境可以以自動(dòng)方式(如在遠(yuǎn)程位置)構(gòu)建和/或重新構(gòu)建。VBT涉及將構(gòu)建和測(cè)試軟件產(chǎn)品的代碼中涉及的虛擬機(jī)的源代碼作為源代碼存儲(chǔ)。這允許在任何時(shí)間將機(jī)器重構(gòu)為虛擬機(jī)。VBT的每個(gè)實(shí)例復(fù)制整體環(huán)境,包括VBT的源代碼、構(gòu)建服務(wù)器和虛擬機(jī)。
[0027]本文提供的VBT的各個(gè)方面解決限制先前系統(tǒng)的遠(yuǎn)程用戶的訪問問題。在過去,先前系統(tǒng)的遠(yuǎn)程用戶需要持續(xù)訪問存儲(chǔ)在中央環(huán)境中的源代碼。通過實(shí)例化整個(gè)構(gòu)建和測(cè)試環(huán)境(包括VBT源代碼、虛擬構(gòu)建服務(wù)器、虛擬構(gòu)建管理器、虛擬結(jié)構(gòu)管理器等)的完整副本,遠(yuǎn)程用戶能夠通過在它們自己的構(gòu)建環(huán)境的虛擬副本內(nèi)工作獨(dú)立于主要(primary)/中央環(huán)境構(gòu)建。當(dāng)啟動(dòng)VBT實(shí)例時(shí),其與存儲(chǔ)在中央庫中的源代碼同步。該實(shí)例可以從(例如,項(xiàng)目環(huán)境的)中央源代碼服務(wù)器接收同步信息。虛擬副本實(shí)例還可以將完成的項(xiàng)目簽入到(例如,