【Jenkins】Linux下安装Jenkins并配置自动化部署Springboot的Git项目

2022-02-25 09:29:04 浏览数 (1)

准备工作:

  1. 安装Tomcat
  2. 安装Maven
  3. 安装Git
  4. 安装Jdk

Tomcat下Jenkins安装:

Jenkins的安装与设置

选择war包下载 http://my-tech.oss-cn-hangzhou.aliyuncs.com/jenkins.war

配置自动部署

  1. 新建工程-->构建一个Maven项目
  1. 源码管理选择Git,Repository URL填入Git仓库的地址

在Credentials添加自己Git仓库的账号名和密码,选择分支(默认master)

  1. 构建中Goals and options填入clean install

点击构建右下角的高级,选择使用自定义的工作空间,目录中填入你想打包的目录地址(到这一步打包就能完成了)。Settings file和Global Settings file填入maven的settings.xml地址

  1. 点击下面的add post-build step,选择execute shell,命令框中就是打包后执行的shell命令。
代码语言:javascript复制
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

本站文章除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

0 人点赞