
好久沒(méi)有更新了,總想著寫(xiě)點(diǎn)東西。
最近工作遇到了這樣的問(wèn)題:測(cè)試環(huán)境的jenkins接二連三的被入侵,多次的環(huán)境搭建讓我身心俱疲。最近的一次環(huán)境受到影響,是因?yàn)槲业沫h(huán)境使用了別個(gè)項(xiàng)目的jenkins,結(jié)果那臺(tái)機(jī)器被入侵后,導(dǎo)致我的環(huán)境無(wú)故受到牽連(不過(guò)這也是我的一個(gè)過(guò)失,在別的機(jī)器上加了自己的配置,沒(méi)有使用時(shí),沒(méi)有刪除我的測(cè)試環(huán)境的相關(guān)配置)。
受影響的服務(wù)器進(jìn)行了重裝。一是真的真的沒(méi)有時(shí)間配置jenkins,二是對(duì)網(wǎng)上下載的jenkins包的安全性表示懷疑,于是考慮自己手動(dòng)完成服務(wù)的發(fā)布
在我發(fā)布項(xiàng)目的時(shí)候發(fā)現(xiàn)有些工作是重復(fù)的,于是果斷寫(xiě)了簡(jiǎn)單的shell腳本,完成部分服務(wù)部署工作
一、服務(wù)部署目錄結(jié)構(gòu)
服務(wù)的目錄結(jié)構(gòu)大概就是,以服務(wù)名為一個(gè)文件夾,文件夾下有start.sh腳本和stop.sh腳本,使用stop.sh殺死服務(wù)進(jìn)程,使用start.sh啟動(dòng)服務(wù)。功能比較簡(jiǎn)單

二、編寫(xiě)腳本思路
1、有一個(gè)文件叫dirFile,里面記錄著這臺(tái)服務(wù)器需要部署的服務(wù)名稱。start.sh和stop.sh文件,分別是開(kāi)啟服務(wù)和殺死服務(wù)的命令,服務(wù)對(duì)應(yīng)的名字默認(rèn)為package_name 。注意:這兩個(gè).sh文件的權(quán)限是可讀可寫(xiě)可執(zhí)行
2、讀取dirFile里的服務(wù)名,創(chuàng)建文件夾
3、將start.sh和stop.sh拷貝到創(chuàng)建好的文件夾中,替換.sh文件中的package_name 值,為所在文件夾的名字
三、原代碼
dirFile文件保存服務(wù)的名稱
thor-bigdata
thor-bus
thor-content
thor-multilingual
thor-quest
thor-task
thor-user
thor-version
thor-wallet
start.sh腳本
#啟動(dòng)服務(wù)
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
#關(guān)閉進(jìn)程
kill -9 `ps axu | grep "package_name.jar" | grep -v grep | awk '{print $2}'`
#進(jìn)入服務(wù)包所在文件夾
cd /opt/local/bao/package_name
#刪除文件
rm -rf package_name.jar
build.sh主要程序邏輯代碼
#!/bin/bash
while read line
do
if [ ! -d "$line" ];then
echo "創(chuàng)建文件夾" $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'

四、寫(xiě)在最后
jenkins環(huán)境重新部署還有其他方法,比如jenkins api
但是我想說(shuō)的依然是那句話,我們是測(cè)試人員,我們要做的事不是“點(diǎn)點(diǎn)點(diǎn)點(diǎn)點(diǎn)......”。當(dāng)你開(kāi)始重復(fù)的做一件事的時(shí)候,你可以開(kāi)始寫(xiě)代碼了。
與君共勉。