Java Web專案檔案更新部署的優化方案
阿新 • • 發佈:2018-12-22
現狀
專案已部署在生產環境的WebSphere伺服器叢集下,但公司並沒有在生產環境下整合專案自動構建工具Jenkins。但是,由於專案穩定性的需要,又不能進行全量部署或增量部署。
注:如果隨意進行全量部署,可能會將線上已經穩定的程式碼替換掉,變成測試環境中未經嚴格檢驗的程式碼。
傻瓜式部署
所以,當有業務邏輯發生變更時,為了謹慎起見,只能替換髮生變動的位元組碼檔案或jsp檔案。
其中,假設我們需要替換的檔案是HelloWorld.class,部署的專案位於/opt/IBM路徑下,那麼需要執行的Linux命令如下:
找出HelloWorld.class所在路徑並進入:
find /opt/IBM/ -name 'HelloWorld.class' cd /opt/IBM/foundpath/
檢查HelloWorld.class的最後修改日期:
ll HelloWorld.class
上傳最新的HelloWorld.class檔案:
rz -y
再次檢查:
ll HelloWorld.class
一共需要執行四條命令才能完成對HelloWorld.class檔案的更新操作,而且極易出錯。
優化指令碼
現在Shell指令碼(deploy.sh)中寫入以上四條命令,以達到高效低失誤執行的目的:
#將sh後的第一個引數定義為變數var var=$1 echo var: $var backdir=/opt/backup/ updir=/opt/upload/ #找到vars對應檔名所在的路徑,並分離出檔名和路徑名 wholename=find /opt/IBM -name $var echo wholename: $wholename #分離出路徑名和檔名 dirname=${wholename%/*} filename=${wholename##*/} echo dirname: $dirname echo filename: $filename #進入檔案所在的路徑 cd $dirname echo firstcheck: ls -l $filename mv $filename $backdir #進入上傳資料夾,移動覆蓋原有檔案 cd $updir mv $var $dirname #進入檔案所在的路徑,進行檢查 cd $dirname echo secondcheck: ls -l $filename
需要注意,以上指令碼只適合對只有唯一命名的class檔案進行替換。比如find命令的搜尋範圍/opt/IBM資料夾下只有HelloWorld.class,就可以使用以上指令碼。