前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Jenkins】Linux下安装Jenkins并配置自动化部署Springboot的Git项目

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

作者头像
Cheng_Blog
发布2022-02-25 09:29:04
6780
发布2022-02-25 09:29:04
举报
文章被收录于专栏:Cheng's BlogCheng's Blog

准备工作:

  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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作:
  • Tomcat下Jenkins安装:
  • 配置自动部署
  • 配置推送自动触发
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档