{{< details >}}

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

{{< /details >}}

您可以自定义流水线在您的项目中如何运行。

更改哪些用户可以查看您的流水线

对于公共和内部项目,您可以更改谁可以看到您的:

要更改您的流水线及相关功能的可见性:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 选中或清除 公共流水线 复选框。当选中时,流水线及相关功能是可见的:

    • 对于 公共 项目,所有人可见。
    • 对于 内部 项目,所有经过身份验证的用户(除了 外部用户)。
    • 对于 私有 项目,所有项目成员(访客或更高)。

    当被清除时:

    • 对于 公共 项目,作业日志、作业产物、流水线安全仪表板和 CI/CD 菜单项仅对项目成员(报告者或更高)可见。其他用户,包括访客用户,只能在查看合并请求或提交时查看流水线和作业的状态。
    • 对于 内部 项目,流水线对所有经过身份验证的用户(除了 外部用户)可见。相关功能仅对项目成员(报告者或更高)可见。
    • 对于 私有 项目,流水线及相关功能仅对项目成员(报告者或更高)可见。

更改公共项目中非项目成员的流水线可见性

您可以控制 公共项目 中非项目成员的流水线可见性。

此设置在以下情况下无效:

要更改非项目成员的流水线可见性:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 常规
  3. 展开 可见性、项目功能、权限
  4. 对于 CI/CD,选择:
    • 仅项目成员:只有项目成员可以查看流水线。
    • 所有有权限的人:非项目成员也可以查看流水线。
  5. 选择 保存更改

CI/CD 权限表 列出了当选择 所有有权限的人 时非项目成员可以访问的流水线功能。

自动取消冗余流水线

您可以设置挂起或正在运行的流水线,以便在同一分支上有新的更改流水线运行时自动取消。您可以在项目设置中启用此功能:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 选中 自动取消冗余流水线 复选框。
  5. 选择 保存更改

使用 interruptible 关键字来指示是否可以在作业完成之前取消正在运行的作业。在具有 interruptible: false 的作业启动后,整个流水线不再被视为可中断。

防止过时的部署作业

{{< history >}}

  • 还可以防止运行过时的手动或重试部署作业在极狐GitLab 15.5 添加。

{{< /history >}}

您的项目可能有多个并发部署作业计划在同一时间段运行。

这可能导致较旧的部署作业在较新的作业之后运行,这可能不是您想要的。

为了避免这种情况:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 选中 防止过时的部署作业 复选框。
  5. 可选。清除 允许重试作业以进行回滚部署 复选框。
  6. 选择 保存更改

有关更多信息,请参阅 部署安全

限制可以取消流水线或作业的角色

{{< details >}}

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

{{< /details >}}

{{< history >}}

  • 在极狐GitLab 16.7 中引入。

{{< /history >}}

您可以自定义哪些角色有权限取消流水线或作业。

默认情况下,至少具有开发者角色的用户可以取消流水线或作业。 您可以将取消权限限制为至少具有维护者角色的用户,或者完全禁止任何流水线或作业的取消。

要更改取消流水线或作业的权限:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 取消流水线或作业所需的最低角色 中选择一个选项。
  5. 选择 保存更改

指定自定义 CI/CD 配置文件

极狐GitLab 期望在项目的根目录中找到 CI/CD 配置文件(.gitlab-ci.yml)。然而,您可以指定一个备用文件名路径,包括项目外部的位置。

要自定义路径:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. CI/CD 配置文件 字段中,输入文件名。如果文件:
    • 不在根目录中,请包含路径。
    • 在不同的项目中,请包含群组和项目名称。
    • 在外部网站上,请输入完整的 URL。
  5. 选择 保存更改

{{< alert type=”note” >}}

您不能使用项目的 流水线编辑器 来编辑其他项目或外部网站上的 CI/CD 配置文件。

{{< /alert >}}

自定义 CI/CD 配置文件示例

如果 CI/CD 配置文件不在根目录中,路径必须相对于根目录。例如:

  • my/path/.gitlab-ci.yml
  • my/path/.my-custom-file.yml

