讲师中心 微信公众号
AI工具推荐 视频效率加速

Git多分支部署到不同服务器方案

梦浩小哥_1507

梦浩小哥_1507

发布时间:2026-09-05 07:31:29

|

121人浏览过

|

来源于php中文网

原创

结论:用 GitLab Runner + 分支条件判断 + 环境变量控制部署目标更可靠可维护;CI_COMMIT_BRANCH 是稳定可靠的分支识别方式,应结合项目级变量(如 PROD_SERVER)和动态 Maven profile 激活(-P$DEPLOY_ENV)实现多环境自动化部署,并通过 rsync 差量同步提升效率。

git多分支部署到不同服务器方案

直接说结论:用 GitLab Runner + 分支条件判断 + 环境变量控制部署目标,比写死 IP 或手动切换分支更可靠、可维护。

GitLab CI 中根据 CI_COMMIT_BRANCH 决定部署目标

部署逻辑不能靠人肉判断分支名再选服务器,必须由 CI 自动识别。GitLab 提供了稳定的环境变量 CI_COMMIT_BRANCH,它在 pipeline 启动时就已确定,且不会被后续操作污染。

  • 不要用 git rev-parse --abbrev-ref HEAD —— 在 Runner 的 clean 模式下,工作目录可能没检出任何分支,命令会失败或返回 HEAD
  • 推荐写法:if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then deploy_to 192.168.1.30; fi
  • 注意区分大小写:mainmaster 是两个不同值,需按实际仓库默认分支名匹配
  • 避免硬编码 IP:把服务器地址定义为项目级变量(如 PROD_SERVER),在 GitLab Settings → CI/CD → Variables 里配置,方便统一管理

Spring Boot 应用多环境打包时避免 profile 冲突

同一个代码库打不同环境的包,关键在 Maven 的 profilesresources 过滤机制。如果只靠 application.yml 里的 spring.profiles.active 切换,容易漏掉数据库 URL、Redis 地址等环境敏感项。

Digital Clawatar
Digital Clawatar

通过 UNITH API 创建、配置和管理 UNITH 数字人形象,价格低于 HeyGen 等,适用于用户想要创建…

下载
  • 每个环境应有独立的 src/main/resources/application-{env}.yml,比如 application-prod.ymlapplication-test.yml
  • Maven 打包命令必须显式激活 profile:mvn clean package -Pprod -Dmaven.test.skip=true
  • CI 脚本中要根据分支动态传参:mvn clean package -P$DEPLOY_ENV -Dmaven.test.skip=true,其中 DEPLOY_ENV 是通过 case $CI_COMMIT_BRANCH 设置的变量
  • 别依赖 IDE 自动生成的 target/*.jar —— CI 里必须重新构建,否则 profile 可能没生效,启动时报 java.lang.IllegalArgumentException: Could not resolve placeholder

部署脚本里用 rsync 替代 scp 减少重复传输

每次部署都全量传整个 JAR 包,既慢又占带宽。Spring Boot 的 fat jar 实际变化很小,rsync 能基于差异同步,实测可减少 70%+ 传输时间。

  • 基础命令:rsync -avz --delete target/app.jar user@${DEPLOY_HOST}:/opt/app/
  • --delete 是为了清理旧版本残留文件(比如上一次部署失败留下的临时文件)
  • 务必加 -z 压缩传输,尤其跨公网时;内网可去掉以降低 CPU 开销
  • 别用 scp -r 推整个 target/ 目录 —— 里面包含 classesmaven-archiver 等无用子目录,浪费 IO

GitLab Runner 的 tagsonly 配置容易漏掉的关键点

Runner 不是“注册了就能用”,必须和 .gitlab-ci.yml 中的约束条件精确匹配,否则 pipeline 会卡在 “waiting for a runner” 状态。

  • tags 必须完全一致:Runner 注册时指定的 tag(如 deploy-prod)和 job 里的 tags: [deploy-prod] 字母、大小写、空格都不能差
  • only 规则不支持通配符匹配分支名:only: ["/^feature.*$/"] 是无效的,得用 only: [/^feature\/.*$/](注意斜杠转义)
  • 如果用了 rules(推荐),记得加上 changes 条件,否则即使改了非 Java 文件也会触发部署:changes: ["pom.xml", "src/**/*"]
  • 别忽略 interruptible: true —— 对部署类 job 没用,但对测试 job 加上它,可以避免 cancel 时还占用 Runner 资源

最常被跳过的其实是权限校验:部署用户在目标服务器上是否真有 /opt/app/ 的写权限?systemctl 是否允许非 root 用户 reload service?这些不在 Git 配置里,但一出错就卡住整个流程。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

820

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2392

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

816

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

689

2023.10.17

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

374

2023.10.17

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2136

2023.10.18

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

3912

2023.10.20

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习

Git教程(60分钟全程无废话版)
Git教程(60分钟全程无废话版)

共5课时 | 2.1万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn