Jenkins实现java+maven自动部署

闲来无事,玩一下jenkins自动部署,好记性不如烂笔头子,发个博客记个笔记,若能帮助到路过兄弟,也算有点额外的用途,毕竟不是专家,如发现文章有误,欢迎指摘,虚心接受,共同进步。

目的:

通过jenkins,自动化完成从git仓库拉取代码、maven编译打包、上传目标服务器并启动服务。

所需工具:

名称

版本

备注

Jenkins

ver. 2.225

war包版本

JDK

1.8.0_241

 

Maven

3.6.3

 

Git

1.8.3.1

 

VMware

11.5.2

如果自己有测试服务器则可不用

Gitee

 

代码托管,也可以用github、gitlab等等。

 

所需服务器: 

为了方便理解,这里使用两个虚拟linux服务器,均为CentOS7,当然你也可以使用docker。

服务器

说明

172.16.62.129

Jenkins服务器,需要安装jenkins、jdk、maven、git

172.16.62.130

目标应用服务器,需要安装jdk,编好一个sh启动脚本。

 

另外: 

还需要准备一个java的maven项目,代码上传到git上。本文用idea创建了一个springboot工程,只写了一个HelloWorld controller,上传到了Gitee。

1.启动jenkins

要是没有就先下载一个(自行百度),本文中,jenkins放在【172.16.62.129】服务器中,服务器需要先安装好所需要的工具,jdk,git,maven,并配置好环境变量,然后执行 java -jar jenkins.war,启动jenkins。然后安装推荐插件啥的,如果插件速度慢,可以参见另一篇文章 jenkins一些常见问题

2.一些jenkins配置

点击左侧的【Manage Jenkins】,然后右边的【Global Tool Configuration】,然后如下图所示,配置JKD,Git,Maven。

 

 3.配置jenkins上传jar包目标服务器

点击左侧的【Manage Jenkins】,然后右边的【Configure System】,如下图所示,如果要是多个目标服务器,可以一直加,本文测试就使用一个。

 

 4.新建及配置Item

本例名应该是boot_demo,没有test,这里就不改了,有点瑕疵。起个名,选择构建一个maven项目。

 配置git信息,地址 用户名密码 分支啥的。

 

配置Publish Over SSH

 

 上图关键地方的文本:

OLD_BUILD_ID=$BUILD_ID

echo $OLD_BUILD_ID

export BUILD_ID=dontKillMe

#执行启动脚本

sh /home/app/boot_demo.sh restart

#改回原来的BUILD_ID值

export BUILD_ID=$OLD_BUILD_ID

echo $BUILD_ID

 5.目标服务器启动脚本boot_demo.sh

#!/bin/bash

JAVA_HOME=/opt/jdk1.8.0_241

APP_NAME=/home/app/boot_demo-0.0.1-SNAPSHOT.jar
APP_PATH=/home/app/
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${APP_NAME} is already running. pid=${pid}"
  else
    nohup ${JAVA_HOME}/bin/java -jar ${APP_NAME}  >${APP_PATH}start.out 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

注意:启动脚本注意使用了 JAVA_HOME=/opt/jdk1.8.0_241 全路径,否则jenkins执行java -jar 会失败,日志会提示【无法运行命令"java": 没有那个文件或目录】之类的错误。

6.执行构建

 

 

如果你控制台输出的也是这样式儿的,那就哦了。

7.验证

先看看目标服务器172.16.62.130 /home/app的情况和进程情况。

再在浏览器验证一下helloworld。

完活~! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值