jenkins+Maven持续继承中的不同环境配置问题解决

说明:改文档主要用于开发人员改造现有系统,快速使用持续继承自动部署。实现开发、测试、生产环境自动打包。解决频繁打包,替换配置文件出错等等问题。让一切自动化起来。

第一部分:项目修改部分

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"

fi

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;

else

return 0;

fi

else

return 1

fi

}

function start_server() {

if running; then

echo "is running."

exit 1

fi

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."

exit 1

fi

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

else

kill $pid

fi

sleep 3;

done

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

内容如下:

#!/bin/bash

#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

fi

if [ ! -f $DIR ] ; then

echo "*****The destination [$DIR] is not exist , pleast confirm it first !!! ***********"

exit

fi

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

do

kill -9 $id

echo "killed $id"

done

echo "---------------"

#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"

ID=`ps -ef | grep java | grep $PROJECT_NAME|awk '{print $2}'`

echo $ID

for id in $ID

do

kill -9 $id

echo "killed $id"

done

#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

else

echo "****************The DIR must endwith <.war>or <.tar.gz> *****************************"

exit

fi

特别说明:

如果是dubbo服务,无需做其他准备。如果是web项目,请先在服务器的/home/dev/目录下准备好tomcat并设置好端口。

如果出现权限不足,请执行chown -R dev:dev  /home/dev/*

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容