Jenkins 自动构建编译 Spring Boot 和 Vue 项目

Jenkins 自动构建编译 Spring Boot 和 Vue 项目

一、前提条件

  1. Jenkins 环境准备
    • 已完成 Jenkins 全局配置(全局工具配置 NodeJS、Maven、Git,全局凭证配置 Git 凭证)。
    • 已安装必要插件:Git PluginNodeJS PluginMaven Integration pluginWorkspace Cleanup Plugin
  2. Git 凭证 :已在 Jenkins 全局凭证中配置 Git 仓库的 SSH 凭证(用于拉取代码,确保 Jenkins 服务器公钥已添加到 Git 服务器的 ~/.ssh/authorized_keys)。

二、Vue 项目自动构建配置

1. 新建 Vue 项目任务

  • Jenkins 首页 → New Item → 名称填写 project-vue-admin(自定义,如"vue-admin构建")→ 选择 Freestyle project (自由风格项目)→ 点击 OK

2. 源码管理(Source Code Management)

  • 选择 Git
    • Repository URL :填写 Vue 项目 Git 仓库 SSH 地址:

      bash 复制代码
      ssh://git@172.20.113.92:2222/admin/xxxx-vue.git  # 替换为实际项目的 Git 地址
    • Credentials:选择已在 Jenkins 全局配置的 Git 凭证(SSH 类型,确保凭证名称与全局配置一致)。

3. 构建环境(Build Environment)

勾选以下选项,配置构建前环境清理和 NodeJS 环境:

  • Delete workspace before build starts:构建前删除工作区(避免旧文件干扰,确保每次构建基于最新代码)。
  • Provide Node & npm bin/ folder to PATH :将 NodeJS 和 npm 路径添加到环境变量(用于执行 nodenpmpnpm 命令):
    • NodeJS Installation :选择全局工具配置中定义的 NodeJS(如之前配置的 NodeJS20)。
  • Cache location :选择 Local to the workspace(依赖缓存存储在工作区,加速后续构建)。

