通常而言,軟件開發模型有常見的瀑布模型、迭代開發模型、以及最近出現的敏捷開發模型等不一樣的模型。每種模型有各自應用場景,Git Flow是構建在Git之上的一個組織軟件開發活動的模型,Git Flow重點解決的是因爲源代碼在開發過程當中的各類衝突致使開發活動混亂的問題。在此介紹Git Flow是因爲walle依賴它的思想進行持續部署。php
開發過程當中可能出現的git flowjava
Git Flow模型中定義了主分支和輔助分支兩類分支。其中主分支用於組織與軟件開發、部署相關的活動;輔助分支組織爲了解決特定的問題而進行的各類開發活動。分支的名字是一種共識,更重要的是它承擔的責任。git
主分支是全部開發活動的核心分支。全部的開發活動產生的輸出物最終都會反映到主分支的代碼中。主分支分爲master分支和development分支。github
master分支上存放的應該是隨時可供在生產環境中部署的代碼,它承擔的責任就是:僅在發佈新的可供部署的代碼時才更新到master分支上的代碼。當開發活動告一段落,產生了一份新的可供部署的代碼時,master分支上的代碼會被更新。同時,每一次更新,最好添加對應的版本號標籤(TAG)。web
develop分支是保存當前最新開發成果的分支,它承擔的責任就是功能開發完畢等待最後QA的驗收,一般這個分支上的代碼也是可進行每日夜間發佈的代碼。當代碼已經足夠穩定時,就能夠將全部的開發成果合併回master分支了。shell
輔助分支是用於組織解決特定問題的各類軟件開發活動的分支,它的生存週期伴隨着它的功能完成而消失。輔助分支包括:bash
當這些分支完成它的使命以後在merge到主分支以後,也將被刪除。服務器
Git Flow開發模型從源代碼管理角度對一般意義上的軟件開發活動進行了約束,讓小組各個成員之間的開發相互隔離,可以有效避免處於開發狀態中的代碼相互影響而致使的效率低下和混亂,各自開發團隊根據本身的特色和節奏自行剪裁或擴展。websocket
Walle 一個web部署系統工具,可能也是個持續發佈工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各類web代碼發佈,靜態的HTML、動態PHP、須要編譯的JAVA等,用戶權限管理,各類自定義高級任務。一鍵上線、回滾。composer
項目地址:walle-瓦力,上線開源兩個月,目前已支持超過十家企業線上部署使用,每週更新一個版本,持續帶來新特性。
walle部署在一臺宿主機提供一個web UI,方便用戶自主更新代碼部署到目標機羣。Walle是一個跑在LNMP(LAMP)上的PHP服務,宿主機與目標機羣創建信任,經過操做bash命令來實現代碼同步、自定義高級任務。
宿主機、目標機羣、操做用戶關係
用戶的項目可自定義git/svn代碼託管地址、宿主機、目標機羣、高級任務等。配置完成後可快速複製當前配置、檢測配置是否正常、以及該項目的審覈管理員和成員。
walle的持續部署與Git Flow思想一致,在不一樣的環境部署不一樣的分支。劃分三個環境:測試環境、預發佈環境、生產環境。測試環境和預發佈環境推薦分支部署,生產環境推薦tag部署。固然,這更適合milestone開發方式,若是是天天快速迭代多個版本,打tag成本就有點高了。
開發者選擇要上線的項目,選擇要上線的分支和版本提交上線單,項目管理員審覈經過後,開發者發起上線。
部署是在一臺宿主機拉取代碼,作編譯、配置後,向目標機羣分發,執行相關目標機羣任務。部署流程拆分爲如下6個環節,其中1-5爲在宿主機進行,6在目標機羣執行。
爲保證服務的完整性,先同步代碼,後切換服務。部署發佈每次都會有版本記錄保留,版本上線事故一旦發生,回滾可瞬間完成。可配置線上版本最大保留數,過時的版本被會刪除,同時也就不能回滾被刪除的版本。對於須要編譯、自定義多任務輔助,可配置前置、後置操做自定義任務;同時提供一些預置變量({WORKSPACE}宿主機的當前獨立空間、目標機webroot,{VERSION}版本庫目錄)方便用戶操做自定義任務。
上線過程直到目標機羣所有完成以前,若有任一環節失敗將會回滾,須要從新上線,同時會把錯誤信息提示用戶。
項目地址:walle-瓦力,官方主頁-walle 瓦力。歡迎瞭解、star、fork。
功能強大,且免費開源的walle-web 瓦力
終於更新2.0
了!佔用了我幾乎全部業餘時間,精力與金錢付出換各位使用收益,望各位喜歡順手 star
以示支持,項目更好亦反饋予你。目前 2.0
預覽版還沒有達到徹底企業可用狀態,請保持關注,我會在公衆號更新(在最下面)。
gitlab
的RESTful API
,類gitlab
的權限模型,未來打通gitlab
,良心的驚喜websocket
實時展現部署中的 shell console