jenkins 发布远程服务器并部署项目(带脚本 参考硅谷)

如果是微服务版,可能会涉及到common等基础模块包的引用,需要maven私服的情况,先把common的打包放入 maven私服,然后去引用

安装参考另一个文章:window 安装 jenkins 编写脚本_jenkins window 脚本-CSDN博客

配置maven 和 jdk 和 git

注意jdk的安装目录,是jenkins 安装所在服务器的jdk目录

注意maven的目录  是jenkins 安装所在服务器的maven目录

注意git的目录  是jenkins 安装所在服务器的 git 目录

安装  Publish Over SSH  插件

配置远程服务器

创建项目

创建maven项目

开始配置

General 默认不用修改

源码管理 

注意

构建触发器

构建环境

 Pre Steps  构建之前

选择 Send files or execute commands over SSH

 目标服务器  Root根目录 创建 x.sh 文件

文件内容  将  111111111111111111  写到 xxx.txt文件里面

#!/bin/bash

echo  "111111111111111111">xxx.txt

测试  手动运行 x.sh

创建  xxx.txt文件  并将  111111111111111111 写入到里面

测试完后 删除xxx.txt

打包之前没有 xxx.txt 文件

编辑 x.sh文件 ,并添加脚本内容

#!/bin/bash

#删除历史数据
rm -rf home

appname=$1
#获取传入的参数
echo "arg:$1"


#获取正在运行的jar包pid
pid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`

echo $pid

#如果pid为空,提示一下,否则,执行kill命令
if [ -z $pid ];
#使用-z 做空值判断
        then
                echo "$appname not started"

        else
               kill -9 $pid
                echo "$appname stoping...."

check=`ps -ef | grep -w $pid | grep java`
if [ -z $check ];

        then
                echo "$appname pid:$pid is stop"
        else
                echo "$appname stop failed"

fi


fi

执行   demo 传入的参数,就是用脚本里面的 appname 接受的

执行命令  nohup java -jar /root/home/java/app/ruoyi-admin.jar >mylog.log 2>&1 &

启动后打印日志写入到 mylog.log 这个文件  可以到这个文件去日志

把脚本   ./x.sh ruoyi-admin     配置到 启动前 Pre Steps

Build 开始构建 

选择 Send files or execute commands over SSH

是项目名称 去前缀   ruoyi-web

例如:

clean package -Dmaven.test.skip=true

  Post Steps  构建后 发布步骤

Send files or execute commands over SSH  需要安装插件才会现在,不安装不显示此选项

 示例一:

示例二:

添加 执行 shell

添加脚本 

 脚本内容

#!/bin/bash

# 定义变量
JAR_PATH="/home/java/app/xiaobing-auth.jar"
JAR_SOURCE="/var/lib/jenkins/workspace/auth-test/auth/target/xiaobing-auth.jar"
LOG_FILE="/home/java/app/logs/auth.log"
PID_FILE="/home/java/app/pid/auth.pid"

# 删除旧的 JAR 文件
if [ -f "$JAR_PATH" ]; then
    echo "Removing old JAR file..."
    rm -f "$JAR_PATH" || { echo "Failed to remove old JAR file"; exit 1; }
else
    echo "No old JAR file found, skipping removal."
fi

# 移动新的 JAR 文件
echo "Copying new JAR file..."
cp -f "$JAR_SOURCE" "$JAR_PATH" || { echo "Failed to copy new JAR file"; exit 1; }

# 进入指定目录
cd /home/java/app/ || { echo "Failed to change directory"; exit 1; }

# 阻止 Jenkins 杀死项目进程
export BUILD_ID=dontKillMe

# 停止旧进程(如果有 PID 文件)
if [ -f "$PID_FILE" ]; then
    OLD_PID=$(cat "$PID_FILE")
    if ps -p "$OLD_PID" > /dev/null; then
        echo "Stopping old process with PID $OLD_PID..."
        kill "$OLD_PID" || { echo "Failed to stop old process"; exit 1; }
        rm "$PID_FILE" || { echo "Failed to remove PID file"; exit 1; }
    else
        echo "Old process with PID $OLD_PID not found."
    fi
else
    echo "No PID file found, skipping old process stop."
fi

# 启动新进程
echo "Starting new process..."
nohup java -jar xiaobing-auth.jar >"$LOG_FILE" 2>&1 &
NEW_PID=$!
echo "$NEW_PID" > "$PID_FILE"

echo "New process started with PID $NEW_PID."

执行 shell 脚本  和 构建后类似,二选择一也行,组合后配合使用也行

构建后操作 

选择 Send build artifacts over SSH

vi start.sh  脚本内容

nohup /usr/java/jdk1.8.0_162/bin/java -jar /root/home/java/app/ruoyi-admin.jar >mylog.log 2>&1 &

 注意分配权限   chmod 777 start.sh

开始构建

查看控制台

构建成功并推送远程服务器 

远程服务器的jar包

查看日志  cat mylog.log   启动成功

访问获取验证码的接口进行测试是否成功

http://192.168.43.202:9090/captchaImage

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值