專利名稱:代碼發布方法、代碼發布機和代碼發布系統的制作方法
技術領域:
本發明涉及計算機技術領域,具體涉及一種代碼發布方法、代碼發布機和代碼發布系統。
背景技術:
在互聯網行業中,做服務端開發的工程師將程序開發完畢后,需要將程序代碼或者編譯結果部署到服務器上運行,才能間接的為用戶提供服務,這個過程稱為代碼發布。代碼開發時所使用的機器稱為開發機,運行代碼并為用戶提供服務的服務器稱為線上服務器。因此代碼發布這個應用場景可以抽象為:將程序代碼從開發機拷貝到線上服務器。最簡單的是可以采用復制、粘貼等。對于Linux服務器,其一般采用scp (Linux下的遠程文件拷貝命令)方式。但是當機器數量超過十臺,達到數十臺時,這個工作就會非常的繁瑣。同時,在部署代碼時通常需要執行一些特定的操作,從而導致整個代碼發布過程異常艱辛。為了解決這個問題,現有的解決方式是編寫shell腳本,采用scp方式,對所有服務器依次執行代碼文件比對和代碼文件拷貝工作,同時可以執行一些特定的腳本,以將代碼文件發布到線上服務器。這可以解決一部分問題,但當機器數量達到上百臺時,這個串行發布的過程會達到數十分鐘甚至數小時。由于發布過程的持續時間長,會導致線上代碼的不一致時間會很長,進而影響用戶的使用。且由于代碼直接上線,沒法進行測試,如果代碼存在漏洞,會直接影響用戶的使用。此外,現有的代碼發布過程不利于管理和操作。
發明內容
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種代碼發布方法、代碼發布機和代碼發布系統。依據本發明的一個方面,提供了一種代碼發布方法,用于將待發布的代碼文件發布到線上服務器,該方法包括:創建發布任務;將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試;待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。可選地,所述將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括:對于第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。可選地,將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括:對于除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。可選地,將所述 多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括:將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。可選地,所述將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括:對于每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。可選地,所述創建發布任務之前還包括:對待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。依據本發明的一個方面,提供了一種代碼發布機,用于將待發布的代碼文件發布到線上服務器,其包括:發布任務管理單元,適于創建發布任務;—級發布單元,適于將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機;其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試;二級發布單元,適于待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。可選地,所述一級發布單元進一步適于:對第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。可選地,所述一級發布單元進一步適于:對除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。可選地,所述二級發布單元進一步適于:將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。可選地,所述二級發布單元進一步適于:對每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。可選地,所述發布任務管理單元還適于:對待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。依據本發明的又一個方面,提供了一種代碼發布系統,其包括多個回歸機以及如上述任一項所述的代碼發布機,其中,所述多個回歸機與多個服務器集群對應;
每個回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試。根據本發明的這種創建發布任務,將該發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試,待該多個回歸機回歸測試通過后,將該多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器的技術方案,由于進行回歸測試,避免了有漏洞的代碼直接上線,且線上服務器被劃分成多個服務器集群,多個回歸機對應多個服務器集群,因此能夠并行地進行回歸測試和代碼發布,大大縮短了代碼發布的時間,提高了效率。上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式
。
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據本發明一個實施例的代碼發布方法的流程圖2示出了根據本發明一個實施例的代碼開發、測試及發布的整體架構圖;圖3示出了根據本發明一個實施例的代碼發布過程的流程圖;圖4示出了根據本發明一個實施例的代碼發布機的結構圖;以及圖5示出了根據本發明一個實施例的代碼發布系統的組成結構圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。圖1示出了根據本發明一個實施例的代碼發布方法的流程圖。該方法用于將待發布的代碼文件發布到線上服務器,參見圖1該方法包括:步驟S110,創建發布任務。步驟S120,將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試。這里,回歸機是用來模擬線上服務器的環境,可以運行代碼,但是不對用戶提供服務,而是用于回歸測試。在本發明中,將線上服務器劃分成多個服務器集群,每個服務器集群對應一個回歸機,也就是說,要發送到該服務器集群上的代碼文件首先在與該服務器集群對應的回歸機上進行回歸測試。
步驟S130,待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。圖1所示的方法中,對待發布的代碼文件進行回歸測試,回歸測試通過后,才將代碼文件同步到線上服務器,這樣就避免了有漏洞的代碼直接上線,并且由于多個服務器集群分別對應多個回歸機,因此能夠進行并行回歸測試和代碼發布,大大縮短了代碼發布的時間,提聞了效率。以下參照圖2和圖3對本發明的技術方案進行詳細說明。圖2示出了根據本發明一個實施例的代碼開發、測試及發布的整體架構圖。在圖2中,開發機230是指代碼開發時使用的機器。RD (Research and Development)是指代碼開發人員。QA (Quality Assurance)是指代碼測試人員。QA測試機240是指測試人員搭建的測試環境;SVN(subversion) 220是版本管理工具;代碼發布機210是執行代碼發布任務的機器。回歸機是模擬線上服務器的環境并可以運行代碼的機器。多個回歸機與多個服務器集群對應,在本實施例中第一回歸機250模擬第一服務器集群255的運行環境,第二回歸機260模擬第二服務器集群266的運行環境,第三回歸機270模擬第三服務器集群277的運行環境,第四回歸機280模擬第四服務器集群288的運行環境,以此類推。每個服務器集群由多個線上服務器組成。需要說明的是,本例中每個服務器集群只對應一個回歸機,當然每個服務器集群還可以對應于一個以上回歸機,這需要視具體情況而定。測試人員的測試工作包括但并不局限于功能測試和回歸測試兩種。這里功能測試是開發人員將系統開發完畢后,測試人員對新開發的功能進行測試,重點是測試部分功能的實現完整性。回歸測試是對系統整體進行驗證,通常驗證一個系統的所有功能的完整性。開發人員開發完畢后,先將代碼部署到QA測試機240進行功能測試。由于測試版本較多,QA測試機240上的測試環境可能會同時進行多個版本的測試。為了保證上線代碼的質量,在QA環境做功能測試,此外為每個服務器集群設置一個回歸環境(也即回歸機),在回歸環境做全面的、針對性的回歸測試。為了保證代碼發布的質量,代碼的發布過程需要QA的確認。RD發起發布請求,將代碼分布到回歸環境,通知QA到回歸環境做回歸測試,QA回歸測試通過后,允許RD執行發布操作,RD執行最后的發布步驟,將代碼從回歸環境同步到各自的服務器集群。更詳細的代碼發布過程參見圖3。圖3示出了根據本發明一個實施例的代碼發布過程的流程圖。如圖3所示包括如下步驟S310至步驟S340:步驟S310,創建發布任務。具體來說在本步驟中,RD登錄代碼發布系統(可以遠程登錄),如果回歸環境未被占用,進行創建任務的操作。具體可以在代碼發布系統所提供的界面中填寫發布說明,在待發布文件框中輸入要發布的代碼文件在SVN中的路徑或者根據SVN的目錄樹勾選需要上線的文件。然后從SVN中導出對應的代碼文件,對代碼文件進行語法錯誤檢查,如果有語法錯誤則提示用戶,如果沒有語法錯誤則將該代碼文件作為本次發布任務待發布的代碼文件進行打包。步驟S320,將發布任務待發布的代碼文件上傳到回歸環境。本步驟中,將發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機上。其中,具體的上傳過程包括:(I)對于運行回歸環境I的回歸機,在其上查找待發布的代碼文件的舊版本代碼文件;如果未查找到,則將待發布的代碼文件上傳到該運行回歸環境I的回歸機;如果未查找到,將待發布的代碼文 件與該舊版本代碼文件進行比較。如果待發布的代碼文件與該舊版本代碼文件存在差異,則將待發布的代碼文件上傳到該運行回歸環境I的回歸機。(2)對于除運行回歸環境I的回歸機之外的運行其他回歸環境(回歸環境2、3、4等)的回歸機,在其上查找待發布的代碼文件的舊版本代碼文件;如果未查找到,則將待發布的代碼文件上傳到該運行其它回歸環境的回歸機;否則,將在該運行其它回歸環境的回歸機上查找到的舊版本代碼文件與在運行回歸環境I的回歸機上查找到的舊版本代碼文件進行比較,即將運行回歸環境I的回歸機上查找到的舊版本代碼文件作為比較的標準。如果在該運行其它回歸環境的回歸機上查找到的舊版本代碼文件與在運行回歸環境I的回歸機上查找到的舊版本代碼文件相同,則按照對運行回歸環境I的回歸機那樣將代碼文件上傳到該運行其他回歸環境的回歸機;否則將待發布的代碼文件與在該運行其它回歸環境的回歸機上查找到的舊版本代碼文件進行比較,如果待發布的代碼文件與在該運行其它回歸環境的回歸機上查找到的舊版本代碼文件存在差異,則將待發布的代碼文件上傳到該運行其他回歸環境的回歸機。根據上述(I)和(2)對所有的回歸機都進行上傳完畢后,即完成了將代碼從代碼發布機發布到回歸機的一級發布過程,將本次發布任務標記為“待測試”狀態。在本發明的一個實施例中,提供Web方式的人機交互界面,且在一級發布過程中以diff方式進行比較,并以Web方式顯示比較結果的方案,這樣可以形象化地顯示待發布的代碼文件的修改。具體來說本發明中的通過Web模擬Linux diff的方式,給用戶提供了一個直觀且熟悉的代碼文件對比顯示方案。diff是Linux中的比較文本文件的命令。具體地,在上述(I)和(2)中,采用如下方式進行代碼文件的比較:1.調用Linux下的diff命令將兩個版本的代碼文件進行比較,得到比較結果。為了便于解析,可采用如下命令:diff-L’ Old’ _L’ New’ _U6old—file—path new—file—path這樣可以將diff的結果順序的顯示出來,由于diff結果有嚴格的規范,因此便于解析。2.用PHP (PHP是英文超文本預處理語言Hypertext Preprocessor的縮寫)對所述比較結果進行解析,得到解析結果;具體用PHP對diff的結果按行分析,將結果解析成四個數組,分別是new、old、intra和visible,他們分別記錄新文件的每一行、舊文件的每一行、新舊文件在每一行的差異和需要顯示的行數。由這四個數組明確的標識出兩個文件的具體差異。3.通過Javascript在Web端重現所述解析結果。利用如上的四個數組的信息,將文件為Web方式顯示出來,并對每一行的每一個字符標識顏色,用于區別。這樣,就可以直觀的看到兩個文件的區別。步驟S330,進行回歸測試。
在本步驟中,RD可以給QA發送回歸測試郵件,郵件中可以包含回歸機的地址、測試地址、測試說明和RD的聯系方式等信息。QA進行回歸測試,并在測試完畢后登錄代碼發布系統,將本次發布任務的狀態修改為“允許發布”狀態,并給對應的RD發送允許發布的郵件。步驟S340,將回歸機上的代碼文件同步到對應的服務器集群中的各線上服務器。將本步驟的發布過程稱為二級發布,具體為:RD收到允許發布的郵件后,登錄代碼發布系統,顯示發布任務列表,從中選擇“允許發布”狀態的發布任務,將該發布任務在每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。考慮到靈活性,可以采用灰度發布方式,即對于每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求(如代碼運行穩定)時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。這里可以采用Rsync協議(同步命令)作為文件傳輸協議將回歸機上的代碼文件同步到對應服務器集群中的線上服務器,完成二級發布,從而保證發布的安全性和效率。將已發布的集群標記為“已發布”狀態,如果所有的集群都已經發布完畢,則標記本次任務為“已發布”狀態。完畢發布后,釋放回歸環境。將每個發布任務的發布過程采用日志方式進行記錄。圖3所示的代碼發布方案中通過兩級發布,規范了代碼發布的流程,降低了誤操作對發布過程的影響。其中通過一級發布的嚴格檢查以及回歸測試可以有效避免問題代碼上線對用戶造成的干擾,提高了業務的可靠性。二級發布時,采用并行執行的方式,一個集群中的數十臺或數百臺線上服務器可以在較快的時間內并行完成新代碼的上線,降低了線上代碼的不一致時間,從而降低了線上代碼不一致導致發生錯誤的概率。由于發布時間縮短,也大大節省了開發人員的時間,使得開發人員可以節省關注發布過程的時間。采用Web方式的人機交互方式,簡化了用戶的操作,降低了相關人員進行代碼上線操作的復雜度。因為傳統的發布過程使用Linux下的腳本,對于不熟悉Linux的人員來說操作比較復雜,而Web方式是大多數人熟悉的,操作起來非常簡單方便。且本發明的這種代碼發布方案也便于對發布過程進行管理,優化了發布過程,提高了發布效率。發布過程采用統一的日志記錄方式,利于問題的追溯與排查。基于上述實施例給出本發明的代碼發布機和代碼發布系統的結構。圖4示出了根據本發明一個實施例的代碼發布機的結構圖。該代碼發布機即為上述實施例中用于將待發布的代碼文件發布到線上服務器的代碼發布機。參見圖4,該代碼發布機包括:發布任務管理單元401、存儲單元402、一級發布單元403和二級發布單元404。所述發布任務管理單元401,適于創建發布任務,將待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。存儲單元402,適于存儲代碼文件。一級發布單元403,適于將本次發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機;其中,回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試;二級發布單元404,適于待該多個回歸機回歸測試通過后,將多個回歸機上的代碼文件同步到與該多個回歸機對應的多個服務器集群中的各線上服務器。在本發明的一個實施例中,一級發布單兀403進一步適于:對第一回歸機,在其上查找待發布的代碼文件的舊版本代碼文件;如果未查找到,則將該待發布的代碼文件上傳到第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。這里第一回歸即是指與運行第一個服務器集群的回歸環境的回歸機。一級發布單元403進一步適于:對除第一回歸機之外的每個其它回歸機,在其上查找待發布的代碼文件的舊版本代碼文件;如果未查找到,則將待發布的代碼文件上傳到所述其它回歸機;否則,將在其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對第一回歸機那樣對該其它回歸機進行上傳;否則將待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將待發布的代碼文件上傳到所述其它回歸機。在本發明的一個實施例中,二級發布單元404進一步適于:將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。在本發明的一個實施例中,二級發布單元404進一步適于:對每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸 機對應的服務器集群中的其余線上服務器。圖5示出了根據本發明一個實施例的代碼發布系統的組成結構圖。如圖5所示,該代碼分布系統包括代碼發布機500和多個回歸機600。代碼發布機500可以是圖4和圖2所示的代碼發布機。多個回歸機600可以是如圖2中所示的多個回歸機,其用于模擬服務器集群中的線上服務器的環境來運行代碼文件,并且可以采用本領域技術人員現在已知或者將來已知的任何方法和/或裝置來實現。多個回歸機600與多個服務器集群對應。每個回歸機600用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試。綜上所述,本發明的這種創建發布任務,將該發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試,待該多個回歸機回歸測試通過后,將該多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器的技術方案,由于進行回歸測試,避免了有漏洞的代碼直接上線,且線上服務器被劃分成多個服務器集群,多個回歸機對應多個服務器集群,因此能夠并行地進行回歸測試和代碼發布,大大縮短了代碼發布的時間,提高了效率。需要說明的是:在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
·
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
的權利要求書由此明確地并入該具體實施方式
,其中每個權利要求本身都作為本發明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP )來實現根據本發明實施例的代碼發布機和代碼發布系統中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。本文公開了 Al、一種代碼發布方法,用于將待發布的代碼文件發布到線上服務器,該方法包括:創建發布任務;將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試;待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。A2、如Al所述的方法,其中,所述將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括:對于第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待 發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。A3、如A2所述的方法,其中,將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括:對于除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。A4、如Al至A3中任一項所述的方法,其中,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括:將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。A5、如Al至A3中任一項所述的方法,其中,所述將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括:對于每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。A6、如Al所述的方法,其中,所述創建發布任務之前還包括:對待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。本文公開了 B7、一種代碼發布機,用于將待發布的代碼文件發布到線上服務器,其包括:發布任務管理單元,適于創建發布任務;一級發布單元,適于將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機;其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試;二級發布單元,適于待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。B8、如B7所述的代碼發布機,其中,所述一級發布單元進一步適于:對第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。B9、如B8所述的代碼發布機,其中,所述一級發布單元進一步適于:對除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。B10、如B7至B9中任一項所述的代碼發布機,其中,所述二級發布單元進一步適于 :將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。B11、如B7至B9中任一項所述的代碼發布機,其中,所述二級發布單元進一步適于:對每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。B12、如B7所述的代碼發布機,其中,所述發布任務管理單元還適于:對待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。本文公開了 C13、一種代碼發布系統,其包括多個回歸機以及如B7至B12中任一項所述的代碼發布機,其中,所述多個回歸機與多個服務器集群對應;每個回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試。
權利要求
1.一種代碼發布方法,用于將待發布的代碼文件發布到線上服務器,該方法包括: 創建發布任務; 將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試; 待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。
2.如權利要求1所述的方法,其中,所述將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括: 對于第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件; 如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較; 如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述第一回歸機。
3.如權利要求2所述的方法,其中,將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機進一步包括: 對于除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件; 如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較; 如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較; 如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。
4.如權利要求1至3中任一項所述的方法,其中,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括: 將每個回歸機上的代碼文件通過同時同步的方式,并行地同步到與每個回歸機對應的服務器集群中的各線上服務器。
5.如權利要求1至3中任一項所述的方法,其中,所述將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器包括: 對于每個回歸機,將該回歸機上的代碼文件先同步到與該回歸機對應的服務器集群中的部分線上服務器,之后當所述代碼文件在所述部分線上服務器上的運行達到預設要求時,再逐步將該回歸機上的代碼文件同步到與該回歸機對應的服務器集群中的其余線上服務器。
6.如權利要求1所述的方法,其中,所述創建發布任務之前還包括: 對待發布的代碼文件進行語法錯誤檢查,把沒有語法錯誤的待發布的代碼文件作為本次發布任務待發布的代碼文件。
7.一種代碼發布機,用于將待發布的代碼文件發布到線上服務器,其包括: 發布任務管理單元,適于創建發布任務; 一級發布單元,適于將所述發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機;其中,所述回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試; 二級發布單元,適于待所述多個回歸機回歸測試通過后,將所述多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器。
8.如權利要求7所述的代碼發布機,其中, 所述一級發布單元進一步適于: 對第一回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述第一回歸機;否則,將所述待發布的代碼文件與所述舊版本代碼文件進行比較;如果所述待發布的代碼文件與所述舊版本代碼文件存在差異,則將所述待發布的 代碼文件上傳到所述第一回歸機。
9.如權利要求8所述的代碼發布機,其中, 所述一級發布單元進一步適于: 對除所述第一回歸機之外的每個其它回歸機,在其上查找所述待發布的代碼文件的舊版本代碼文件;如果未查找到,則將所述待發布的代碼文件上傳到所述其它回歸機;否則,將在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件進行比較;如果在所述其它回歸機上查找到的舊版本代碼文件與在所述第一回歸機上查找到的舊版本代碼文件相同,則按照對所述第一回歸機那樣對所述其它回歸機進行上傳;否則將所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件進行比較;如果所述待發布的代碼文件與在所述其它回歸機上查找到的舊版本代碼文件存在差異,則將所述待發布的代碼文件上傳到所述其它回歸機。
10.一種代碼發布系統,其包括多個回歸機以及如權利要求7至9中任一項所述的代碼發布機,其中, 所述多個回歸機與多個服務器集群對應; 每個回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試。
全文摘要
本發明公開了代碼發布方法、代碼發布機和代碼發布系統。本發明的這種創建發布任務,將該發布任務待發布的代碼文件上傳到與多個服務器集群對應的多個回歸機,其中,回歸機用于模擬與其對應的服務器集群中的線上服務器的環境運行代碼文件以對所述代碼文件進行回歸測試,待該多個回歸機回歸測試通過后,將該多個回歸機上的代碼文件同步到與所述多個回歸機對應的多個服務器集群中的各線上服務器的技術方案,由于進行回歸測試,避免了有漏洞的代碼直接上線,且線上服務器被劃分成多個服務器集群,多個回歸機對應多個服務器集群,因此能夠并行地進行回歸測試和代碼發布,大大縮短了代碼發布的時間,提高了效率。
文檔編號G06F9/445GK103226485SQ201310190079
公開日2013年7月31日 申請日期2013年5月21日 優先權日2013年5月21日
發明者孫全剛 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司