You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins动态节点及Maven配置实现Spring Boot+React应用免依赖部署

Jenkins动态环境部署React+Spring Boot应用方案

核心逻辑

通过构建流程内动态安装版本管理工具实现环境按需初始化,完全不依赖Jenkins节点预装的Node、Maven版本,可随时切换工具版本无需调整节点配置。

完整Jenkinsfile配置
pipeline {
  agent any
  environment {
    // 可自定义指定所需的Node、Maven版本
    NODE_VERSION = "18.17.0"
    MAVEN_VERSION = "3.9.4"
  }
  stages {
    stage('环境初始化') {
      steps {
        script {
          // 安装nvm管理Node/npm版本
          sh '''
            if [ ! -d "$HOME/.nvm" ]; then
              # 可替换为内网镜像地址,避免公网访问限制
              curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
            fi
            source $HOME/.nvm/nvm.sh
            nvm install ${NODE_VERSION}
            nvm use ${NODE_VERSION}
            # 国内节点可配置npm镜像源加快依赖下载
            npm config set registry https://registry.npmmirror.com
          '''
          // 安装sdkman管理Maven版本
          sh '''
            if [ ! -d "$HOME/.sdkman" ]; then
              # 可替换为内网镜像地址,避免公网访问限制
              curl -s "https://get.sdkman.io" | bash
            fi
            source "$HOME/.sdkman/bin/sdkman-init.sh"
            sdk install maven ${MAVEN_VERSION}
            sdk use maven ${MAVEN_VERSION}
          '''
        }
      }
    }
    stage('前端React构建') {
      steps {
        script {
          sh '''
            source $HOME/.nvm/nvm.sh
            nvm use ${NODE_VERSION}
            # 请根据实际项目的前端代码目录调整路径
            cd src/main/frontend
            npm install
            npm run build
            # 将React构建产物复制到Spring Boot静态资源目录
            cp -rf dist/* ../resources/static/
          '''
        }
      }
    }
    stage('后端Spring Boot构建') {
      steps {
        script {
          sh '''
            source "$HOME/.sdkman/bin/sdkman-init.sh"
            sdk use maven ${MAVEN_VERSION}
            mvn clean package -DskipTests
          '''
        }
      }
    }
    stage('应用部署') {
      steps {
        script {
          // 替换为自身实际部署逻辑,以下为示例
          sh '''
            echo "开始部署应用"
            # 示例:将jar包上传到目标服务器
            # scp target/*.jar appuser@192.168.1.100:/opt/app/
            # 示例:重启目标服务器上的应用服务
            # ssh appuser@192.168.1.100 "systemctl restart spring-boot-app.service"
          '''
        }
      }
    }
  }
}

注意事项

  • 仅需修改environment块中的版本参数即可切换Node、Maven版本,无需对Jenkins节点做任何调整
  • 首次构建时会自动下载对应版本的工具包,后续构建会复用本地缓存,不会重复下载
  • 若项目的前端目录结构与示例不同,仅需调整前端React构建阶段中的路径配置即可
  • 内网环境可将nvm、sdkman、npm、Maven的源替换为内网镜像,进一步提升构建速度

内容的提问来源于stack exchange,提问作者user3396478

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:07