极狐GitLab CI/CD 实例配置

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

    ## Default project features settings
    default_projects_features:
      issues: true
      merge_requests: true
      wiki: true
      snippets: false
      builds: false
    
  2. 保存 gitlab.yml 文件。

  3. 重启极狐GitLab:

    sudo service gitlab restart
    

对于 Linux 软件包安装实例:

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

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

  3. 重新配置极狐GitLab:

    sudo gitlab-ctl reconfigure
    

设置 needs 作业限制

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

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

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

要禁用有向无环图 (DAG),请将限制设置为 0。作业配置为使用 needs 的流水线,然后返回错误 job can only need 0 others

更改最大计划流水线频率

计划流水线可以使用任何 cron 值进行配置,但它们并不总是在计划时间准确运行。一个称为计划调度 worker 的内部进程将所有已调度的流水线排入队列,但不会连续运行。Worker 按自己的计划运行,准备启动的计划流水线仅在 worker 下次运行时排队。计划流水线不能比 worker 更频繁地运行。

流水线调度 worker 的默认频率是 3-59/10 * * * *(每十分钟一次,从 0:030:130:23 等开始)。

要更改流水线调度 worker 的频率:

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

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

灾难恢复

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

在实例 runner 上禁用公平调度

当清除作业的大型待办事项时,您可以临时启用功能标志 ci_queueing_disaster_recovery_disable_fair_scheduling。此功能标志会在实例 runner 上禁用公平调度,这能够减少 jobs/request 端点上的系统资源使用。

如果启用后,作业会按照放在系统中的顺序被执行,而不是为了平衡多个项目之间的负载而进行调度。

禁用计算配额强制执行

要想在实例 runner 上禁用计算资源限额的强制执行,您可以临时启用功能标志 ci_queueing_disaster_recovery_disable_quota。这能够减少 jobs/request 端点上的系统资源使用。

如果启用后,在过去一小时内创建的作业可以在超出配额的项目中运行。较早的作业已经被一个定期后台工作程序(StuckCiJobsWorker)取消了。