若需打包到远程服务器,需配置系统设置,指定远程的机器,在Manage Jenkins中找到Configure System,然后找到Publish over SSH,点击新增,自定义机器名,指定ip地址及目录和账号密码

jenkins gitblit push之后没自动build jenkins配置git自动部署_maven

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_02

 

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_03

 指定全局的git以及maven配置,在System Configuration的Global Tool Configuration下配置git的安装路径,一定要精确到bin/git

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_04

 设置maven,使用jenkins服务器已安装好的maven

jenkins gitblit push之后没自动build jenkins配置git自动部署_maven_05

jenkins gitblit push之后没自动build jenkins配置git自动部署_spring_06

  然后创建一个任务,输入任务名称点击确定新增

jenkins gitblit push之后没自动build jenkins配置git自动部署_java_07

 在General中丢弃旧的操作配置(可以不用配置)

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_08

源码管理我使用的是git仓库,选择git仓库的地址,添加凭据(git的用户及密码),再指定需要打包的分支,(若使用的是svn,在jenkis插件中安装svn相关的插件,然后点击subversion去配置)

jenkins gitblit push之后没自动build jenkins配置git自动部署_jenkins_09

 构建触发器,勾选Build whenever a SNAPSHOT dependency is built

jenkins gitblit push之后没自动build jenkins配置git自动部署_maven_10

 在Build构建中填入pom.xml的相对路径

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_11

 选择Post Steps中的

jenkins gitblit push之后没自动build jenkins配置git自动部署_maven_12

由于我此次使用的jenkins服务器打包,而项目部署到另外一台服务器,借助之前配置的服务器名称,先在应用服务器上进入指定的目录,执行备份脚本文件,做好之前的应用版本的备份;然后取jenkins的应用包执行启动应用脚本文件,默认的jenkins工作空间的jar包路径是/root/.jenkins/workspace,可以自行指定工作空间

jenkins gitblit push之后没自动build jenkins配置git自动部署_spring_13

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_14

 点击保存,一个简单的项目集成就创建好了,然后返回主界面,点击Job然后立即构建

jenkins gitblit push之后没自动build jenkins配置git自动部署_jenkins_15

 看到左侧构建队列有所对应的任务,点击控制台输出,就可以看到打包及脚本相关日志,有最后一个git提交的信息,有maven打包日志等

jenkins gitblit push之后没自动build jenkins配置git自动部署_git_16

jenkins gitblit push之后没自动build jenkins配置git自动部署_java_17

jenkins gitblit push之后没自动build jenkins配置git自动部署_jenkins_18

 最后进入远程的服务器,查看应用启动情况

jenkins gitblit push之后没自动build jenkins配置git自动部署_java_19

至此一个简单的服务搭建完毕 

Job中的backup.sh以及start.sh供参考

backup.sh

#!/bin/bash
APP_NAME=springboot_demo-1.0-SNAPSHOT
DATE=$(date "+%Y%m%d%H%M%S")
mv $APP_NAME.jar ./backup/$APP_NAME$DATE.jar

 start.sh

#!/bin/bash
#export BUILD_ID=dontKillMe
#APP_NAME打包的文件名
APP_NAME=springboot_demo-1.0-SNAPSHOT.jar

#启动脚本中的jvm参数解释及配置参考
#-Dspring.profiles.active=dev指定启动环境为dev环境,使用application.yml与application-dev.yml配置,若application-dev.yml和application.yml都有相同的属性,但是值不同,使用application-dev.yml的值
#/software/jdk1.8.0_221/bin/java一直指定到jdk安装路径下的bin路径下的java文件
#此处没有使用优雅停机方案,可参考https://www.jianshu.com/p/0c49eb23c627使用优雅停机方案
pids=`ps -ef |grep $APP_NAME |grep -v grep |awk '{print $2}'`
if [ -z $pids ]; then
     #kill -9 $pids

     #echo 'process exist,will be killed and restart'

     nohup /software/jdk1.8.0_221/bin/java -Dfile.encoding=utf-8 -Dspring.profiles.active=dev -jar  -server -Xms3072m -Xmx3072m -Xmn1280m -Xss256k -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=68 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/scene/bin/logs/jvm -XX:ErrorFile=/home/scene/bin/logs/jvm/hs_err_pid%p.log -Xloggc:/home/scene/bin/logs/jvm/gc.log   $APP_NAME  >/home/scene/log/nohup.log 2>&1 &

     sleep 5s
  else
     #echo 'process not exist,begin to run'
     echo 'process exist,will be killed and restart'
      kill -9 $pids

      nohup /software/jdk1.8.0_221/bin/java  -Dfile.encoding=utf-8 -Dspring.profiles.active=dev -jar   -server -Xms3072m -Xmx3072m -Xmn1280m -Xss256k -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=68 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/scene/bin/logs/jvm -XX:ErrorFile=/home/scene/bin/logs/jvm/hs_err_pid%p.log -Xloggc:/home/scene/bin/logs/jvm/gc.log  $APP_NAME  >/home/scene/log/nohup.log 2>&1 &

     sleep 5s
  fi