如何实现linux系统一键gitee拉取java代码maven打包并启动服务(启动脚本)

萨瓦迪卡3个月前 (01-15)linux系统257

总的步骤分为:1检查git是否安装。2.linux设置git全局用户名密码.3.git拉取项目及分支到linux目录4.linux安装maven。5编写脚本,一键启动服务

一、.查看git版本,一般linux系统都自带git。

  1. git version

二、linux git 设置全局用户名密码

git config --global user.name "Your Name"
git config --global user.password"your password"

   或者使用ssh密钥

  1. 生成 SSH 密钥对(如果还没有):

    sh复制代码ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 将生成的公钥(通常位于 ~/.ssh/id_rsa.pub)添加到你的 Git 服务器帐户中。

三.git拉取代码

1.导航到目标目录你想将仓库放在你的主目录下的 projects 文件夹中,运行

cd ~/projects

2.使用 git clone 命令来克隆远程仓库

git clone https://git.com/username/repository-name.git

3.(可选)进入仓库目录如果你想立即进入克隆的仓库目录,可以运行:

cd repository-name

4.拉取更新(如果你已经有一个本地仓库)如果你已经有一个本地仓库并且只是想拉取最新的更改,你可以导航到仓库目录并运行:

git pull origin branch-name

其中 origin 是远程仓库的默认名称branch-name 是你想要拉取的分支名称。例如,如果你要拉取 main 分支:

git pull origin main

四.linux安装maven

1.方法一:使用包管理器安装。


Ubuntu/Debian 系统安装 Maven:(如果是root用户,请自行去掉sudo)

sudo apt install maven -y

验证安装:

mvn -v


 CentOS/RHEL 系统安装 Maven

sudo yum install maven -y

2方法二:手动下载并安装


五.写一个启动脚本java-run.sh。内容为:根据需要修改。将文件直接放到root下面

#!/bin/bash

# 定义变量
TARGET_DIR="/project/wisdom"          # 替换为你的代码库路径
DEFAULT_BRANCH="pro1"                                 # 默认分支
JAR_NAME="ruoyi-admin.jar"                               # 替换为生成的 JAR 文件名
LOG_FILE="/var/log/ruoyi-admin.log"                     # 替换为你的日志文件路径
JAVA_OPTS="-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"                           # Java 启动参数,可根据需求调整

# 检查是否安装了必要工具
check_dependencies() {
    for cmd in git mvn java; do
        if ! command -v $cmd &> /dev/null; then
            echo "Error: $cmd is not installed. Please install it first."
            exit 1
        fi
    done
}

# 更新代码
update_code() {
    local branch=$1
    if [ -d "$TARGET_DIR" ]; then
        echo "Updating repository in $TARGET_DIR for branch $branch..."
        cd "$TARGET_DIR" || exit
        
        # 切换到指定分支
        git fetch
        git checkout "$branch" || {
            echo "Error: Branch $branch does not exist."
            exit 1
        }
        git pull origin "$branch"
        
        if [ $? -ne 0 ]; then
            echo "Error: Failed to update code. Please check the repository."
            exit 1
        fi
    else
        echo "Error: Directory $TARGET_DIR does not exist. Please check the path."
        exit 1
    fi
}

# 打包代码
build_project() {
    echo "Building project..."
    mvn clean package -DskipTests
    if [ $? -ne 0 ]; then
        echo "Error: Maven build failed."
        exit 1
    fi
}

# 启动服务
start_service() {
    JAR_PATH="$TARGET_DIR/ruoyi-admin/target/$JAR_NAME"
    if [ ! -f "$JAR_PATH" ]; then
        echo "Error: $JAR_NAME not found in target directory."
        exit 1
    fi

    # 杀掉旧进程
    PID=$(ps -ef | grep "$JAR_NAME" | grep -v "grep" | awk '{print $2}')
    if [ -n "$PID" ]; then
        echo "Stopping existing service (PID: $PID)..."
        kill -9 "$PID"
    fi

    # 后台运行服务
    echo "Starting new service..."
    nohup java $JAVA_OPTS -jar "$JAR_PATH" > "$LOG_FILE" 2>&1 &
    if [ $? -eq 0 ]; then
        echo "Service started successfully. Logs: $LOG_FILE"
    else
        echo "Error: Failed to start the service."
        exit 1
    fi
}

# 主逻辑
main() {
    check_dependencies

    # 获取分支名,如果未指定,使用默认分支
    local branch=${1:-$DEFAULT_BRANCH}
    update_code "$branch"
    build_project
    start_service
}

# 执行脚本,传递分支名作为参数
main "$1"

六、直接在root用户下,输入以下命令,即可实现一键拉取git最新代码并maven打包后,自动重启服务。

./java-run.sh

image.png

七、实时查看项目运行日志命令:

 tail -f /var/log/java-service.log


本文原创,转载必追究版权。

分享给朋友:

相关文章

Oracle常用sql语句

1.多行数据一行显示sql:(用sum函数或max函数,当lc为1时DQSYJRZC的值) sum函数只能查字段类型为number型的,若字段值是汉字则用max函数select nsrsbh , su...

MyEclipse10.7注册码生成

注意经验里的工具可能不可用,请点击 生成注册码工具  下载。提取码:p1w4MyEclipse10.7注册码激活步骤:点击下面的链接http://jingyan.baidu.com/arti...

jquery 操作html元素(及CSS)

jquery 操作html元素(及CSS)

 $("li").addClass("aui-user-view-cell aui-img") ;  //给元素添加样式$('#a1...

谈话让别人舒服的程度,决定你成功的高度

谈话让别人舒服的程度,决定你成功的高度

职场上,有这样两种截然相反的人:有人生怕别人舒服,尽量让别人不舒服,而只要自己舒服就行;还有一类人生怕别人不舒服,尽量让别人舒服,哪怕委屈自己。猎头公司猎聘的老总有几十万年薪的,也有几百万的,甚至有过...

MyEclipse 中项目修改SVN的地址

MyEclipse 中项目修改SVN的地址

在工作环境调整时,有的时候SVN服务器的地址需要修改,而正在开发中的项目在Eclipse中有些代码没有提交,此时怎么修改SVN的地址呢?以下有一个简单的办法:一、在MyEclipse中选择Window...

dwz+jfinal 市县下拉菜单二级联动(实例)

在DWZ文档中对组合框combox的是这样描述的:在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref。re...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。