极狐 GitLab

极狐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

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 的用户。

共享 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。

项目维护者可以禁用此功能:

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

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

主域名#

版本历史
  • 在极狐GitLab 17.8 中引入。

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

先决条件:

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

过期部署#

版本历史
  • 在极狐GitLab 17.4 中引入。
  • 在极狐GitLab 17.11 中支持变量。

您可以通过在 pages.expire_in 中指定持续时间,将 Pages 部署配置为在特定时间后自动删除:

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

恢复已停止的部署#

先决条件:

  • 您必须具备项目的维护者或所有者角色。

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

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

删除部署#

要删除部署:

  1. 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
  2. 在左侧边栏中,选择 部署 > Pages
  3. 部署 下方,选择您要删除的部署上的任意区域。 部署详情将展开。
  4. 选择 删除

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

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

用户自定义作业名称#

版本历史
  • 在极狐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 作业并发布默认的 public 目录

例如,使用哈希值:

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

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

yaml
pages: pages: false
如果您的流水线中有多个 Pages 作业具有相同的 `path_prefix` 值,则最后完成的作业会通过 Pages 部署。

并行部署#

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