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

一、前提条件
- Jenkins 环境准备 :
- 已完成 Jenkins 全局配置(全局工具配置 NodeJS、Maven、Git,全局凭证配置 Git 凭证)。
- 已安装必要插件:
Git Plugin、NodeJS Plugin、Maven Integration plugin、Workspace Cleanup Plugin。
- 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 地址:
bashssh://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 路径添加到环境变量(用于执行
node、npm、pnpm命令):- NodeJS Installation :选择全局工具配置中定义的 NodeJS(如之前配置的
NodeJS20)。
- NodeJS Installation :选择全局工具配置中定义的 NodeJS(如之前配置的
- 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 :填写构建产物的路径:
bashdist-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 地址:
bashssh://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 构建参数(根据项目需求调整,以下为通用配置):
bashclean 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 :填写需要归档的文件路径(根据项目实际目录结构调整):
bashmall-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 构建成功)。
- Vue 项目 :日志中应显示
(2)查看归档产物
- 构建成功后,任务页面会显示 "Last Successful Artifacts" (最新成功构建的产物):
- Vue 项目:点击
dist-test.tar.gz可下载构建后的前端包。 - Spring Boot 项目:点击
*.jar、*.md、*.sql可下载对应文件。
- Vue 项目:点击
五、常见问题排查
1. Git 拉取代码失败(Vue/Spring Boot 项目通用)
- 现象 :日志显示
Permission denied (publickey)或Could not read from remote repository。 - 原因 :Jenkins 服务器的 SSH 公钥未添加到 Git 服务器的
authorized_keys中,或凭证配置错误。 - 解决 :
-
在 Jenkins 服务器执行
cat /var/jenkins_home/.ssh/id_rsa.pub获取公钥。 -
登录 Git 服务器(
172.20.113.92),将公钥添加到~/.ssh/authorized_keys(若 Git 仓库使用独立用户,需添加到对应用户的authorized_keys)。 -
验证 Jenkins 服务器到 Git 服务器的 SSH 连接:
bashssh -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)。
- pnpm 未安装:检查 Jenkins 全局 NodeJS 配置中是否已安装
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}(自动指向当前工作区路径):bashcd ${WORKSPACE} # 替换固定路径,避免任务名称变更导致路径错误
六、总结
通过以上配置,Jenkins 可自动拉取 Git 仓库代码,清理工作区,使用 NodeJS/pnpm 编译 Vue 项目、Maven 编译 Spring Boot 项目,并归档构建产物。后续可扩展配置(如构建后自动部署到测试/生产环境),实现持续集成/持续部署(CI/CD)流程。
