jenkins + Git自动构建springboot项目并部署到远程机器

1.准备jenkins环境

centos 安装 jenkins和登录

2.准备插件

jenkins + Git自动构建springboot项目并部署到远程机器_第1张图片
安装插件
Maven Integration(jenkins集成maven的插件,用于添加《构建一个maven项目》的菜单)
Publish Over SSH(用于连接远程服务器)
Deploy to container(用于把打包的应用发布到远程服务器)

3.添加远程代码部署服务器

jenkins + Git自动构建springboot项目并部署到远程机器_第2张图片

jenkins + Git自动构建springboot项目并部署到远程机器_第3张图片

4.配置 maven 和 jdk

注意:配置的路径都是jenkins机器,非远程代码部署机器

jenkins + Git自动构建springboot项目并部署到远程机器_第4张图片

  1. maven settings文件配置
    jenkins + Git自动构建springboot项目并部署到远程机器_第5张图片
  2. jdk配置(java home)
    jenkins + Git自动构建springboot项目并部署到远程机器_第6张图片
  3. maven配置
    jenkins + Git自动构建springboot项目并部署到远程机器_第7张图片

5.添加要构建的项目

jenkins + Git自动构建springboot项目并部署到远程机器_第8张图片
jenkins + Git自动构建springboot项目并部署到远程机器_第9张图片
选择构建一个maven项目,确认,即可开始配置项目参数(前面安装的插件)

  1. 添加 Git 仓库(这里我用的公共仓库,私有仓库需要添加域和用户信息)
    jenkins + Git自动构建springboot项目并部署到远程机器_第10张图片

  2. 构建触发器
    jenkins + Git自动构建springboot项目并部署到远程机器_第11张图片

  3. 配置maven命令jenkins + Git自动构建springboot项目并部署到远程机器_第12张图片

  4. 发布到远程服务器的配置(下面还有个exec command,项目启动的脚本,稍后配置)
    jenkins + Git自动构建springboot项目并部署到远程机器_第13张图片

  5. 启动脚本

    #!/bin/bash
    port=9898 #项目启动端口
    echo "check $port"
    grep_port=`netstat -tlpn | grep "\b$port\b"`
    echo "grep port is $grep_port"
    if [ -n "$grep_port" ]
    then
      echo "端口 $port 在使用"
      netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
      echo "kill 掉$port 端口"
    else
      echo "端口没有被使用"
    fi
    echo "开始重启"
    # 此处要加BUILD_ID=dontKillMe 否则jenkins不会将项目启动下去
    BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
    echo "jenkins 自动化部署成功"
    

    需要注意的点:在部署多台机器的时候,可能会出现状态为 unstable 的状态,错误提示为
    ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000ms]
    阻塞了后面的机器继续发布和启动,需要在配置远程机器的高级配置里勾上 Exec in pty 如下图
    jenkins + Git自动构建springboot项目并部署到远程机器_第14张图片
    添加了这个配置后,虽然结果提示Finished:success,但是项目没有启动
    需要在脚本里添加sleep 1即可成功启动

    #!/bin/bash
    port=9898 #项目启动端口
    echo "check $port"
    grep_port=`netstat -tlpn | grep "\b$port\b"`
    echo "grep port is $grep_port"
    if [ -n "$grep_port" ]
    then
      echo "端口 $port 在使用"
      netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
      echo "kill 掉$port 端口"
    else
      echo "端口没有被使用"
    fi
    echo "开始重启"
    # 此处要加BUILD_ID=dontKillMe 否则jenkins不会将项目启动下去
    BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
    echo "jenkins 自动化部署成功"
    sleep 1
    

6.启动和日志输出

配置完成后回到项目内
jenkins + Git自动构建springboot项目并部署到远程机器_第15张图片
点击build now 下面出现当前次构建的进度,点击进去就能看到构建的详情了
jenkins + Git自动构建springboot项目并部署到远程机器_第16张图片
日志文件(这里分别部署到了两台远程机器,两个不同的端口9898和9899)
jenkins + Git自动构建springboot项目并部署到远程机器_第17张图片

你可能感兴趣的:(centos,jenkins,Springboot,centos,持续集成系统)