自動化程序發布
<<自動化程序發布 - 繪圖.vsdx>>
服務啟用使用到的知識總結:
1、git
- git init 創建版本庫
- git clone 創建庫目錄
- git push 推送
- gogs服務器
2、docker
- docker ps
- docker images
- docker stop/start "container"
- docker build -t "container_name" .
- docker run -p 80:80 "images" bash
- docker exec -it "container" bash 進入容器
- docker-compose ps/logs
- docker-compose up -d
- Dockerfile與docker-compose.yml配置文件
3、rsync(同步代碼)
- /etc/rsync.password
- /etc/rsyncd
- 三種方式同步(本地同步、ssh通道同步、demon同步)
- rsync -av /databack [email protected]::www
4、svn
- svn checkout 遠程地址:與git類似
- svn checkout --username $svn_username --password $svn_password
5、 maven(編譯打包)
- mvn -pl dyjs-lib,dyjs-common-util clean install -U -DskipTests=true
- mvn clean package -DskipTests=true
6、ansible(遠程啟動服務)
- 遠程自動停止,啟動docker 容器服務
docker目錄映射
grpc環境依賴
grpcserver數據
庫環境
grpc環境依賴
宿主機mysql
具體的發布過程:
1、需要從gogs上遠程git clone版本庫到本地目錄,然後再進行git pull拉取遠程gogs服務器上的內容。
2、然後右鍵打開目錄,用
3、修改後的自動化腳本進行提交推送到gogs服務器上(git相關操作)
4、登錄自動化發布服務器172.18.40.215,進入自定義目錄/data/auto_test/lp_auto_deploy_test/ 運行git init 創建遠程初始庫,然後git clone 輸入gogs各種賬號密碼進行代碼更新。
5、創建自動化發布服務器容/data/auto_test/lp_auto_deploy_test/dyBuilder3.0
進入該目錄後,(之前通過docker buiod -t .構建好,docker-compose.yml文件需要的 基於JDK8的鏡像,docker ps檢查)檢查docker-compose.yml文件,然後docker up -d 啟用容器,運行命令docker-compose ps 可以查看到自動化服務是否正常啟用.日誌命令docker-compose logs.
7、創建/home/baseserver/grpcserver/目錄,git clone ,git clone下baserserver目錄,cd 該目錄後,執行docker-compose up -d 運行基於JDK8的grpc運行的容器。
5、進入grpc的docker容器,在/data/auto_test/lp_auto_deploy_test/dyBuilder3.0目錄下執行docker exec -it bash,進入映射好的自動化發布目錄/root/dyScript目錄,找到要發布的服務腳本,sh -x ./root/dyScript/lp_lszw_grpcser.sh 執行自動化發布命令。
6、然後進入/home/baseserver/grpcserver,查看是否自動化腳本執行成功。
7、同理分別運用自動化腳本創建zikpin\Eureke容器服務,先git clone,zikpin\Eureke自動化腳本。(主要註意端口問題)(目的會自動映射到相應的docker 容器)並自動啟用該服務。
8、登錄http://172.18.40.215:1001/進行測試,查看服務是否已經正常運行。
總結:
整個過程中,grpcsserver服務是運行在基於JDK8創建好的容器裏面,該容器時由docker-compose.yml文件進行創建好的,該容器啟用需要依賴zipkin與Eureke服務(這兩個服務也是運行在另外兩個基於JDK8的容器,同時也是由docker-compose.yml創建好的)。自動化腳本是由自定義Dockerfile文件進行build所需鏡像,並由docker-compose.yml進行基於之前build好的鏡像進行創建容器並啟用,然後把修改好的自動化腳本映射到該自動化docker容器,通過docker exec -it "container" bash 進入容器,執行相應服務的自動化腳本進行測試。
腳本邏輯:
- 定義了發布時間變量、發布執行過程存儲日誌目錄、json配置文件路徑、發布服務器ip、項目配置文件變量、svn代碼庫相關變量
- 首先通過svnpull()函數來對core_path路徑目錄判斷,看是否存在,如果不存在,則進行mkdir創建該目錄。否則通過wc -l命令鏡像判斷是否目錄為空,如果-le 0,則進行svn checkout進行檢出操作。否則,進行svn revert -R 進行舊版本的還原操作,然後進行svn update 更新到目錄$core_path
- modifie_config()函數主要是對同級目錄下grpcserver_mdf.sh腳本進行執行,(grpcserver_mdf.sh主要是修改了一些配置文件)
- mvncompile()函數則對core_path目錄下的代碼進行編譯、打包操作
- dev_rsync_start(),對編譯結果進行判斷,如果編譯結果-ge 1,則先通過ansible進行遠程停止待發布的服務器,然後進行rsync同步代碼到docker容器(遠程服務器),最後通過ansible遠程進行重啟服務器,這樣代碼已經同步到自定義好的docker容器了。
- deploy_info()函數主要輸出一些發布的系統信息
- ansible,下的hosts主要定義了ansible 遠程主機地址
自動化程序發布