參加過兩次公司生產環境的版本更新,最近一次讓我萌生了開發一個自動化部署平臺的念頭。雖然網上也有很多的自動化部署軟件,但仍是想本身動手寫一個。一來是爲了讓平臺更適應當前的實際狀況,也利於之後本身對平臺通用性的擴展;二來是爲了鍛鍊本身,給本身的空閒時間找點事情作,不至於虛度時光。html
如下是整理出的初稿,想到的點比較簡單,後面會持續完善。java
若是本文有幸被您看到,望能指點一二。linux
無論是積極的仍是消極的,請留下您的見解。git
程序開發好以後免不了部署。剛開始還好,手動打包、上傳、部署,也不須要多長時間。可是隨着規模的擴大,版本更新的頻繁,以上看似簡單的操做會變得愈來愈繁瑣,耗時也會程直線上升。 手動部署的全部操做還不可重用,即每次操做都須要從頭開始,浪費時間不說,不可靠和易出錯也是顯而易見的不足。
所以,能有一套程序幫咱們作這個事情勢在必行。
自動化部署平臺的初衷是最大化的簡化部署的步驟,作到「自動化」。而人工只須要作一些簡單的配置便可。shell
部署內容:
1. Java WEB部署
2. Java進程部署
部署來源:
1. 從版本服務器進行部署
2. 程序包上傳部署
部署實現方式:
1. linux下
擬採用java+shell腳本實現
2. windows下
擬採用java+bat批處理腳本實現數據庫
本自動化部署平臺需包含一下功能
最終目的:最大化實現只要是經過本平臺進行部署的工程,都能經過平臺管理其完整的生命過程。其中包括項目的建立,更新,刪除,以及項目運行期間的各類日誌的抓取和展現。達到部分運維的效果。
a. 從版本服務器(svn/git)上獲取最新代碼
b. 自動打包(jar、war)
c. 支持程序包(jar、war)的上傳
d. 支持工程內部配置文件的修改
e. 根據配置或者腳本自動部署
f. 支持經過平臺對部署的工程進行試運行,啓用,中止等功能
g. 部署過程當中的日誌顯示
h. 部署完後運行中的日誌顯示
i. 設置權限系統,不一樣角色的用戶登陸平臺擁有不一樣的操做權限
a) 開發人員:
b) 運維人員:
c) 管理人員:
d) 測試人員:
j. 支持數據庫的操做(備份/更新/建立/刪除)windows