摘要:項目地址瓦力,上線開源兩個月,目前已支持超過十家企業線上部署使用,每周更新一個版本,持續帶來新特性。支持開放接口支持第三方了解更多項目地址瓦力,官方主頁瓦力。
1 Git Flow
一般而言,軟件開發模型有常見的瀑布模型、迭代開發模型、以及最近出現的敏捷開發模型等不同的模型。每種模型有各自應用場景,Git Flow是構建在Git之上的一個組織軟件開發活動的模型,Git Flow重點解決的是由于源代碼在開發過程中的各種沖突導致開發活動混亂的問題。在此介紹Git Flow是由于walle依賴它的思想進行持續部署。
開發過程中可能出現的git flow
1.1 Git Flow中的分支Git Flow模型中定義了主分支和輔助分支兩類分支。其中主分支用于組織與軟件開發、部署相關的活動;輔助分支組織為了解決特定的問題而進行的各種開發活動。分支的名字是一種共識,更重要的是它承擔的責任。
1.2 主分支主分支是所有開發活動的核心分支。所有的開發活動產生的輸出物最終都會反映到主分支的代碼中。主分支分為master分支和development分支。
1.2.1 master分支master分支上存放的應該是隨時可供在生產環境中部署的代碼,它承擔的責任就是:僅在發布新的可供部署的代碼時才更新到master分支上的代碼。當開發活動告一段落,產生了一份新的可供部署的代碼時,master分支上的代碼會被更新。同時,每一次更新,最好添加對應的版本號標簽(TAG)。
1.2.2 develop分支develop分支是保存當前最新開發成果的分支,它承擔的責任就是功能開發完畢等待最后QA的驗收,通常這個分支上的代碼也是可進行每日夜間發布的代碼。當代碼已經足夠穩定時,就可以將所有的開發成果合并回master分支了。
1.3輔助分支輔助分支是用于組織解決特定問題的各種軟件開發活動的分支,它的生存周期伴隨著它的功能完成而消失。輔助分支包括:
用于并行開發新功能時所使用的feature分支;
用于輔助版本發布的release分支;
用于修正生產代碼中的缺陷的hotfix分支。
當這些分支完成它的使命之后在merge到主分支之后,也將被刪除。
Git Flow開發模型從源代碼管理角度對通常意義上的軟件開發活動進行了約束,讓小組各個成員之間的開發相互隔離,能夠有效避免處于開發狀態中的代碼相互影響而導致的效率低下和混亂,各自開發團隊根據自己的特點和節奏自行剪裁或擴展。
2 Walle介紹Walle 一個web部署系統工具,可能也是個持續發布工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各種web代碼發布,靜態的HTML、動態PHP、需要編譯的JAVA等,用戶權限管理,各種自定義高級任務。一鍵上線、回滾。
項目地址:walle-瓦力,上線開源兩個月,目前已支持超過十家企業線上部署使用,每周更新一個版本,持續帶來新特性。
2.2 walle的組件關系、原理walle部署在一臺宿主機提供一個web UI,方便用戶自主更新代碼部署到目標機群。Walle是一個跑在LNMP(LAMP)上的PHP服務,宿主機與目標機群建立信任,通過操作bash命令來實現代碼同步、自定義高級任務。
宿主機、目標機群、操作用戶關系
用戶的項目可自定義git/svn代碼托管地址、宿主機、目標機群、高級任務等。配置完成后可快速復制當前配置、檢測配置是否正常、以及該項目的審核管理員和成員。
3 walle與Git的配合walle的持續部署與Git Flow思想一致,在不同的環境部署不同的分支。劃分三個環境:測試環境、預發布環境、生產環境。測試環境和預發布環境推薦分支部署,生產環境推薦tag部署。當然,這更適合milestone開發方式,如果是每天快速迭代多個版本,打tag成本就有點高了。
3.1 部署環境開發者的feature分支開發、自測驗收通過后,merge到測試環境的develop分支,(QA)部署到測試環境,等待QA驗收。
QA提bug issue,開發者從develop切分支修正再次合并、部署、驗收。
3.1.2 預發布環境測試環境驗收通過之后,合并到預發布環境的master,部署預發布環境
QA全面回歸,發現問題提bug issue,開發者從master切分支修正再次合并、部署、驗收。
回歸完畢打tag,準備上線
3.1.3 生產環境上線驗收通過的tag
回歸測試,發現問題開發者從master切分支hotfix修正。
3.2 環境上線流程開發者選擇要上線的項目,選擇要上線的分支和版本提交上線單,項目管理員審核通過后,開發者發起上線。
4 Walle的部署流程部署是在一臺宿主機拉取代碼,做編譯、配置后,向目標機群分發,執行相關目標機群任務。部署流程拆分為以下6個環節,其中1-5為在宿主機進行,6在目標機群執行。
權限、目錄檢查,開辟一個上線的獨立空間以并行發布,防止同時部署出現代碼污染
pre-deploy任務,代碼檢出前的一些操作任務,如環境檢查
代碼從git/svn版本庫中檢出
post-deploy任務,代碼檢出之后操作任務,如java的mvn編譯,php的composer插件安裝
保留在獨立空間的代碼均會被同步至目標機群的一個版本庫中
全量更新:當所有機器都分發完畢,開始做pre-release任務(java暫停服務)、切換版本軟鏈、post-release任務( java啟動服務)
為保證服務的完整性,先同步代碼,后切換服務。部署發布每次都會有版本記錄保留,版本上線事故一旦發生,回滾可瞬間完成。可配置線上版本最大保留數,過期的版本被會刪除,同時也就不能回滾被刪除的版本。對于需要編譯、自定義多任務輔助,可配置前置、后置操作自定義任務;同時提供一些預置變量({WORKSPACE}宿主機的當前獨立空間、目標機webroot,{VERSION}版本庫目錄)方便用戶操作自定義任務。
上線過程直到目標機群全部完成之前,如有任一環節失敗將會回滾,需要重新上線,同時會把錯誤信息提示用戶。
5 Todo list支持Docker
開放接口
支持第三方hook
6 了解更多項目地址:walle-瓦力,官方主頁-walle 瓦力。歡迎了解、star、fork。
7 walle 2.0 驚艷亮相功能強大,且免費開源的walle-web 瓦力終于更新2.0了!占用了我幾乎所有業余時間,精力與金錢付出換各位使用收益,望各位喜歡順手 star 以示支持,項目更好亦反饋予你。目前 2.0 預覽版尚未達到完全企業可用狀態,請保持關注,我會在公眾號更新(在最下面)。
類gitlab的RESTful API,類gitlab的權限模型,將來打通gitlab,良心的驚喜
空間管理。意味著有獨立的空間資源:環境管理、用戶組、項目、服務器等
灰度發布。呼聲不斷,終于來了
websocket 實時展示部署中的 shell console
完善的通知機制。郵件、釘釘
全新的UI,我自己都被震憾到了,如絲般流暢
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21228.html
摘要:瓦力是一個支持多用戶多項目多環境同時部署的上線部署系統。詳見項目,或花滿樹官方說明,如果喜歡歡迎標,支持我們把瓦力做強大。詳情項目官網主頁文檔手冊更新介紹瓦力自動化部署工具 showImg(https://segmentfault.com/img/bVrjiG); Walle - 瓦力 是一個支持svn、git、多用戶、多項目、多環境同時部署的上線部署系統。 github項目 wall...
摘要:瓦力介紹一個部署系統工具,配置簡單功能完善界面流暢開箱即用支持版本管理,支持各種代碼發布,,,等代碼的發布回滾,可以通過來一鍵完成。 瓦力介紹 Walle 一個web部署系統工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各種web代碼發布,PHP,Python,JAVA等代碼的發布、回滾,可以通過web來一鍵完成。 功能列表 用戶分身份注冊、登錄 開發者...
摘要:瓦力介紹一個部署系統工具,配置簡單功能完善界面流暢開箱即用支持版本管理,支持各種代碼發布,,,等代碼的發布回滾,可以通過來一鍵完成。 瓦力介紹 Walle 一個web部署系統工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各種web代碼發布,PHP,Python,JAVA等代碼的發布、回滾,可以通過web來一鍵完成。 功能列表 用戶分身份注冊、登錄 開發者...
閱讀 3505·2021-11-23 10:13
閱讀 873·2021-09-22 16:01
閱讀 918·2021-09-09 09:33
閱讀 643·2021-08-05 09:58
閱讀 1725·2019-08-30 11:14
閱讀 1961·2019-08-30 11:02
閱讀 3274·2019-08-29 16:28
閱讀 1491·2019-08-29 16:09