准备工作:
- 安装Tomcat
- 安装Maven
- 安装Git
- 安装Jdk
Tomcat下Jenkins安装:
Jenkins的安装与设置
选择war包下载 http://my-tech.oss-cn-hangzhou.aliyuncs.com/jenkins.war
配置自动部署
- 新建工程-->构建一个Maven项目
- 源码管理选择Git,Repository URL填入Git仓库的地址
在Credentials添加自己Git仓库的账号名和密码,选择分支(默认master)
- 构建中Goals and options填入clean install
点击构建右下角的高级,选择使用自定义的工作空间,目录中填入你想打包的目录地址(到这一步打包就能完成了)。Settings file和Global Settings file填入maven的settings.xml地址
- 点击下面的add post-build step,选择execute shell,命令框中就是打包后执行的shell命令。
source /etc/profile
#切换到打包的jar文件目录
cd /home/jenkinsWebApps/Blog/target
#移动jar文件到我的指定启动目录
mv my-blog-1.0.0-SNAPSHOT.jar /home/web/myblog
#切换到启动目录
cd /home/web/myblog
#执行脚本,重启项目
./start.sh restart
脚本内容:
代码语言:javascript复制#!/bin/bash
cd `dirname $0`
CUR_SHELL_DIR=`pwd`
CUR_SHELL_NAME=`basename ${BASH_SOURCE}`
#修改这里jar包名即可
JAR_NAME="my-blog-1.0.0-SNAPSHOT.jar"
JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME
#配置堆内存大小,非堆内存大小,垃圾回收器CMS(降低stw时间为200MS)
JAVA_MEM_OPTS=" -server -Xms128m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128M -XX: UseConcMarkSweepGC"
#JAVA_MEM_OPTS=""
#SPRING_PROFILES_ACTIV="-Dspring.profiles.active=eureka2"
SPRING_PROFILES_ACTIV=""
LOG_DIR=$CUR_SHELL_DIR/logs
LOG_PATH=$LOG_DIR/${JAR_NAME}.log
echo_help()
{
echo -e "syntax: sh $CUR_SHELL_NAME start|stop|restart"
}
if [ -z $1 ];then
echo_help
exit 1
fi
if [ ! -d "$LOG_DIR" ];then
mkdir "$LOG_DIR"
fi
if [ ! -f "$LOG_PATH" ];then
touch "$LOG_DIR"
fi
if [ "$1" == "start" ];then
# check server
PIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'`
if [ -n "$PIDS" ]; then
echo -e "ERROR: The $JAR_NAME already started and the PID is ${PIDS}."
exit 1
fi
echo "Starting the $JAR_NAME..."
# start
#jenkins启动必须加这句话,不然不会启动成功,因为Jenkins默认会在Build结束后Kill掉所有的衍生进程
export BUILD_ID=dontKillMe
nohup java $JAVA_MEM_OPTS -jar $SPRING_PROFILES_ACTIV $JAR_PATH >> $LOG_PATH 2>&1 &
COUNT=0
while [ $COUNT -lt 1 ]; do
sleep 1
COUNT=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l`
if [ $COUNT -gt 0 ]; then
break
fi
done
PIDS=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'`
echo "${JAR_NAME} Started and the PID is ${PIDS}."
echo "You can check the log file in ${LOG_PATH} for details."
#奇怪如果去掉以下延时,就会被jenkins杀掉
sleep 10s
elif [ "$1" == "stop" ];then
PIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'`
if [ -z "$PIDS" ]; then
echo "ERROR:The $JAR_NAME does not started!"
exit 1
fi
echo -e "Stopping the $JAR_NAME..."
for PID in $PIDS; do
kill $PID > /dev/null 2>&1
done
COUNT=0
while [ $COUNT -lt 1 ]; do
sleep 1
COUNT=1
for PID in $PIDS ; do
PID_EXIST=`ps --no-heading -p $PID`
if [ -n "$PID_EXIST" ]; then
COUNT=0
break
fi
done
done
echo -e "${JAR_NAME} Stopped and the PID is ${PIDS}."
elif [ "$1" == "restart" ];then
PIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'`
if [ -z "$PIDS" ]; then
echo -e "The $JAR_NAME does not started!"
else
echo -e "Stopping the $JAR_NAME..."
for PID in $PIDS; do
kill $PID > /dev/null 2>&1
done
COUNT=0
while [ $COUNT -lt 1 ]; do
sleep 1
COUNT=1
for PID in $PIDS ; do
PID_EXIST=`ps --no-heading -p $PID`
if [ -n "$PID_EXIST" ]; then
COUNT=0
break
fi
done
done
echo -e "${JAR_NAME} Stopped and the PID is ${PIDS}."
fi
# start
export BUILD_ID=dontKillMe
nohup java $JAVA_MEM_OPTS -jar $SPRING_PROFILES_ACTIV $JAR_PATH >> $LOG_PATH 2>&1 &
COUNT=0
while [ $COUNT -lt 1 ]; do
sleep 1
COUNT=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l`
if [ $COUNT -gt 0 ]; then
break
fi
done
PIDS=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'`
echo "${JAR_NAME} Started and the PID is ${PIDS}."
echo "You can check the log file in ${LOG_PATH} for details."
sleep 10s
else
echo_help
exit 1
fi
jenkins下的启动日志:
配置推送自动触发
Jenkins首页进入用户列表
选择当前用户
进入左侧的设置,并新增一个Token并记录下来。
在你的代码管理平台仓库中配置WebHook。 host 前面加上 [Application ID]:[Token]@,比如
http://myid:mytoken@myjenkins.com/job/myJobName/build?token=my_job_token
myid:Jenkins中生成token的用户id mytoken: 刚刚生成的token字符串
如图所示就能够推送自动部署了
以上操作只是一种方式,其实Jenkins安装部署还有很多种方式,我之前去网上找了很多篇文章,都没有成功,这次只是把自己的操作流程写下来?。
发表时间:2020-03-03
本站文章除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。