极狐GitLab Pages
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
极狐GitLab Pages 直接从极狐GitLab 的存储库中发布静态网站。
这些网站:
- 使用极狐GitLab CI/CD 流水线自动部署。
- 支持任何静态网站生成器(如 Hugo、Jekyll 或 Gatsby)或纯 HTML、CSS 和 JavaScript。
- 在极狐GitLab 提供的基础设施上运行,不需要额外费用。
- 可以连接自定义域名和 SSL/TLS 证书。
- 通过内置身份验证控制访问。
- 为个人、业务或项目文档网站提供可靠的扩展能力。

要使用 Pages 发布网站,可以使用任何静态网站生成器,如 Gatsby、Jekyll、Hugo、Middleman、Harp、Hexo 或 Brunch。Pages 还支持直接用纯 HTML、CSS 和 JavaScript 编写的网站。不支持动态服务器端处理(如 .php 和 .asp)。
入门
要创建一个极狐GitLab Pages 网站:
| 文档 | 描述 |
|---|---|
| 使用极狐GitLab UI 创建一个简单的 .gitlab-ci.yml | 为现有项目添加一个 Pages 网站。使用 UI 设置一个简单的 .gitlab-ci.yml。 |
| 从头开始创建一个 .gitlab-ci.yml 文件 | 为现有项目添加一个 Pages 网站。学习如何创建和配置你自己的 CI 文件。 |
| 使用 .gitlab-ci.yml 模板 | 为现有项目添加一个 Pages 网站。使用预填充的 CI 模板文件。 |
| Fork 一个示例项目 | 通过 Fork 一个示例项目创建一个已经配置好 Pages 的新项目。 |
| 使用项目模板 | 使用模板创建一个已经配置好 Pages 的新项目。 |
要更新一个极狐GitLab Pages 网站:
| 文档 | 描述 |
|---|---|
| 极狐GitLab Pages 域名、URL 和基本 URL | 了解极狐GitLab Pages 的默认域名。 |
| 探索极狐GitLab Pages | 需求、技术方面、具体的极狐GitLab CI/CD 配置选项、访问控制、自定义 404 页面、限制和常见问题。 |
| 自定义域名和 SSL/TLS 证书 | 自定义域名和子域名、DNS 记录和 SSL/TLS 证书。 |
| Let's Encrypt 集成 | 使用 Let's Encrypt 证书保护你的 Pages 网站,这些证书由极狐GitLab 自动获取和更新。 |
| 重定向 | 设置 HTTP 重定向以将一个页面转发到另一个页面。 |
工作原理
要使用极狐GitLab Pages,你必须在极狐GitLab 中创建一个项目,以上传你的网站文件。这些项目可以是公开的、内部的或私有的。
默认情况下,极狐GitLab 从你的存储库中特定的 public 文件夹中部署你的网站。你也可以设置一个自定义文件夹以与 Pages 一起部署。当你在极狐GitLab 中创建一个新项目时,存储库 会自动可用。
为了部署你的网站,极狐GitLab 使用其内置工具 极狐GitLab CI/CD 来构建你的网站并将其发布到极狐GitLab Pages 服务器。极狐GitLab CI/CD 运行的脚本序列是从一个名为 .gitlab-ci.yml 的文件中创建的,你可以创建和修改它。在配置文件中具有 pages: true 属性的用户定义的 job 使极狐GitLab 知道你正在部署一个极狐GitLab Pages 网站。
你可以使用极狐GitLab 默认的极狐GitLab Pages 网站域名,*.gitlab.io,或你自己的域名 (example.com)。在这种情况下,你必须是你的域名注册商(或控制面板)中的管理员,以便使用 Pages 进行设置。
以下图表显示了你可能遵循的使用 Pages 入门的工作流程。
访问你的 Pages 网站
如果你使用极狐GitLab Pages 的默认域名(.gitlab.io),你的网站会自动安全并可通过 HTTPS 访问。如果你使用自己的自定义域名,你可以选择使用 SSL/TLS 证书来保护它。
如果你使用 JihuLab.com,你的网站可以公开访问互联网。要限制对你网站的访问,请启用极狐GitLab Pages 访问控制。
如果你使用极狐GitLab 私有化部署实例,你的网站会根据你的系统管理员选择的Pages 设置发布在你自己的服务器上,系统管理员可以将其设置为公开或内部。
为极狐GitLab 私有化部署实例管理极狐GitLab Pages
如果你运行的是极狐GitLab 私有化部署实例, 按照管理步骤配置 Pages。
查看关于如何开始极狐GitLab Pages 管理的视频教程。
在 Helm Chart (Kubernetes) 实例中配置极狐GitLab Pages
要在使用 Helm chart (Kubernetes) 部署的实例上配置极狐GitLab Pages,请使用以下方法:
极狐GitLab Pages 的安全性
包含 . 的命名空间
如果你的用户名是 example,你的极狐GitLab Pages 网站位于 example.gitlab.io。极狐GitLab 允许用户名包含 .,因此名为 bar.example 的用户可以创建一个极狐GitLab Pages 网站 bar.example.gitlab.io,这实际上是你的 example.gitlab.io 网站的子域。如果你使用 JavaScript 为你的网站设置 cookie,请小心。手动使用 JavaScript 设置 cookie 的安全方法是不要指定 domain:
javascript1// 安全:此 cookie 仅对 example.gitlab.io 可见 2document.cookie = "key=value"; 3 4// 不安全:此 cookie 对 example.gitlab.io 及其子域可见, 5// 无论前导点是否存在。 6document.cookie = "key=value;domain=.example.gitlab.io"; 7document.cookie = "key=value;domain=example.gitlab.io";
此问题不会影响拥有自定义域的用户,或不使用 JavaScript 手动设置任何 cookie 的用户。
共享 cookie
默认情况下,群组中的每个项目共享相同的域,例如 group.gitlab.io。这意味着 cookie 也会在群组中的所有项目之间共享。
为了确保每个项目使用不同的 cookie,请为你的项目启用 Pages 的唯一域功能。
唯一域
History
- 引入于极狐GitLab 15.9,使用名为 pages_unique_domain 的功能标志。默认情况下禁用。
- 在极狐GitLab 15.11 中默认启用。
- 在极狐GitLab 16.3 中删除了功能标志。
- 在极狐GitLab 17.4 中更改了唯一域 URL,使其更短。
默认情况下,每个新项目使用 Pages 唯一域。这是为了避免同一群组上的项目共享 cookie。
项目维护者可以在以下位置禁用此功能:
- 在左侧边栏中,选择 搜索或转到 并找到你的项目。
- 选择 部署 > Pages。
- 清除 使用唯一域 复选框。
- 选择 保存更改。
有关示例 URL,请参阅极狐GitLab Pages 默认域名。
主域
History
- 引入于极狐GitLab 17.8。
当你使用极狐GitLab Pages 的自定义域时,你可以将所有请求重定向到极狐GitLab Pages 的主域。当选择主域时,用户会收到 308 Permanent Redirect 状态,将浏览器重定向到选定的主域。浏览器可能会缓存此重定向。
前提条件:
- 你必须至少拥有项目的维护者角色。
- 必须设置一个自定义域。
- 在左侧边栏中,选择 搜索或转到 并找到你的项目。
- 选择 部署 > Pages。
- 从 主域 下拉列表中选择要重定向到的域。
- 选择 保存更改。
过期部署
History
- 引入于极狐GitLab 17.4。
- 支持变量引入于极狐GitLab 17.11。
你可以通过在 pages.expire_in 中指定持续时间来配置你的 Pages 部署,以便在一段时间后自动删除:
yaml1create-pages: 2 stage: deploy 3 script: 4 - ... 5 pages: # 指定这是一个 Pages 作业并发布默认的公共目录 6 expire_in: 1 week
过期的部署由每 10 分钟运行一次的 cron 作业停止。随后,另一个每 10 分钟运行一次的 cron 作业删除已停止的部署。要恢复它,请按照恢复已停止的部署中描述的步骤进行操作。
已停止或删除的部署不再可通过网络访问。在其 URL 上,用户会看到 404 Not found 错误页面,直到创建具有相同 URL 配置的另一个部署。
上面的 YAML 示例使用用户定义的作业名称。
恢复已停止的部署
前提条件:
- 你必须至少拥有项目的维护者角色。
要恢复尚未删除的已停止部署:
- 在左侧边栏中,选择 搜索或转到 并找到你的项目。
- 选择 部署 > Pages。
- 在 部署 附近打开 包括已停止的部署 切换开关。 如果你的部署尚未被删除,它应该包含在列表中。
- 展开你想要恢复的部署并选择 恢复。
删除部署
要删除部署:
- 在左侧边栏中,选择 搜索或转到 并找到你的项目。
- 选择 部署 > Pages。
- 在 部署 下,选择你想要删除的部署的任何区域。 部署详细信息会展开。
- 选择 删除。
当你选择 删除 时,你的部署会立即停止。已停止的部署由每 10 分钟运行一次的 cron 作业删除。
要恢复尚未被删除的已停止部署,请参阅恢复已停止的部署。
用户定义的作业名称
History
- 引入于极狐GitLab 17.5,使用名为 customizable_pages_job_name 的功能标志。默认情况下禁用。
- 在极狐GitLab 17.6 中 GA。功能标志 customizable_pages_job_name 已删除。
要从任何作业触发 Pages 部署,请在作业定义中包含 pages 属性。它可以是设置为 true 的布尔值或哈希。
例如,使用 true:
yamldeploy-my-pages-site: stage: deploy script: - npm run build pages: true # 指定这是一个 Pages 作业并发布默认的公共目录
例如,使用哈希:
yaml1deploy-pages-review-app: 2 stage: deploy 3 script: 4 - npm run build 5 pages: # 指定这是一个 Pages 作业并发布默认的公共目录 6 path_prefix: '_staging'
如果一个名为 pages 的作业的 pages 属性设置为 false,则不会触发部署:
yamlpages: pages: false
如果你的流水线中有多个 Pages 作业具有相同的 path_prefix 值,则最后完成的作业将通过 Pages 部署。
并行部署
要同时为你的项目创建多个部署,例如创建审查应用,请查看并行部署文档。