4. 构建步骤(Build Steps)

  • 选择"Execute shell"(执行 shell 命令,编译 Vue 项目):

    注意 :以下命令中的 project-vue-admin 需替换为 当前 Jenkins 任务名称 (工作区路径默认为 /var/jenkins_home/workspace/<任务名称>)。

    bash 复制代码
    # 进入 Vue 项目工作区(路径格式:/var/jenkins_home/workspace/<任务名称>)
    cd /var/jenkins_home/workspace/project-vue-admin  
    
    # 清理旧依赖(避免版本冲突)
    rm -rf node_modules pnpm-lock.yaml  
    
    # 使用 pnpm 安装依赖(指定国内镜像加速,替换为实际项目的依赖源)
    pnpm install --registry=https://registry.npmmirror.com  
    
    # 构建测试环境(根据项目 package.json 中的脚本调整,如 build:test/build:prod)
    pnpm run build:test  
    
    # 进入构建输出目录(默认是 dist-test,根据项目实际构建目录调整)
    cd ${WORKSPACE}/dist-test  
    
    # 将构建产物打包为 tar.gz(便于后续归档或部署)
    tar -zcvf ../dist-test.tar.gz ./*  
    
    # 返回工作区根目录
    cd -  

5. 构建后操作(Post-build Actions)

  • 选择"Archive the artifacts" (归档构建产物,保存编译结果):
    • Files to archive :填写构建产物的路径:

      bash 复制代码
      dist-test.tar.gz  # 对应上述 shell 中打包的文件(位于工作区根目录)
    • (可选)勾选 "Archive only if build succeeds"(仅构建成功时归档)。

6. 保存配置

点击页面底部 Save(保存 Vue 项目构建任务配置)。

三、Spring Boot 项目自动构建配置

1. 新建 Spring Boot 项目任务

  • Jenkins 首页 → New Item → 名称填写 project-springboot-admin(自定义,如"springboot-admin构建")→ 选择 Freestyle project → 点击 OK

2. 源码管理(Source Code Management)

  • 选择 Git
    • Repository URL :填写 Spring Boot 项目 Git 仓库 SSH 地址:

      bash 复制代码
      ssh://git@172.20.113.92:2222/admin/xxxx.git  # 替换为实际项目的 Git 地址
    • Credentials:选择已在 Jenkins 全局配置的 Git 凭证(与 Vue 项目相同的 Git 凭证,或单独配置)。

3. 构建环境(Build Environment)

勾选以下选项,确保构建环境干净:

  • Delete workspace before build starts:构建前删除工作区(避免旧代码或依赖干扰)。

4. 构建步骤(Build Steps)

  • 选择"Invoke top-level Maven targets" (执行 Maven 命令,编译 Spring Boot 项目):
    • Maven Version :选择全局工具配置中定义的 Maven(如之前配置的 Maven3.9)。

    • Goals and options :填写 Maven 构建参数(根据项目需求调整,以下为通用配置):

      bash 复制代码
      clean install -U -Dmaven.repo.local=/var/jenkins_home/.m2/repository -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

      参数说明

      • clean install:清理旧构建产物并打包。
      • -U:强制更新快照版本依赖。
      • -Dmaven.repo.local:指定 Maven 本地仓库路径(避免默认仓库权限问题)。
      • -Dmaven.wagon.http.ssl.insecure=true/allowall=true:允许非安全 SSL 连接(适用于 Maven 仓库使用自签证书或 HTTP 连接的场景)。

5. 构建后操作(Post-build Actions)

  • 选择"Archive the artifacts" (归档 JAR 包、文档、SQL 脚本等产物):
    • Files to archive :填写需要归档的文件路径(根据项目实际目录结构调整):

      bash 复制代码
      mall-server/target/*.jar, document/doc/*.md, document/sql/pg/*.sql
      • 说明:
        • mall-server/target/*.jar:Spring Boot 项目的 JAR 包(假设模块名为 mall-server)。
        • document/doc/*.md:项目文档(Markdown 文件)。
        • document/sql/pg/*.sql:数据库脚本(PostgreSQL 脚本)。

6. 保存配置

点击页面底部 Save(保存 Spring Boot 项目构建任务配置)。

四、构建验证

1. 手动触发构建

  • 进入 Vue 或 Spring Boot 项目任务页面 → 点击 Build Now(立即构建)。

2. 查看构建结果

(1)查看构建日志
  • 任务页面 → Build History → 点击最新构建编号(如 #1)→ Console Output (控制台输出),确认构建步骤是否执行成功:
    • Vue 项目 :日志中应显示 pnpm install 依赖安装成功、pnpm run build:test 编译成功、tar -zcvf 打包成功。
    • Spring Boot 项目 :日志中应显示 BUILD SUCCESS(Maven 构建成功)。
(2)查看归档产物
  • 构建成功后,任务页面会显示 "Last Successful Artifacts" (最新成功构建的产物):
    • Vue 项目:点击 dist-test.tar.gz 可下载构建后的前端包。
    • Spring Boot 项目:点击 *.jar*.md*.sql 可下载对应文件。

五、常见问题排查

1. Git 拉取代码失败(Vue/Spring Boot 项目通用)

  • 现象 :日志显示 Permission denied (publickey)Could not read from remote repository
  • 原因 :Jenkins 服务器的 SSH 公钥未添加到 Git 服务器的 authorized_keys 中,或凭证配置错误。
  • 解决
    1. 在 Jenkins 服务器执行 cat /var/jenkins_home/.ssh/id_rsa.pub 获取公钥。

    2. 登录 Git 服务器(172.20.113.92),将公钥添加到 ~/.ssh/authorized_keys(若 Git 仓库使用独立用户,需添加到对应用户的 authorized_keys)。

    3. 验证 Jenkins 服务器到 Git 服务器的 SSH 连接:

      bash 复制代码
      ssh -T -p 2222 git@172.20.113.92  # 若返回 "Hi xxx! You've successfully authenticated..." 则连接正常

2. Vue 项目依赖安装失败(pnpm install 报错)

  • 现象 :日志显示 pnpm: command not found 或依赖下载超时。
  • 原因
    • pnpm 未安装:检查 Jenkins 全局 NodeJS 配置中是否已安装 pnpm@10.18.3(参考 全局工具配置)。
    • 网络问题:npm 镜像源不可用,替换为其他源(如 --registry=https://registry.npm.taobao.org)。

3. Spring Boot 项目 Maven 构建失败

  • 现象 :日志显示 BUILD FAILURE,依赖下载失败或编译错误。
  • 解决
    • 依赖下载失败:检查 Goals and options 中的 -Dmaven.repo.local 路径是否有权限(确保 Jenkins 用户可读写 /var/jenkins_home/.m2/repository)。
    • 编译错误:查看日志中的具体错误(如代码语法错误、测试用例失败),修复代码后重新提交 Git 仓库,再次构建。

4. 工作区路径错误(Vue 项目 shell 命令报错)

  • 现象 :日志显示 cd: no such file or directory: /var/jenkins_home/workspace/project-vue-admin

  • 原因 :shell 命令中的工作区路径与实际任务名称不一致(Jenkins 工作区路径默认为 /var/jenkins_home/workspace/<任务名称>)。

  • 解决 :将 shell 中的 cd /var/jenkins_home/workspace/project-vue-admin 替换为实际任务名称,或使用 Jenkins 内置变量 ${WORKSPACE}(自动指向当前工作区路径):

    bash 复制代码
    cd ${WORKSPACE}  # 替换固定路径,避免任务名称变更导致路径错误

六、总结

通过以上配置,Jenkins 可自动拉取 Git 仓库代码,清理工作区,使用 NodeJS/pnpm 编译 Vue 项目、Maven 编译 Spring Boot 项目,并归档构建产物。后续可扩展配置(如构建后自动部署到测试/生产环境),实现持续集成/持续部署(CI/CD)流程。

相关推荐
yangminlei2 小时前
Spring Boot 自动配置原理与自定义 Starter 开发实战
java·数据库·spring boot
悟空码字2 小时前
10分钟搞定!SpringBoot集成腾讯云短信全攻略,从配置到发送一气呵成
java·spring boot·后端
未来龙皇小蓝2 小时前
Spring注入Bean流程及其理解
java·spring boot·后端·spring·代理模式
小高0072 小时前
2026 年,只会写 div 和 css 的前端将彻底失业
前端·javascript·vue.js
傣味洋芋2 小时前
WebSocket
网络·vue.js·websocket·网络协议
undsky2 小时前
【RuoYi-SpringBoot3-Pro】:多租户功能上手指南
spring boot·后端·mybatis
凡大来啦2 小时前
Element plus的Select选择器点击不出现下拉列表
javascript·vue.js·elementui
jaqi.l2 小时前
uni-app 小程序全局挂载分享功能,并动态配置页面是否可以分享
vue.js·小程序·uni-app
十年磨一剑~2 小时前
springboot+vue+mysql手搓一个管理系统
vue.js·spring boot·mysql