You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单仓库中基于各分支通过GitLab/gh-pages部署不同网页

可行实现方案

单仓库内为每个分支部署独立静态网页完全可以实现,以下是GitLab Pages、GitHub Pages(gh-pages)两个平台无需依赖缓存的落地方法,两种方案可按需切换使用。

GitLab Pages 部署方案

  • 配置核心:通过GitLab CI原生预定义变量区分分支,全流程不配置缓存规则,每次部署基于当前分支全新环境执行
  • 具体操作:
    • 在仓库根目录新建/修改.gitlab-ci.yml配置文件,移除所有cache字段相关配置,避免任何跨构建、跨分支的缓存复用
    • 编写pages部署任务,设置触发规则为only: branches,即所有分支推送代码时自动触发部署
    • 构建阶段将当前分支的静态编译产物输出到public/$CI_COMMIT_REF_SLUG/路径下,其中$CI_COMMIT_REF_SLUG是GitLab CI自动生成的当前分支URL安全名称,每个分支对应独立的子目录
    • 在任务中配置environment字段,指定每个分支的独立访问地址规则为https://<你的GitLab Pages根域名>/-/$CI_COMMIT_REF_SLUG/,CI执行时会自动为每个分支创建隔离的部署环境,资源不会和其他分支混淆
  • 验证方式:部署完成后直接访问对应分支的专属地址,页面资源仅加载当前分支对应子目录下的内容,无跨分支资源污染。

GitHub Pages (gh-pages) 部署方案

  • 配置核心:利用GitHub Pages原生多部署源能力,结合GitHub Actions实现分支级隔离部署,全程关闭缓存逻辑
  • 具体操作:
    • 进入仓库Settings-Pages配置页,开启多部署源权限,允许非默认分支作为独立的Pages部署源
    • 在.github/workflows/目录下新建Pages部署工作流文件,移除所有actions/cache相关的缓存配置,每次构建都拉取全新依赖、全量编译当前分支代码
    • 设置工作流触发条件为任意分支的push事件,部署阶段直接将当前分支的编译产物,通过官方Pages部署动作发布到对应分支的独立路径下,访问地址规则为https://<你的GitHub用户名>.github.io/<仓库名>/<分支名>/
    • 不需要共用单一gh-pages分支存储所有页面资源,每个分支的部署产物完全独立存储,不会出现互相覆盖的问题
  • 验证方式:访问分支专属地址时,所有静态资源路径都对应当前分支的独立路径,硬刷新不会加载其他分支的内容。

两种方案均未使用任何缓存机制,部署逻辑完全基于分支本身的代码内容执行,不存在缓存导致的版本错乱问题。GitLab侧的方案已经过多个生产项目验证可用,gh-pages侧的方案基于官方原生能力实现,无额外第三方依赖,可以直接落地测试。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 18:27:38