shell腳本完成服務部署部分工作

微服務架構圖(圖片來源網絡,如有侵權聯系我)

好久沒有更新了,總想著寫點東西。

最近工作遇到了這樣的問題:測試環境的jenkins接二連三的被入侵,多次的環境搭建讓我身心俱疲。最近的一次環境受到影響,是因為我的環境使用了別個項目的jenkins,結果那臺機器被入侵后,導致我的環境無故受到牽連(不過這也是我的一個過失,在別的機器上加了自己的配置,沒有使用時,沒有刪除我的測試環境的相關配置)。

受影響的服務器進行了重裝。一是真的真的沒有時間配置jenkins,二是對網上下載的jenkins包的安全性表示懷疑,于是考慮自己手動完成服務的發布

在我發布項目的時候發現有些工作是重復的,于是果斷寫了簡單的shell腳本,完成部分服務部署工作

一、服務部署目錄結構

服務的目錄結構大概就是,以服務名為一個文件夾,文件夾下有start.sh腳本和stop.sh腳本,使用stop.sh殺死服務進程,使用start.sh啟動服務。功能比較簡單

服務目錄結構

二、編寫腳本思路

1、有一個文件叫dirFile,里面記錄著這臺服務器需要部署的服務名稱。start.sh和stop.sh文件,分別是開啟服務和殺死服務的命令,服務對應的名字默認為package_name 。注意:這兩個.sh文件的權限是可讀可寫可執行

2、讀取dirFile里的服務名,創建文件夾

3、將start.sh和stop.sh拷貝到創建好的文件夾中,替換.sh文件中的package_name 值,為所在文件夾的名字

三、原代碼

dirFile文件保存服務的名稱

thor-bigdata
thor-bus
thor-content
thor-multilingual
thor-quest
thor-task
thor-user
thor-version
thor-wallet

start.sh腳本

#啟動服務
nohup /usr/local/jdk/jdk-11.0.1/bin/java -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m -XX:MaxNewSize=256m  -jar /opt/local/bao/package_name/package_name.jar --spring.profiles.active=qa >>/tmp/package_name.log &  

#輸出日志
tail -f /tmp/package_name.log

stop.sh

#關閉進程
kill -9 `ps axu | grep "package_name.jar" | grep -v grep | awk '{print $2}'`  

#進入服務包所在文件夾
cd /opt/local/bao/package_name  

#刪除文件
rm -rf package_name.jar 

build.sh主要程序邏輯代碼

#!/bin/bash


while read line
do
  
  if [ ! -d "$line" ];then
    echo "創建文件夾" $line
    mkdir /opt/local/bao/$line
    cp stop.sh /opt/local/bao/$line/
    sed -i "s/package_name/$line/g"  /opt/local/bao/$line/stop.sh

    cp start.sh /opt/local/bao/$line/
    sed -i "s/package_name/$line/g"  /opt/local/bao/$line/start.sh

  fi
done < '/opt/local/build/dirFile'

代碼文件結構

四、寫在最后

jenkins環境重新部署還有其他方法,比如jenkins api

但是我想說的依然是那句話,我們是測試人員,我們要做的事不是“點點點點點......”。當你開始重復的做一件事的時候,你可以開始寫代碼了。

與君共勉。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容