Jenkins配合webHook完成自动化部署

105 阅读2分钟

前言

张三最近买了台云服务器没事整点小项目啥的,但是每次变更代码都需要以下几个步骤

  1. maven本地打包
  2. 将jar包上传到远程服务器
  3. 清理old版本的进程以及文件
  4. 手动运行java jar启动进程

如果代码频繁改动就要一直重复以上流程,有什么方案能免去这繁琐的步骤呢 没错! 我们可以使用Jenkins自动帮我们完成以上步骤

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成

Jenkins配合webHook完成自动化构建

整体流程

服务器A完全可以和服务器B共用一台,省去jar包传输 (这里因为服务器B内存不够)

执行效果

Linux Jenkins安装

准备工作

  1. 安装 Maven 并设置 MAVEN_HOME = /usr/local/maven/apache-maven-3.6.1
  2. 安装 JDK
  3. 安装 docker
  4. /home 下创建jenkins_home目录 chomd 777
  5. docker安装jenkins
  6. docker启动jenkins
sudo docker run -d -uroot -p 9095:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1  -v /etc/localtime:/etc/localtime --env JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" jenkins/jenkins
  1. 访问http://你的服务器ip:9095/

Jenkins插件

  1. Maven Integration plugin
  2. Publish Over SSH

Publish Over SSH设置

maven项目配置

git仓库设置

构建触发器

构建前清理workspace

构建后处理

gitWebHook配置

post-step脚本(目标服务器)

kill之前的jar 并启动最新的jar

#!/bin/sh
name=$1
pid=`ps -ef|grep java|grep -v grep|grep "$name"|awk '{print $2}'`
if [ ! -n "$pid" ]
 then
  echo pid is blank
 else
  kill -9 "$pid"
  echo kill "$pid"
fi
 target=`ls|grep "$name"|grep .jar|sort -rn -k 1|head -1`
 echo "$target"
`nohup java -jar "$target" > nohup.log 2>&1 &`