1. 程式人生 > >自動化程序發布

自動化程序發布

操作 root gogs 知識 uio 代碼更新 存在 word doc

<<自動化程序發布 - 繪圖.vsdx>>

技術分享圖片

服務啟用使用到的知識總結:

1git

  • git init 創建版本庫
  • git clone 創建庫目錄
  • git push 推送
  • gogs服務器

2docker

  • 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

5maven(編譯打包)

  • mvn -pl dyjs-lib,dyjs-common-util clean install -U -DskipTests=true
  • mvn clean package -DskipTests=true

6ansible(遠程啟動服務)

  • 遠程自動停止,啟動docker 容器服務

技術分享圖片技術分享圖片技術分享圖片技術分享圖片

docker目錄映射

grpc環境依賴

技術分享圖片技術分享圖片

grpcserver數據

庫環境

技術分享圖片

grpc環境依賴

宿主機mysql

具體的發布過程:

1、需要從gogs上遠程git clone版本庫到本地目錄,然後再進行git pull拉取遠程gogs服務器上的內容。

2、然後右鍵打開目錄,用

visual studio code打開代碼進行腳本修改

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 遠程主機地址

自動化程序發布