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

1.准备jenkins环境

centos 安装 jenkins和登录
2.准备插件 centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

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

centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

4.配置 maven 和 jdk
注意:配置的路径都是jenkins机器,非远程代码部署机器
centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

  1. maven settings文件配置
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片
  2. jdk配置(java home)
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片
  3. maven配置
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片
5.添加要构建的项目 centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

选择构建一个maven项目,确认,即可开始配置项目参数(前面安装的插件)
  1. 添加 Git 仓库(这里我用的公共仓库,私有仓库需要添加域和用户信息)
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片

  2. 构建触发器
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片

  3. 配置maven命令centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片

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

  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 如下图
    centos|jenkins + Git自动构建springboot项目并部署到远程机器
    文章图片

    添加了这个配置后,虽然结果提示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.启动和日志输出 【centos|jenkins + Git自动构建springboot项目并部署到远程机器】配置完成后回到项目内
centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

点击build now 下面出现当前次构建的进度,点击进去就能看到构建的详情了
centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

日志文件(这里分别部署到了两台远程机器,两个不同的端口9898和9899)
centos|jenkins + Git自动构建springboot项目并部署到远程机器
文章图片

    推荐阅读