本發(fā)明涉及軟件開發(fā)平臺及方法,尤其涉及一種基于devops的軟件開發(fā)管理平臺及方法。
背景技術:
隨著互聯(lián)網(wǎng)的發(fā)展,人們對互聯(lián)網(wǎng)的要求越來越高,推動了互聯(lián)網(wǎng)技術的快速發(fā)展。由于訪問量龐大,互聯(lián)網(wǎng)應用的運維成本越來越高,對于小則幾十、上百臺服務器的集群,大則幾千、幾萬臺服務器的云平臺,沒有安全高效的部署和監(jiān)控手段,應用將無法正常運營。
傳統(tǒng)的軟件組織將開發(fā)、測試和運維設為各自獨立的部門,交付的軟件產(chǎn)品需要在一個部門中處理完成后才能流轉到下一個部門。這一模式使得產(chǎn)品的問題無法盡早發(fā)現(xiàn),浪費人力成本,拉長產(chǎn)品的迭代周期。因此,打造一套可加強開發(fā)、測試和運維之間溝通的自動化工具是目前軟件開發(fā)技術的研究方向。
devops是一組過程、方法與系統(tǒng)的統(tǒng)稱,提倡開發(fā)和it運維之間的高度協(xié)同,從而在高頻率部署的同時,提高生產(chǎn)環(huán)境的可靠性、穩(wěn)定性、彈性和安全性。
現(xiàn)有技術中,如中國專利cn105653449a中公開了一種基于容器虛擬化的持續(xù)集成方法,該發(fā)明通過采用容器虛擬化技術,通過docker來屏蔽實際環(huán)境中的差異,通過dockerfile來統(tǒng)一規(guī)范應用運行環(huán)境;同時能夠在單一機器環(huán)境中無干擾的部署,并能較方便的進行橫向擴展,同時基于git的觸發(fā)機制,能夠自動的在代碼提交后進行持續(xù)集成,減少人工工作量。但是該發(fā)明未能對軟件項目的開發(fā)流程進行管理,而且不能將軟件開發(fā)、測試和運維進行統(tǒng)一部署監(jiān)控。
鑒于此,有必要提供一種可解決上述缺陷的可對軟件開發(fā)的生命周期統(tǒng)一管理的基于devops的軟件開發(fā)管理平臺及方法,以加強開發(fā)、測試和運維之間的溝通,實現(xiàn)軟件開發(fā)、測試和運維一體化,同時實現(xiàn)持續(xù)部署,減少人工投入,降低人為出錯;同時,提供一種基于devops的軟件開發(fā)管理方法,操作簡單靈活,應用性強,有利于滿足用戶的自身需求。
技術實現(xiàn)要素:
本發(fā)明所要解決的一個技術問題是提供一種基于devops的軟件開發(fā)管理平臺,加強開發(fā)、測試和運維之間的溝通,實現(xiàn)軟件開發(fā)、測試和運維一體化,同時實現(xiàn)持續(xù)部署,減少人工投入,降低人為出錯。
本發(fā)明所要解決的另一個技術問題是提供一種基于devops的軟件開發(fā)管理方法以對軟件開發(fā)的生命周期進行統(tǒng)一管理,加強開發(fā)、測試和運維之間的溝通,實現(xiàn)軟件開發(fā)、測試和運維的一體化,同時操作簡單靈活,應用性強,有利于滿足用戶的自身需求。
為解決上述技術問題,本發(fā)明提供了一種基于devops的軟件開發(fā)管理平臺,其包括:
集群管理模塊,用于供用戶創(chuàng)建集群以管理多個服務器;
應用管理模塊,用于供用戶創(chuàng)建應用并將應用的服務項目、代碼及用戶數(shù)據(jù)保存到集群中以提供用戶權限管理和代碼管理;
構建管理模塊,用于供用戶構建所述應用管理模塊中管理的代碼并對代碼進行靜態(tài)分析;以及
部署管理模塊,用于供用戶創(chuàng)建并執(zhí)行部署任務。
其進一步技術方案為:所述應用管理模塊包括:
應用創(chuàng)建單元,用于設置應用的服務項目,并將每一服務項目關聯(lián)到相應的git項目;
代碼管理單元,用于創(chuàng)建和管理git倉庫,并將編輯處理后的代碼上傳保存至git倉庫中以實現(xiàn)代碼管理;以及
代碼封版單元,用于為git倉庫創(chuàng)建分支和標記以定義編輯處理后的代碼的版本并對其進行封版。
其進一步技術方案為:所述構建管理模塊包括:
任務構建單元,用于創(chuàng)建和管理構建代碼的任務以對代碼進行構建;
定時單元,用于創(chuàng)建定時器以根據(jù)約定的時間間隔,定時通知所述任務構建單元進行代碼構建;以及
鏡像管理單元,用于管理所述任務構建單元構建的docker鏡像。
其進一步技術方案為:所述構建管理單元還包括:靜態(tài)分析單元,用于靜態(tài)分析所述應用管理模塊的代碼。
其進一步技術方案為:所述部署管理模塊包括:
資源管理模塊,用于將資源管理服務部署到集群中,為部署任務提供數(shù)據(jù)庫;以及
服務部署單元,用于創(chuàng)建部署任務,將所述構建管理模塊中構建的docker鏡像及可部署腳本部署到集群中,以對代碼進行自動化測試。
為解決上述技術問題,本發(fā)明還提供了一種基于devops的軟件開發(fā)管理方法,其包括以下步驟:
步驟s101,創(chuàng)建集群以管理多個服務器;
步驟s102,創(chuàng)建應用,為應用創(chuàng)建服務項目、并將應用的服務項目、代碼及用戶數(shù)據(jù)保存到集群中以提供用戶權限管理和代碼管理;
步驟s103,構建并靜態(tài)分析代碼;
步驟s104,創(chuàng)建并執(zhí)行部署任務。
其進一步技術方案為:所述步驟s102中包括以下步驟:
步驟s21,設置應用的服務項目,并將每一服務項目關聯(lián)到對應的git項目;
步驟s22,創(chuàng)建和管理git倉庫,編輯處理代碼,并將編輯處理后的代碼上傳保存至git倉庫中;
步驟s23,為git倉庫創(chuàng)建分支和標記以定義編輯后的代碼的版本并對其進行封版。
其進一步技術方案為:所述步驟s103包括以下步驟:
步驟s31,構建通知;
步驟s32,構建代碼,jenkins接收到構建通知后構建代碼;
步驟s33,鏡像管理,對構建的docker鏡像進行管理。
其進一步技術方案為:所述步驟s103還包括以下步驟:
步驟s311,當編輯處理后的代碼保存至git倉庫后,觸發(fā)sonar對代碼進行靜態(tài)分析。
其進一步技術方案為:所述步驟s104包括以下步驟:
步驟s41,使用docker的鏡像技術將資源管理服務部署到集群中,為部署任務提供數(shù)據(jù)庫;
步驟s42,部署通知;
步驟s43,部署任務,將構建的docker鏡像及可部署腳本部署到集群中,觸發(fā)測試任務對代碼進行自動化測試。
本發(fā)明的有益技術效果在于:基于本發(fā)明所提供的一種基于devops的軟件開發(fā)管理平臺,整合了gogs、jenkins、sonar、kubernetes等多種開源工具,為軟件項目的整個生命周期提供一站式服務,加強了開發(fā)、測試和運維之間的溝通,實現(xiàn)軟件開發(fā)、測試和運維一體化,同時實現(xiàn)持續(xù)部署,減少人工投入,降低人為出錯,而且可及時發(fā)現(xiàn)軟件問題,加快軟件的迭代周期,符合未來發(fā)展的需求;同時,本發(fā)明所提供的一種基于devops的軟件開發(fā)管理方法操作簡單靈活,應用性強,有利于滿足用戶的自身需求。
通過以下的描述并結合附圖,本發(fā)明將變得更加清晰,這些附圖用于解釋本發(fā)明的實施例。
附圖說明
圖1是本發(fā)明一種基于devops的軟件開發(fā)管理平臺的系統(tǒng)框圖。
圖2是本發(fā)明的軟件開發(fā)管理平臺的應用管理模塊一具體實施例的內部模塊框圖。
圖3是本發(fā)明的軟件開發(fā)管理平臺的構建管理模塊一具體實施例的內部模塊框圖。
圖4是本發(fā)明的軟件開發(fā)管理平臺的部署管理模塊一具體實施例的內部模塊框圖。
圖5是本發(fā)明一種基于devops的軟件開發(fā)管理方法的流程圖。
圖6是本發(fā)明的軟件開發(fā)管理方法一具體實施例的實現(xiàn)流程圖。
具體實施方式
為使本領域的普通技術人員更加清楚地理解本發(fā)明的目的、技術方案和優(yōu)點,以下結合附圖和實施例對本發(fā)明做進一步的闡述,附圖中類似的組件標號代表類似的組件。顯然,以下將描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
首先,參照圖1,本發(fā)明所提供的一種基于devops的軟件開發(fā)管理平臺包括集群管理模塊11、應用管理模塊12、構建管理模塊13以及部署管理模塊14。
所述軟件開發(fā)管理平臺整合了gogs、jenkins、sonar、docker、kubernetes等多種開源工具,其中,集群管理模塊11用于供用戶使用kubernetes創(chuàng)建集群,以管理多個服務器,用以資源和服務的部署;應用管理模塊12用于供用戶創(chuàng)建應用并將應用的服務項目、代碼及用戶數(shù)據(jù)保存到集群中以提供用戶權限管理和代碼管理,同時,應用的代碼還會被同步到gogs中;構建管理模塊13用于供用戶構建所述應用管理模塊12中管理的代碼并對代碼進行靜態(tài)分析;部署管理模塊14用于供用戶創(chuàng)建并執(zhí)行部署任務。其中,所述部署管理模塊14還可對服務項目進行監(jiān)控和升級。
結合圖2,在某些實施例,例如本實施例中,所述應用管理模塊12包括應用創(chuàng)建單元121、代碼管理單元122以及代碼封版單元123。
其中,應用創(chuàng)建單元121用于設置應用的服務項目,并將每一服務項目關聯(lián)到相應的git項目;代碼管理單元122用于創(chuàng)建和管理git倉庫,并將編輯處理后的代碼上傳保存至git倉庫中;代碼封版單元123用于為git倉庫創(chuàng)建分支和標記以定義編輯處理后的代碼的版本并對其進行封版。
基于上述設計,用戶將多個服務器加入到所述軟件開發(fā)管理平臺,通過集群管理模塊11對多個服務器進行集群,以實現(xiàn)對多個服務器的管理,便于資源管理和服務部署;然后,用戶創(chuàng)建應用,為應用創(chuàng)建服務項目,每個服務項目對應一個git項目;其中,所述git項目可為現(xiàn)有項目或新建項目,若為現(xiàn)有項目,用戶可直接下載git項目中的代碼并對其進行編輯處理;若為新建項目,在創(chuàng)建git項目時,用戶需將khala框架的基礎代碼復制到git項目中,并對其進行編輯處理。
編輯處理后的代碼通過所述代碼管理單元122上傳保存至git倉庫中,以實現(xiàn)代碼的管理;再由所述代碼封版單元123為git倉庫創(chuàng)建分支和標記以定義編輯處理后的代碼的版本,并在版本開發(fā)完成后,對代碼進行封版。
再結合圖3,在某些實施例,例如本實施例中,所述構建管理模塊13包括任務構建單元131、定時單元132、鏡像管理單元133以及靜態(tài)分析單元134。
其中,任務構建單元131用于創(chuàng)建和管理構建代碼的任務以對代碼進行構建;定時單元132用于創(chuàng)建定時器以根據(jù)約定的時間間隔,定時通知所述任務構建單元131進行代碼構建;鏡像管理單元133用于管理所述任務構建單元131構建的docker鏡像;靜態(tài)分析單元134用于靜態(tài)分析所述應用管理模塊12中管理的代碼。代碼的構建可通過調用jenkins進行代碼構建,構建的docker鏡像會push到docker的鏡像倉庫中進行管理;而定時單元132中,利用創(chuàng)建定時器以定時通知任務構建單元131進行代碼構建,有利于提高所述軟件開發(fā)管理平臺的實用性,加快軟件的迭代周期。
結合圖4,在某些實施例,例如本實施例中,所述部署管理模塊14包括資源管理單元141以及服務部署單元142。
其中,資源管理單元141用于將資源管理服務部署到集群中,為部署任務提供數(shù)據(jù)庫;服務部署單元142用于創(chuàng)建部署任務,將所述構建管理模塊13中構建的docker鏡像及可部署腳本部署到集群中,以對代碼進行自動化測試。
基于上述設計,用戶可根據(jù)開發(fā)的需求自主創(chuàng)建應用的服務項目,具有個性化,而且所述軟件開發(fā)管理平臺整合了多種開源工具以規(guī)范軟件開發(fā)流程,同時為軟件開發(fā)的生命周期提供了統(tǒng)一管理平臺,實現(xiàn)持續(xù)部署,減少人工投入,降低人為錯誤,同時加快軟件的迭代周期。
當然,在本發(fā)明的其他實施例中,所述軟件開發(fā)管理平臺還可包括黑客測試單元以供用戶編寫腳本進行黑客測試,其余結構和功能均和本實施例相同。
參照圖5和圖6,本發(fā)明還提供了一種基于devops的軟件開發(fā)管理方法,該方法包括以下步驟:
步驟s101,創(chuàng)建集群以管理多個服務器;用戶使用本發(fā)明的軟件開發(fā)管理平臺時,先將多個服務器加入到平臺中,再利用kubernetes創(chuàng)建集群以管理多個服務器,用以資源和服務部署,并且對應用進行監(jiān)控和升降級。
步驟s102,創(chuàng)建應用,為應用創(chuàng)建服務項目,并將應用的服務項目、代碼及用戶數(shù)據(jù)保存到集群中以提供用戶權限管理和代碼管理,同時,應用的信息還會被同步到gogs中。參照圖6,在本優(yōu)選實施例中,步驟s102包括以下步驟:步驟s21,設置應用的服務項目,并將每一服務項目關聯(lián)到相應的git項目;步驟s22,創(chuàng)建和管理git倉庫,編輯處理代碼,并將編輯處理后的代碼上傳保存至git倉庫中;步驟s23,為git倉庫創(chuàng)建分支和標記以定義編輯后的代碼的版本并對其進行封板。
其中,所述git項目可為現(xiàn)有項目或新建項目,當git項目為現(xiàn)有項目時,用戶可直接下載git項目中的代碼并對其進行編輯處理,然后將編輯處理后的代碼上傳并保存至git倉庫中;當git項目為新建項目時,在創(chuàng)建git項目時,用戶需將khala框架的基礎代碼復制到git項目中,再進行代碼的編輯處理,然后將編輯處理后的代碼上傳并保存至git倉庫中。
步驟s103,構建并靜態(tài)分析步驟s102保存至git倉庫的編輯處理后的代碼。參照圖6,在本優(yōu)選實施例中,步驟s103包括以下步驟:步驟s31,構建通知;步驟s32,構建代碼,jenkins接收到構建通知后構建代碼,構建出docker鏡像及可部署腳本;步驟s33,鏡像管理,構建的docker鏡像push到docker的鏡像倉庫進行管理。其中,在本優(yōu)選實施例中,構建通知的方式為手動觸發(fā)通知,手動觸發(fā)通知是基于git的觸發(fā)機制,當編輯處理后的代碼被上傳并保存至git倉庫后,git倉庫通知jenkins進行代碼構建。
當然,在本發(fā)明的其他實施例中,所述步驟s31的構建通知的方式可自動觸發(fā)通知,自動觸發(fā)通知是利用定時單元132中創(chuàng)建的定時器,根據(jù)約定的時間間隔,定時通知所述任務構建單元131進行代碼構建,其余結構和功能均與本實施例相同。
在某些實施例,例如本實施例中,步驟s103還包括步驟s311,當編輯處理后的代碼保存到git倉庫后,觸發(fā)sonar對代碼進行靜態(tài)分析,獲得代碼分析報告,根據(jù)代碼分析報告可及時查出代碼中潛在的非功能性問題,找出代碼的缺陷,降低編輯代碼時的人為錯誤,提高測試效率。
步驟s104,創(chuàng)建并執(zhí)行部署任務。參照圖6,在本優(yōu)選實施例中,步驟s104包括以下步驟:步驟s41,使用docker的鏡像技術將資源管理服務部署到集群中,為部署任務提供數(shù)據(jù)庫;步驟s42,部署通知;步驟s43,部署任務,將構建的docker鏡像及可部署腳本部署到集群中,觸發(fā)測試任務對代碼進行自動化測試。其中,在本優(yōu)選實施例中,部署通知的方式為自動觸發(fā)通知,自動觸發(fā)通知為當docker鏡像push到docker的鏡像倉庫中時,鏡像倉庫通知kubernetes進行服務部署。無需人為過多的干預軟件開發(fā)、測試和運維的操作,降低人為錯誤。而將服務部署至集群中將觸發(fā)自動化測試任務,對代碼進行自動化測試。
當然,在本發(fā)明的其他實施例中,所述步驟s42的部署通知的方式可為手動觸發(fā)通知,手動觸發(fā)通知即步驟s32的構建代碼后,直接創(chuàng)建部署任務觸發(fā)通知命令,無需經(jīng)由保存docker鏡像至鏡像倉庫觸發(fā)通知部署任務的進行,其余結構和功能均與本實施例相同。
基于上述軟件開發(fā)管理方法,應用的服務項目、代碼及用戶數(shù)據(jù)均由用戶自己設置,且操作靈活簡潔,應用性強,同時加強了軟件開發(fā)、測試和運維之間的溝通。
綜上所述,本發(fā)明所提供的基于devops的軟件開發(fā)管理平臺及方法,整合了多種開源工具,提高平臺的可靠性、穩(wěn)定性和安全性。通過利用kubernetes集群以實現(xiàn)多個服務器的管理,并對部署進行在線升級和擴容;同時基于git的觸發(fā)機制,可自動在代碼提交后進行持續(xù)集成,減少人工工作量,并利用sonar自動進行代碼靜態(tài)分析,可及時查出代碼的非功能性錯誤;同時用戶可根據(jù)自身需要創(chuàng)建應用,具有個性化,而且通過各種開源工具的配合使用,將軟件開發(fā)、測試和運維一體化,加強軟件開發(fā)、測試和運維之間的溝通,規(guī)范了軟件開發(fā)的流程,實現(xiàn)了持續(xù)部署,減少人工投入和降低人為出錯的概率;同時實現(xiàn)軟件開發(fā)的生命周期的統(tǒng)一管理,提高部署和監(jiān)控的效率和安全性,加快軟件的迭代周期,符合未來的發(fā)展需要。
以上所述僅為本發(fā)明的優(yōu)選實施例,而非對本發(fā)明做任何形式上的限制。本領域的技術人員可在上述實施例的基礎上施以各種等同的更改和改進,凡在權利要求范圍內所做的等同變化或修飾,均應落入本發(fā)明的保護范圍之內。