核心是代码提交后自动完成构建、测试、部署全流程,关键在于选型匹配技术栈(如Java+SVN用Jenkins+Maven+Tomcat,PHP用PHP Censor)、资源隔离、链路打通,并注重基础服务稳定性、流程可维护性、安全与可观测性。

服务器持续集成环境搭建,核心是让代码提交后自动完成构建、测试、部署全流程。关键不在于堆砌工具,而在于选型匹配项目技术栈、隔离资源、打通链路。下面分四块说清楚。
明确技术栈和部署方式
先决定用什么组合,再动手,避免中途返工:
- Java项目 + SVN:Jenkins + Maven + Tomcat 是成熟稳定的选择,适合中小团队,配置清晰、问题排查容易
- PHP项目:PHP Censor 更轻量,直接读取项目根目录的 .php-censor.yml 就能跑单元测试、代码规范检查,不用额外装插件
- 通用容器化方案:Docker + Jenkins 是当前主流,Jenkins 负责调度,Docker 负责环境隔离和镜像打包,适合微服务或需要多环境一致性的场景
- Git为主流仓库时:优先考虑 GitLab CI 或 Jenkins + GitLab Webhook,比 SVN 触发更及时,分支策略也更灵活
基础服务安装要稳且专
别把CI服务器当杂货铺,所有组件都应独立部署、版本可控:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- JDK必须提前装好,Jenkins 2.357+ 推荐 JDK 11 或 JDK 17;离线环境要提前下载对应版本 tar 包,解压后写死 JAVA_HOME 到 /etc/profile
- Jenkins本身不建议丢进Tomcat里跑(尤其新版),推荐用 war包独立启动 或 Docker容器运行,避免和Web容器冲突
- Maven、Git、Docker 等 CLI 工具必须在 Jenkins 所在机器的 PATH 中可用,且权限干净(比如不要用 root 启动 Jenkins,改用专用 jenkins 用户)
- 数据库(如 PHP Censor 需要 MySQL/PostgreSQL)和构建产物存储(如 Maven 本地仓库、Jenkins workspace)建议挂载独立磁盘,防止系统盘打满导致构建中断
构建流程配置重在可维护
配置不是越复杂越好,而是要让后续接手的人一眼看懂“它干了什么”:
- SVN 项目在 Jenkins 中填对 Repository URL 和 Credentials 即可,触发器选 “Poll SCM” 或配合 post-commit hook;Git 项目优先用 Webhook 自动触发,延迟更低
- Maven 构建命令通常就是 clean compile package,如有 profile 差异(如 dev/test/prod),统一通过 -P 参数传入,不要硬编码在 job 配置里
- PHP Censor 的 .php-censor.yml 文件建议放在项目根目录,包含 phpunit、phpcs、通知邮箱等,每次 git push 后自动生效,无需登录后台改配置
- 部署环节尽量脚本化:Tomcat 项目用 shell 脚本停旧进程、清 work 目录、拷 war 包、启新服务;Docker 方案则用 docker build + docker push + docker-compose up -d 三步走
安全与可观测性不能省
上线后没人管的 CI 系统,迟早变成定时炸弹:
- Jenkins 管理界面务必开启登录认证,禁用匿名访问;插件只装必需的,定期更新(尤其关注 CVE 漏洞通告)
- 每个构建任务设置失败通知,邮件或企业微信/钉钉机器人,消息里带上构建日志链接和失败关键词(如 “BUILD FAILURE”、“test failures”)
- 保留最近 30 次构建记录,旧构建自动清理;关键项目的构建产物(如 jar/war)建议同步到 NFS 或对象存储,便于回滚
- 加个简单健康检查:比如每小时 curl 一次 Jenkins API /api/json,结合 Prometheus + Grafana 看构建成功率、平均耗时、排队数

















