說明:改文檔主要用于開發人員改造現有系統,快速使用持續繼承自動部署。實作開發、測試、生産環境自動打包。解決頻繁打包,替換配置檔案出錯等等問題。讓一切自動化起來。
第一部分:項目修改部分
1、修改service.sh腳本。
替換項目下/main/resource/bin中的service.sh檔案。注意:标注部分請替換成你所修改的服務的MAINCLASSNAME。
#!/bin/bash
#project directory
MAINCLASSNAME="com.reapal.main.CoreMain"
if [ -z "$BASE_DIR" ] ; then
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*->\(.*\)$'`
if expr "$link" : '/.*'> /dev/null; then
PRG="$link"
else
PRG="`dirname"$PRG"`/$link"
fi
done
BASE_DIR=`dirname "$PRG"`/..
# make it fully qualified
BASE_DIR=`cd "$BASE_DIR"&& pwd`
#echo "Benchtest is at$BASE_DIR"
source $BASE_DIR/bin/env.sh
AS_USER=`whoami`
LOG_DIR="$BASE_DIR/log"
PID_DIR="$BASE_DIR/log"
PID_FILE="$PID_DIR/.run.pid"
CONFIG_FILE=" $BASE_DIR"
function running(){
if [ -f "$PID_FILE" ]; then
pid=$(cat "$PID_FILE")
process=`ps aux | grep " $pid" | grep -v grep`;
if [ "$process" =="" ]; then
return 1;
return 0;
return 1
}
function start_server() {
if running; then
echo "is running."
exit 1
mkdir -p $PID_DIR
mkdir -p $LOG_DIR
chown -R $AS_USER $PID_DIR
chown -R $AS_USER $LOG_DIR
sleep 1
nohup $JAVA $SERVER_ARGS$MAINCLASSNAME $CONFIG_FILE >/dev/null 2>&1 &
echo $! > $PID_FILE
chmod 755 $PID_FILE
sleep 1;
function stop_server() {
if ! running; then
echo "service is notrunning."
count=0
pid=$(cat $PID_FILE)
while running;
do
let count=$count+1
echo "Stopping $counttimes"
if [ $count -gt 5 ]; then
echo "kill -9 $pid"
kill -9 $pid
kill $pid
sleep 3;
echo "Stop servicesuccessfully."
rm $PID_FILE
function help() {
echo "Usage: startup.sh{start|stop}" >&2
echo "start:start the server"
echo "stop:stop the server"
command=$1
shift 1
case $command in
start)
start_server $@;
;;
stop)
stop_server $@;
*)
help;
exit 1;
esac
說明:此腳本做了細微修改,注釋掉了啟動後列印日志的代碼。同時去掉了自動建立日志檔案的代碼。日志檔案通過log4j配置生成。便于日切。
2、基于dubbo的服務實作流程(請參考base-core項目)
(1)修改pom.xml檔案。
在pom.xml檔案的project标簽内(倒數第二行)添加如下配置:

說明:true添加的地方說明時預設的配置。就是使用maven打包不傳參時,預設使用的配置。
(2)修改resource/assembly/assembly.xml檔案
特别說明:如果你的項目之前的标簽配置的是/src/main/resources請在其前面添加${project.basedir},修改之後如下:
上面修改主要解決windows和linux下檔案路徑問題。添加${project.basedir}後,linux系統就可以正常打包了。如果缺少此處,mac、linux系統是無法打包的。
(3)修改resource/assembly/assembly.xml檔案
(4)準備env檔案。如下圖所示,在resource中添加如下目錄的檔案(與環境相關的配置)。
(5)如何測試自己配置的是否成功?
使用maven指令打包
clean package -P dev 或者 clean package -P qa clean package -P prod
檢查打包中的配置檔案是否正确。
3、基于dubbo的web項目實作流程(請參考base-web-auth項目)
(1)同2(1)中修改。修改完後如下所示。
(2)繼續修改pom.xml檔案(與dubbo服務不通之處)
按照下圖添加對應配置。
配置:dev
添加maven-war-plugin配置:
(3)測試:同2中測試。
第二部分:jenkins持續內建配置
1、前提:你的代碼已經在gitlab上托管。(請參考giltlab文檔,此處不做說明)
Gitlab托管代碼,首次送出請在項目内添加.gitignore檔案,防止一些不必要的檔案送出。
下圖僅供參考:
2、Jenkins配置
(1)jenkins build配置
(2)post steps配置,可以配置多個module,詳情請參考basev2項目。
(3)目标伺服器準備
如上圖10.168.16.115即為項目自動打包成功後釋出的伺服器位址。使用前提如下:
u在目标伺服器建立dev使用者工作空間為/home/dev
u在home下準備啟動腳本publish.sh
内容如下:
#defined
BASE_HOME="/home/dev"
PROJECT_NAME="$1"
DIR="$2"
#param validate
if [ $# -lt 2 ]; then
echo "you must use like this : ./publish.sh "
exit
if [ ! -f $DIR ] ; then
echo "*****The destination [$DIR] is not exist , pleast confirm it first !!! ***********"
if [ -n "`echo $DIR | sed -n /\.war$/p`" ] ;then
#shutdown tomcat
"$BASE_HOME"/$PROJECT_NAME/bin/shutdown.sh
echo "tomcat shutdown"
ID=`ps -ef | grep java | grep $PROJECT_NAME|awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
kill -9 $id
echo "killed $id"
#publish project
echo "scan no tomcat pid,$PROJECT_NAME publishing"
rm -rf "$BASE_HOME"/$PROJECT_NAME/webapps/ROOT
cp $DIR "$BASE_HOME"/$PROJECT_NAME/webapps/ROOT.war
#start tomcat
"$BASE_HOME"/$PROJECT_NAME/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT conslone url"
elif [ -n "`echo $DIR | sed -n /\.tar\.gz$/p`" ] ; then
#stop provider
"$BASE_HOME"/$PROJECT_NAME/bin/service.sh stop
echo "service stop"
#unzip tar.gz
rm -rf "$BASE_HOME"/$PROJECT_NAME/
tar -zxf$DIR -C ./
cd "$BASE_HOME"/$PROJECT_NAME/bin
sed -i 's/\r//' *.sh
chmod 775 *.sh
#start provider
"$BASE_HOME"/$PROJECT_NAME/bin/service.sh start
echo "****************The DIR must endwith <.war>or <.tar.gz> *****************************"
特别說明:
如果是dubbo服務,無需做其他準備。如果是web項目,請先在伺服器的/home/dev/目錄下準備好tomcat并設定好端口。
如果出現權限不足,請執行chown -R dev:dev /home/dev/*