极狐GitLab Pages

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

极狐GitLab Pages 直接从极狐GitLab 的存储库中发布静态网站。

这些网站:

  • 使用极狐GitLab CI/CD 流水线自动部署。
  • 支持任何静态网站生成器(如 Hugo、Jekyll 或 Gatsby)或纯 HTML、CSS 和 JavaScript。
  • 在极狐GitLab 提供的基础设施上运行,不需要额外费用。
  • 可以连接自定义域名和 SSL/TLS 证书。
  • 通过内置身份验证控制访问。
  • 为个人、业务或项目文档网站提供可靠的扩展能力。

Examples of SSGs supported by Pages

要使用 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 入门的工作流程。

New projects for GitLab 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

javascript
1// 安全:此 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 的用户。

默认情况下,群组中的每个项目共享相同的域,例如 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。

项目维护者可以在以下位置禁用此功能:

  1. 在左侧边栏中,选择 搜索或转到 并找到你的项目。
  2. 选择 部署 > Pages
  3. 清除 使用唯一域 复选框。
  4. 选择 保存更改

有关示例 URL,请参阅极狐GitLab Pages 默认域名

主域#

History
    • 引入于极狐GitLab 17.8。

当你使用极狐GitLab Pages 的自定义域时,你可以将所有请求重定向到极狐GitLab Pages 的主域。当选择主域时,用户会收到 308 Permanent Redirect 状态,将浏览器重定向到选定的主域。浏览器可能会缓存此重定向。

前提条件:

  • 你必须至少拥有项目的维护者角色。
  • 必须设置一个自定义域
  1. 在左侧边栏中,选择 搜索或转到 并找到你的项目。
  2. 选择 部署 > Pages
  3. 主域 下拉列表中选择要重定向到的域。
  4. 选择 保存更改

过期部署#

History
    • 引入于极狐GitLab 17.4。
    • 支持变量引入于极狐GitLab 17.11。

你可以通过在 pages.expire_in 中指定持续时间来配置你的 Pages 部署,以便在一段时间后自动删除:

yaml
1create-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 示例使用用户定义的作业名称

恢复已停止的部署#

前提条件:

  • 你必须至少拥有项目的维护者角色。

要恢复尚未删除的已停止部署:

  1. 在左侧边栏中,选择 搜索或转到 并找到你的项目。
  2. 选择 部署 > Pages
  3. 部署 附近打开 包括已停止的部署 切换开关。 如果你的部署尚未被删除,它应该包含在列表中。
  4. 展开你想要恢复的部署并选择 恢复

删除部署#

要删除部署:

  1. 在左侧边栏中,选择 搜索或转到 并找到你的项目。
  2. 选择 部署 > Pages
  3. 部署 下,选择你想要删除的部署的任何区域。 部署详细信息会展开。
  4. 选择 删除

当你选择 删除 时,你的部署会立即停止。已停止的部署由每 10 分钟运行一次的 cron 作业删除。

要恢复尚未被删除的已停止部署,请参阅恢复已停止的部署

用户定义的作业名称#

History
    • 引入于极狐GitLab 17.5,使用名为 customizable_pages_job_name功能标志。默认情况下禁用。
    • 在极狐GitLab 17.6 中 GA。功能标志 customizable_pages_job_name 已删除。

要从任何作业触发 Pages 部署,请在作业定义中包含 pages 属性。它可以是设置为 true 的布尔值或哈希。

例如,使用 true

yaml
deploy-my-pages-site: stage: deploy script: - npm run build pages: true # 指定这是一个 Pages 作业并发布默认的公共目录

例如,使用哈希:

yaml
1deploy-pages-review-app: 2 stage: deploy 3 script: 4 - npm run build 5 pages: # 指定这是一个 Pages 作业并发布默认的公共目录 6 path_prefix: '_staging'

如果一个名为 pages 的作业的 pages 属性设置为 false,则不会触发部署:

yaml
pages: pages: false

如果你的流水线中有多个 Pages 作业具有相同的 path_prefix 值,则最后完成的作业将通过 Pages 部署。

并行部署#

要同时为你的项目创建多个部署,例如创建审查应用,请查看并行部署文档。