若需打包到远程服务器,需配置系统设置,指定远程的机器,在Manage Jenkins中找到Configure System,然后找到Publish over SSH,点击新增,自定义机器名,指定ip地址及目录和账号密码
指定全局的git以及maven配置,在System Configuration的Global Tool Configuration下配置git的安装路径,一定要精确到bin/git
设置maven,使用jenkins服务器已安装好的maven
然后创建一个任务,输入任务名称点击确定新增
在General中丢弃旧的操作配置(可以不用配置)
源码管理我使用的是git仓库,选择git仓库的地址,添加凭据(git的用户及密码),再指定需要打包的分支,(若使用的是svn,在jenkis插件中安装svn相关的插件,然后点击subversion去配置)
构建触发器,勾选Build whenever a SNAPSHOT dependency is built
在Build构建中填入pom.xml的相对路径
选择Post Steps中的
由于我此次使用的jenkins服务器打包,而项目部署到另外一台服务器,借助之前配置的服务器名称,先在应用服务器上进入指定的目录,执行备份脚本文件,做好之前的应用版本的备份;然后取jenkins的应用包执行启动应用脚本文件,默认的jenkins工作空间的jar包路径是/root/.jenkins/workspace,可以自行指定工作空间
点击保存,一个简单的项目集成就创建好了,然后返回主界面,点击Job然后立即构建
看到左侧构建队列有所对应的任务,点击控制台输出,就可以看到打包及脚本相关日志,有最后一个git提交的信息,有maven打包日志等
最后进入远程的服务器,查看应用启动情况
至此一个简单的服务搭建完毕
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