jenkins执行远程部署springboot

jenkins执行远程部署springboot

摘要

jenkins执行远程部署springboot

先部署基本环境

java
maven
git

启动jenkins

wget  http://mirrors.jenkins.io/war-stable/latest/jenkins.war
java -jar jenkins.war

设置 Global Tool Configuration

Jenkins > Global Tool Configuration

JAVA_HOME = /usr/lib/jvm/java-8-oracle
Path to Git executable  =  /usr/bin/git
MAVEN_HOME = /usr/share/maven

安装插件

Jenkins > Plugin Manager


Git plugin

Maven Integration plugin

Publish Over SSH

创建一个编译项目

New Item

Maven project name = testspringboot

此处的 testspringboot 会被应用于路径

/root/.jenkins/workspace/testspringboot

Source Code Management

填写Repository URL = git@github.com:daodaovps/testspringboot.git
记得去github添加jenkins所在机器的key

编译后执行的脚本

Post Steps

Run only if build succeeds

Execute shell = /scp_remote_restart.sh

#scp_remote_restart.sh 用于将上次构建的结果备份,然后将新的构建结果移动到合适的位置
#!/bin/bash
# 先判断文件是否存在,如果存在,则备份

APP_NAME="testspringboot-1.0-SNAPSHOT.jar"
file="/$APP_NAME"
if [ -f "$file" ]
then
mv /$APP_NAME /$APP_NAME.`date +%Y%m%d%H%M%S`
fi

#mv /root/.jenkins/workspace/testspringboot/target/$APP_NAME /$APP_NAME
scp /root/.jenkins/workspace/testspringboot/target/$APP_NAME root@172.17.0.3:/$APP_NAME

ssh root@172.17.0.3 "/restart.sh"

远程上要部署的机器的172.17.0.3 上的/restart.sh内容如下


#restart.sh 将应用停止
#!/bin/bash
APP_NAME="testspringboot-1.0-SNAPSHOT.jar"
echo "Restart SpringBoot Application"
pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi

echo "授予当前用户权限"
chmod 777 /$APP_NAME
echo "执行....."
nohup java -jar /$APP_NAME > /dev/null 2>&1 &

远程脚本执行记得先设置好 , 无密码访问 .

Build Now

立刻执行编译 部署
更多配置 , 比如定时触发编译部署, 跳过测试阶段 需要配置 Configure

通过Console Output可以查看到详尽的日志信息