极狐GitLab Pages
Tier: 基础版,专业版,旗舰版
Offering: JihuLab.com,私有化部署
极狐GitLab Pages 可直接从极狐GitLab 的代码仓发布静态网站。
这些网站:
- 通过极狐GitLab CI/CD 流水线自动部署。
- 支持任何静态站点生成器(如 Hugo、Jekyll 或 Gatsby)或纯 HTML、CSS、JavaScript 和 Wasm。
- 在由极狐GitLab 提供的基础设施上运行,无需额外费用。
- 连接到自定义域名和 SSL/TLS 证书。
- 通过内置身份验证控制访问。
- 能够为个人、业务或项目文档站点可靠地扩展。
要使用 Pages 发布网站,可使用任何静态站点生成器,例如 Gatsby、Jekyll、Hugo、Middleman、Harp、Hexo 或 Brunch。 Pages 还支持直接用纯 HTML、CSS、JavaScript 和 Wasm 编写的网站。 不支持动态服务器端处理(如 .php 和 .asp)。 更多信息,请参见静态网站与动态网站。
入门指南
要创建极狐GitLab Pages 网站:
| 文档 | 描述 |
|---|---|
| 使用极狐GitLab UI 创建一个简单的 .gitlab-ci.yml | 向现有项目添加 Pages 站点。使用 UI 设置一个简单的 .gitlab-ci.yml。 |
| 从零开始创建 .gitlab-ci.yml 文件 | 向现有项目添加 Pages 站点。学习如何创建和配置您自己的 CI 文件。 |
| 使用 .gitlab-ci.yml 模板 | 向现有项目添加 Pages 站点。使用预填充的 CI 模板文件。 |
| 复刻示例项目 | 通过复刻示例项目创建一个已配置 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 Pages,您必须在极狐GitLab 中创建一个项目,以上传您的网站文件。这些项目可以是公开、内部或私有的。
默认情况下,极狐GitLab 从您代码仓中一个名为 public 的特定文件夹部署您的网站。 您也可以设置一个自定义文件夹进行 Pages 部署。 当您在极狐GitLab 中创建新项目时,一个代码仓 会自动可用。
为了部署您的站点,极狐GitLab 使用其内置工具 极狐GitLab CI/CD 来构建您的站点并将其发布到极狐GitLab Pages 服务器。极狐GitLab CI/CD 为完成此任务而运行的脚本序列源自一个名为 .gitlab-ci.yml 的文件,您可以创建和修改此文件。 配置文件中用户定义的 job 具有 pages: true 属性,会让极狐GitLab 知道您正在部署一个极狐GitLab Pages 网站。
您可以使用极狐GitLab 为极狐GitLab Pages 网站提供的默认域名 *.gitlab.io,或您自己的域名(example.com)。如果是后者,您必须是您域名注册商(或控制面板)的管理员才能与 Pages 一起设置。
访问您的 Pages 站点
如果您使用极狐GitLab Pages 默认域名(.gitlab.io),您的网站将自动安全地通过 HTTPS 提供。如果您使用自己的自定义域名,您可以选择通过 SSL/TLS 证书来保护它。
如果您使用 JihuLab.com,您的网站将在互联网上公开。 要限制对网站的访问,启用极狐GitLab Pages 访问控制。
如果您使用的是极狐GitLab 私有化部署实例,您的网站将根据您的系统管理员选择的 Pages 设置 在您自己的服务器上发布,管理员可以将其设置为公开或内部。
为极狐GitLab 私有化部署实例管理极狐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 唯一域名 功能。
唯一域名
版本历史
- 在极狐GitLab 15.9 中引入,带有功能标志 pages_unique_domain,默认禁用。
- 在极狐GitLab 15.11 中默认启用。
- 在极狐GitLab 16.3 中移除功能标志。
- 在极狐GitLab 17.4 中变更以缩短唯一域名 URL。
默认情况下,每个新项目都使用 Pages 唯一域名,以避免同一群组中的项目共享 Cookie。
项目维护者可以禁用此功能:
- 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
- 在左侧边栏中,选择 部署 > Pages。
- 清除 使用唯一域名 复选框。
- 选择 保存更改。
有关示例 URL,请参见极狐GitLab Pages 默认域名。
主域名
版本历史
- 在极狐GitLab 17.8 中引入。
当您使用自定义域名的极狐GitLab Pages 时,可以将所有对极狐GitLab Pages 的请求重定向到主域名。 当选择主域名后,用户会收到 308 永久重定向 状态,将浏览器重定向到所选的主域名。浏览器可能会缓存此重定向。
先决条件:
- 您必须具备项目的维护者或所有者角色。
- 必须已设置自定义域名。
- 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
- 在左侧边栏中,选择 部署 > Pages。
- 从 主域名 下拉列表中选择要重定向到的域名。
- 选择 保存更改。
过期部署
版本历史
- 在极狐GitLab 17.4 中引入。
- 在极狐GitLab 17.11 中支持变量。
您可以通过在 pages.expire_in 中指定持续时间,将 Pages 部署配置为在特定时间后自动删除:
yaml1create-pages: 2 stage: deploy 3 script: 4 - ... 5 pages: # 指定这是 Pages 作业并发布默认的 public 目录 6 expire_in: 1 week
过期的部署由每 10 分钟运行一次的 cron 作业停止。 已停止的部署随后由另一个每 10 分钟运行一次的 cron 作业删除。要恢复它,请按照恢复已停止的部署 中的步骤操作。
已停止或已删除的部署在 Web 上不再可用。在其 URL 上会看到一个 404 未找到的错误页面,直到创建另一个具有相同 URL 配置的部署为止。
前面的 YAML 示例使用了用户自定义作业名称。
恢复已停止的部署
先决条件:
- 您必须具备项目的维护者或所有者角色。
要恢复尚未删除的已停止部署:
- 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
- 在左侧边栏中,选择 部署 > Pages。
- 在 部署 附近,开启 包含已停止的部署 开关。 如果您的部署尚未被删除,它应该会出现在列表中。
- 展开您要恢复的部署,并选择 恢复。
删除部署
要删除部署:
- 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
- 在左侧边栏中,选择 部署 > Pages。
- 在 部署 下方,选择您要删除的部署上的任意区域。 部署详情将展开。
- 选择 删除。
当您选择 删除 时,您的部署会立即停止。 已停止的部署由每 10 分钟运行一次的 cron 作业删除。
要恢复尚未删除的已停止部署,请参见恢复已停止的部署。
用户自定义作业名称
版本历史
- 在极狐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 作业并发布默认的 public 目录
例如,使用哈希值:
yaml1deploy-pages-review-app: 2 stage: deploy 3 script: 4 - npm run build 5 pages: # 指定这是 Pages 作业并发布默认的 public 目录 6 path_prefix: '_staging'
如果名为 pages 的作业的 pages 属性设置为 false,则不会触发部署:
yamlpages: pages: false
并行部署
要为您的项目同时创建多个部署,例如创建审查应用,请查阅并行部署 文档。