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
相关产品推荐
相关产品推荐

