/jenkins

Auto deploy with jenkins

Primary LanguageShell

Jenkins + Sprint boot

TOC

新建Job

  • 点击新建任务进入创建Job选项 新建任务
  • 点击创建Maven项目,填写任务名,点击确认进入下一步设置 创建maven项目

项目设置

  • Genneral 通用设置
  • 源码管理, 按照项目配置填写
  • 构建环境
    • 选择Send files or execute commands over SSH after the build runs 构建

    • introduce
      名称 内容 说明
      Name 需要部署的服务器配置 需要安装 Publish Over SSH插件
      Souorce file 安装包 maven 打包后的包
      Remove Prefix 移除前缀
      Remote directory 远程地址 即所部署服务器预留地址^Publish Over SSH
      Exec command bash -x [remote/shell]^shell 部署任务结束后执行的任务^shellcommand
  • 构建任务
    • 选择 invoke top-level Maven targets
    • Goals
      clean install -D maven.test.skip=true

需要安装的插件

  • Publish Over SSH
  • Maven Integration plugin
  • Git

服务器环境

  • JDK
    • 选择手动安装
  • Maven
    • 选择手动安装
  • Git

DOC

先配置好 Publish Over SSH 插件

  • 系统管理->管理插件->可选插件->搜索Publish Over SSH->安装并重启Jenkins
  • 系统管理->系统设置->Publish over SSH
    • preview

    • introduce
      名称 内容 说明
      PassPhrase *** 部署服务器分配的用户密码
      Name tag 部署服务器别名
      Hostname localhost 主机地址,本机localhost
      Username test 部署服务器分配的用户名
      Remote Directory /home/test 服务器内部署位置

Shell:

脚本

请赋予脚本写入权限u+x

#!/bin/bash -ilex

# Jenkins环境内使用服务器环境
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 查询端口占用情况
pidinfo=`sudo netstat -tunlp | grep $1 | awk '{print $7}'`
echo $pidindo
index="/"
pid=${pidinfo%$index*}
echo "it will be kill the pid with $pid"
if [ ! -z $pid ];then
 sudo kill -9 $pid
fi
# 运行sprint boot项目
tmp="$2/tmp/$2.jar"

if [ -f $tmp ];then
 echo "start service with $tmp"

 log="$2/$2.log"
# if [ ! -f $log ];then
#  sudo touch $log
#  sudo chmod 777 $log
# fi

 nohup java -jar "$tmp" > $log 2>&1 &
fi

Shell Command:

BUILD_ID=DONTKILLME
cd /home/projects  /~~wallet~~
# remote/shell shell 所在部署服务器的地址
# port application port
# Remote directory jar包所在部署服务器地址
bash -x [remote/shell] [port] [Remote directory parent]