智享教程网
白蓝主题五 · 清爽阅读
首页  > 日常经验

Jenkins构建编译任务的实用配置经验分享

最近项目迭代频繁,每次改完代码都得手动打包、上传服务器,折腾得不行。后来干脆把 Jenkins 搭起来,搞了个自动构建编译任务,省事多了。刚开始也踩了不少坑,慢慢摸索出一套顺手的配置方式,记录下来,方便以后回看,也能帮到有同样需求的同学。

安装插件和基础配置

Jenkins 装好之后第一件事就是装插件。常用的 Git、Maven、SSH 插件一个都不能少。比如用的是 Git 管理代码,那 Git plugin 必须装上。Maven 项目的话,还得配置好全局的 JDK 和 Maven 路径,这些在“系统管理” -> “全局工具配置”里设置就行。

新建一个构建任务

点“新建任务”,输入任务名,选“构建一个自由风格的软件项目”。接下来就是关键步骤了:

在“源码管理”部分,选择 Git,填上仓库地址。如果用了账号密码或者 SSH 密钥,记得在 Credentials 里提前配置好,不然拉不下来代码。

构建触发器这块,我一般先勾上“轮询 SCM”,简单理解就是每隔几分钟检查一次代码有没有更新。配置写成 * * * * * 表示每分钟检查一次,适合开发调试。正式环境建议拉长间隔,比如每十分钟一次。

执行构建脚本

最关键的一步是“构建”阶段。如果是 Maven 项目,直接加个“调用顶层 Maven 目标”,Goals 填 clean package -DskipTests 就行。跳过测试能加快构建速度,当然前提是本地已经测得差不多了。

如果不是 Maven,也可以用“执行 shell”来写自定义命令。比如前端项目常用 npm 构建:

cd /var/jenkins/workspace/my-frontend-project
npm install
npm run build

构建后操作:自动部署

包打好之后,总不能还手动去服务器替换吧?这时候可以用 SSH 插件,把构建好的文件传到目标机器。比如 Java 打成 jar 包后,通过 shell 脚本 scp 过去,再重启服务。

scp target/myapp.jar user@server:/opt/apps/
ssh user@server "systemctl restart myapp"

当然,前提是你得配好免密登录,不然每次都要输密码就白搭了。

查看构建日志,快速排错

第一次跑任务失败太正常了。别慌,点进构建记录,看控制台输出。经常遇到的问题比如路径不对、权限不足、依赖下载失败。比如 Maven 报错找不到 settings.xml,那就去任务配置里指定自定义的 settings 文件。

还有时候构建成功了,但实际服务没起来。这时候就得去目标服务器查日志,看看是不是端口被占了,或者配置文件没同步。

小技巧:参数化构建

有时候想手动触发不同环境的构建,比如测试服打一个包,预发布服打另一个。可以开启“参数化构建”,加个字符串参数 ENV,值设为 test 或 pre。然后在构建脚本里引用这个变量:

mvn clean package -Denv=${ENV}

这样同一个任务就能适应多个环境,不用重复建一堆任务。

现在每天上班第一件事就是看 Jenkins 的构建状态,绿了就安心,红了就得动手查。虽然刚开始花点时间配置,但长期来看,省下的时间不止一点半点。自动化这东西,真香。