以前配置过一个jenkins参数化构建的项目,记录一下。
配置过程如下:
一、构建一个自由风格的软件项目。
二、勾选参数化构建过程。
注意:需要先下载插件Git Parameter
三、配置Git
四、添加执行shell步骤
代码如下:
#配置path变量
export path=/mnt/jenkins/workspace/jsw_gd_git/jsw_new_gd
#进入git目录
cd $path
#一、maven打包步骤:清除-替换配置文件-打包
mvn clean
# 替换配置文件
if [ "$deploy_dir" = "test" ]; then
echo "测试环境"
if [ -f "$path/src/main/resouces/application_test.properties" ]; then
cp -rf $path/src/main/resouces/application_test.properties $path/src/main/resouces/application.properties
fi
elif [ "$deploy_dir" = "product" ]; then
echo "生产环境"
if [ -f "$path/src/main/resouces/application_product.properties" ]; then
cp -rf $path/src/main/resouces/application_product.properties $path/src/main/resouces/application.properties
fi
fi
mvn package -Dmaven.test.skip=true
#二、复制打包传输文件步骤:通过scp命令复制到服务器,再执行远程shell
if [ "$deploy_dir" = "test" ]; then
#复制到服务器
scp -r $path/target/jsw-new-7.1.war jsw_gd@172.131.177.181:/mnt/jsw_gd/jsw-new-gdtest.war
#eeeooff为了不显示远程的输出
ssh jsw_gd@172.131.177.181 <<eeooff
#执行远程shell文件,附带参数,判断环境
/mnt/jsw_gd/publish_jsw.sh jsw_gd_test
exit
eeooff
echo "测试环境部署完成"
elif [ "$deploy_dir" = "product" ]; then
#复制到服务器
scp -r $path/target/jsw-new-7.1.war jsw_gd@172.131.177.181:/mnt/jsw_gd/jsw_gd.war
#eeeooff为了不显示远程的输出
ssh jsw_gd@172.131.177.181 <<eeooff
#执行远程shell文件,附带参数,判断环境
/mnt/share_dir/publish_jsw.sh jsw_gd
exit
eeooff
echo "生产环境部署完成"
fi
注意:需要先添加ssh免登陆。不会的参考:https://jingyan.baidu.com/article/c74d6000b499160f6a595de6.html
五、添加服务器端shell文件(我的是publish_jsw.sh)
#/bin/bash
set -e
tomcatName=""
tomcatPort=""
deploy_dir=""
datetime=$(date "+%y%m%d")
#一、处理部署目录和tomcat名称、端口
if [ "$1" = "jsw_gd_test" ]; then
deploy_dir=jsw_gd
else
deploy_dir=$1
fi
if [ "$1" = "jsw_gd" ]; then
tomcatName=apache-tomcat-6.0.24-gd-jsw-7085-shengchan
tomcatPort=7085
elif [ "$1" = "jsw_gd_test" ]; then
tomcatName=apache-tomcat-6.0.24-gd-jsw-8085-test
tomcatPort=8085
fi
#二、备份war包和application.properties文件
cd /mnt/$deploy_dir/$tomcatName/webapps
tar -zcf /mnt/share_dir/war_bak/ROOT_$1_$datetime.tar.gz ROOT
cp -rf /mnt/$deploy_dir/$tomcatName/webapps/ROOT/WEB-INF/classes/application.properties /mnt/$deploy_dir
#进程是否存在,存在则杀死
pid=$(ps -ef|grep tomcat| grep $tomcatPort | grep -v grep|awk '{print $2}' | xargs);
echo $pid;
if [ -n "$pid" ]; then
echo "$pid not null"
kill -9 $pid
fi
#三、删除旧war包,复制新的war包到tomcat的webapps下
cd /mnt/$deploy_dir/$tomcatName/webapps
rm -rf /mnt/$deploy_dir/$tomcatName/webapps/ROOT
rm -f /mnt/$deploy_dir/$tomcatName/webapps/ROOT.war
if [ "$1" = "jsw_gd_test" ]; then
cp -rf /mnt/$deploy_dir/jsw-new-gdtest.war /mnt/$deploy_dir/$tomcatName/webapps/ROOT.war
else
cp -rf /mnt/$deploy_dir/$4.war /mnt/$deploy_dir/$tomcatName/webapps/ROOT.war
fi
#四、执行tomcat启动startup.sh
cd /mnt/$deploy_dir/$tomcatName/bin
./startup.sh
完成看一下效果: