极狐GitLab CI/CD 实例配置

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

极狐GitLab 管理员可以管理其实例的极狐GitLab CI/CD 配置。

在新项目中禁用极狐GitLab CI/CD#

极狐GitLab CI/CD 在实例上的所有新项目中默认启用。您可以通过修改以下设置将 CI/CD 设置为在新项目中默认禁用:

  • gitlab.yml 适用于自编译安装。
  • gitlab.rb 适用于 Linux 软件包安装。

已启用 CI/CD 的现有项目保持不变。此外,此设置仅更改项目默认设置,因此项目所有者 仍然可以在项目设置中启用 CI/CD

对于自编译安装:

  1. 使用您的编辑器打开 gitlab.yml 并将 builds 设置为 false

    yaml
    1## Default project features settings 2default_projects_features: 3 issues: true 4 merge_requests: true 5 wiki: true 6 snippets: false 7 builds: false
  2. 保存 gitlab.yml 文件。

  3. 重启极狐GitLab:

    shell
    sudo service gitlab restart

对于 Linux 软件包安装:

  1. 编辑 /etc/gitlab/gitlab.rb 并添加这一行:

    ruby
    gitlab_rails['gitlab_default_projects_features_builds'] = false
  2. 保存 /etc/gitlab/gitlab.rb 文件。

  3. 重新配置极狐GitLab:

    shell
    sudo gitlab-ctl reconfigure

设置 needs 作业限制#

  • Tier: 基础版,专业版,旗舰版
  • Offering: 极狐GitLab 私有化部署

needs 中定义的最大作业数默认为 50。

具有 访问极狐GitLab Rails 控制台 权限的极狐GitLab 管理员可以选择自定义限制。例如,要将限制设置为 100

ruby
Plan.default.actual_limits.update!(ci_needs_size_limit: 100)

要禁用 needs 依赖关系,请将限制设置为 0。配置为使用 needs 的作业流水线将返回错误 job can only need 0 others

更改最大计划流水线频率#

计划流水线可以配置为任何 cron 值,但它们并不总是按计划运行。一个内部进程称为 流水线计划工作者,负责对所有计划的流水线进行排队,但不会连续运行。工作者按照自己的计划运行,并且准备开始的计划流水线只有在工作者下一次运行时才会排队。计划流水线无法比工作者更频繁地运行。

流水线计划工作者的默认频率是 3-59/10 * * * *(每十分钟,从 0:03, 0:13, 0:23 等开始)。极狐GitLab.com 的默认频率列在 极狐GitLab.com 设置 中。

要更改流水线计划工作者的频率:

  1. 编辑实例中的 gitlab.rb 文件中的 gitlab_rails['pipeline_schedule_worker_cron'] 值。
  2. 重新配置极狐GitLab 以使更改生效。

例如,要将流水线的最大频率设置为一天两次,将 pipeline_schedule_worker_cron 设置为 0 */12 * * *(每天 00:0012:00)。

灾难恢复#

您可以禁用应用程序的一些重要但计算昂贵的部分,以在持续停机期间减轻数据库压力。

禁用实例 runner 上的公平调度#

在清理大量作业积压时,您可以暂时启用 ci_queueing_disaster_recovery_disable_fair_scheduling feature flag。此标志禁用实例 runner 上的公平调度,从而减少 jobs/request 端点上的系统资源使用。

启用时,作业将按照它们进入系统的顺序处理,而不是在多个项目之间平衡。

禁用计算配额执行#

要在实例 runner 上禁用 计算分钟配额 的执行,您可以暂时启用 ci_queueing_disaster_recovery_disable_quota feature flag。此标志减少 jobs/request 端点上的系统资源使用。

启用时,最近一小时内创建的作业可以运行在已超出配额的项目中。早期的作业已由周期性后台工作者(StuckCiJobsWorker)取消。