如果 CI/CD 配置文件在外部网站上,URL 必须以 .yml 结尾:

  • http://example.com/generate/ci/config.yml

如果 CI/CD 配置文件在不同的项目中:

  • 文件必须存在于其默认分支上,或者指定分支为 refname。
  • 路径必须相对于另一个项目的根目录。
  • 路径后必须跟随 @ 符号和完整的群组及项目路径。

例如:

  • .gitlab-ci.yml@namespace/another-project
  • my/path/.my-custom-file.yml@namespace/subgroup/another-project
  • my/path/.my-custom-file.yml@namespace/subgroup1/subgroup2/another-project:refname

如果配置文件在单独的项目中,您可以设置更细粒度的权限。例如:

  • 创建一个公共项目来托管配置文件。
  • 仅对允许编辑文件的用户授予项目写权限。

然后其他用户和项目可以访问配置文件,而不能编辑它。

选择默认 Git 策略

您可以选择在作业运行时如何从极狐GitLab 提取您的存储库。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. Git 策略 下,选择一个选项:
    • git clone 较慢,因为它在每个作业中都会从头开始克隆存储库。然而,本地工作副本始终是干净的。
    • git fetch 较快,因为它重用本地工作副本(如果不存在则回退到克隆)。特别是对于 大型存储库,推荐使用此策略。

配置的 Git 策略可以通过 .gitlab-ci.yml 文件中的 GIT_STRATEGY 变量 覆盖。

限制克隆期间提取的更改数量

您可以限制极狐GitLab CI/CD 在克隆存储库时提取的更改数量。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. Git 策略 下的 Git 浅克隆 中,输入一个值。最大值为 1000。要禁用浅克隆并让极狐GitLab CI/CD 每次提取所有分支和标签,请保持值为空或设置为 0

新创建的项目具有默认的 git depth20

此值可以通过 .gitlab-ci.yml 文件中的 GIT_DEPTH 变量 覆盖。

设置作业运行时间限制

您可以定义作业在超时之前可以运行多长时间。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 超时 字段中,输入分钟数或类似 2 hours 的可读值。必须为 10 分钟或更长,并且少于一个月。默认值为 60 分钟。挂起的作业在 24 小时不活动后被丢弃。

超出超时时间的作业被标记为失败。

您可以为 单个 runner 覆盖此值。

流水线徽章

您可以使用 流水线徽章 来表示您的项目的流水线状态和测试覆盖率。这些徽章由最新成功的流水线确定。

禁用极狐GitLab CI/CD 流水线

极狐GitLab CI/CD 流水线在所有新项目中默认启用。如果您使用外部 CI/CD 服务器,如 Jenkins 或 Drone CI,您可以禁用极狐GitLab CI/CD 以避免与提交状态 API 冲突。

您可以按项目禁用极狐GitLab CI/CD 或 在一个实例上为所有新项目禁用

当您禁用极狐GitLab CI/CD 时:

  • 左侧边栏中的 CI/CD 项目被移除。
  • /pipelines/jobs 页面不再可用。
  • 现有作业和流水线被隐藏,而不是移除。

要在您的项目中禁用极狐GitLab CI/CD:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 常规
  3. 展开 可见性、项目功能、权限
  4. 存储库 部分,关闭 CI/CD
  5. 选择 保存更改

这些更改不适用于 外部集成 中的项目。

自动流水线清理

{{< details >}}

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

{{< /details >}}

{{< history >}}

  • 在极狐GitLab 17.7 中引入,使用名为 ci_delete_old_pipelines功能标志 。默认禁用。
  • 在极狐GitLab 17.9 中移除了 功能标志 ci_delete_old_pipelines

{{< /history >}}

具有所有者角色的用户可以设置 CI/CD 流水线过期时间,以帮助管理流水线存储和提高系统性能。系统会自动删除在配置值之前创建的流水线。

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > CI/CD
  3. 展开 常规流水线
  4. 自动流水线清理 字段中,输入秒数或类似 2 weeks 的可读值。必须为一天或更长,并且少于一年。保持为空以从不自动删除流水线。默认情况下为空。
  5. 选择 保存更改