GitLab CI/CD 인스턴스 구성
Offering: GitLab Self-Managed
GitLab 관리자는 인스턴스의 GitLab CI/CD 구성을 관리할 수 있습니다. GitLab CI/CD는 인스턴스의 모든 새 프로젝트에서 기본적으로 활성화됩니다. 이미 CI/CD가 활성화된 기존 프로젝트는 변경되지 않습니다.
GitLab 관리자는 인스턴스의 GitLab CI/CD 구성을 관리할 수 있습니다.
새 프로젝트에서 GitLab CI/CD 비활성화#
GitLab CI/CD는 인스턴스의 모든 새 프로젝트에서 기본적으로 활성화됩니다. 다음 설정을 수정하여 새 프로젝트에서 CI/CD를 기본적으로 비활성화할 수 있습니다:
- 자체 컴파일 설치의 경우
gitlab.yml. - Linux 패키지 설치의 경우
gitlab.rb.
이미 CI/CD가 활성화된 기존 프로젝트는 변경되지 않습니다. 또한 이 설정은 프로젝트 기본값만 변경하므로 프로젝트 소유자는 프로젝트 설정에서 CI/CD를 활성화할 수 있습니다.
자체 컴파일 설치의 경우:
-
편집기로
gitlab.yml을 열고builds를false로 설정합니다:## Default project features settings default_projects_features: issues: true merge_requests: true wiki: true snippets: false builds: false -
gitlab.yml파일을 저장합니다. -
GitLab을 재시작합니다:
sudo service gitlab restart
Linux 패키지 설치의 경우:
-
/etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:gitlab_rails['gitlab_default_projects_features_builds'] = false -
/etc/gitlab/gitlab.rb파일을 저장합니다. -
GitLab을 재구성합니다:
sudo gitlab-ctl reconfigure
needs job 제한 설정#
needs에 정의할 수 있는 최대 job 수는 기본적으로 50개입니다.
GitLab Rails 콘솔에 접근할 수 있는 GitLab 관리자는 사용자 지정 제한을 선택할 수 있습니다. 예를 들어 제한을 100으로 설정하려면:
Plan.default.actual_limits.update!(ci_needs_size_limit: 100)
needs 종속성을 비활성화하려면 제한을 0으로 설정합니다. needs를 사용하도록 구성된 job이 있는 파이프라인은 job can only need 0 others 오류를 반환합니다.
예약된 파이프라인의 최대 실행 빈도 변경#
예약된 파이프라인은 모든 cron 값으로 구성할 수 있지만, 항상 정확히 예약된 시간에 실행되지는 않습니다. _파이프라인 일정 워커_라는 내부 프로세스가 모든 예약된 파이프라인을 큐에 넣지만 지속적으로 실행되지는 않습니다. 워커는 자체 일정으로 실행되며, 시작할 준비가 된 예약된 파이프라인은 다음에 워커가 실행될 때만 큐에 추가됩니다. 예약된 파이프라인은 워커보다 더 자주 실행할 수 없습니다.
파이프라인 일정 워커의 기본 빈도는 3-59/10 * * * *(10분마다, 0:03, 0:13, 0:23 등으로 시작)입니다. GitLab.com의 기본 빈도는 GitLab.com 설정에 나와 있습니다.
파이프라인 일정 워커의 빈도를 변경하려면:
- 인스턴스의
gitlab.rb파일에서gitlab_rails['pipeline_schedule_worker_cron']값을 편집합니다. - 변경 사항이 적용되도록 GitLab을 재구성합니다.
예를 들어 파이프라인의 최대 실행 빈도를 하루 두 번으로 설정하려면 pipeline_schedule_worker_cron을 0 */12 * * * cron 값으로 설정합니다(매일 00:00과 12:00).
많은 파이프라인 일정이 동시에 실행되면 추가적인 지연이 발생할 수 있습니다. 파이프라인 일정 워커는 시스템 부하를 분산하기 위해 각 배치 사이에 약간의 지연을 두고 배치로 파이프라인을 처리합니다. 이로 인해 파이프라인 일정이 시스템 부하에 따라 예약된 시간보다 몇 분에서 한 시간 이상 늦게 시작될 수 있습니다.
재해 복구#
진행 중인 다운타임 중 데이터베이스의 스트레스를 완화하기 위해 중요하지만 계산 비용이 많이 드는 애플리케이션 일부를 비활성화할 수 있습니다.
인스턴스 러너에서 공정 스케줄링 비활성화#
많은 양의 job 백로그를 처리할 때, ci_queueing_disaster_recovery_disable_fair_scheduling 기능 플래그를 일시적으로 활성화할 수 있습니다. 이 플래그는 인스턴스 러너에서 공정 스케줄링을 비활성화하여 jobs/request 엔드포인트의 시스템 리소스 사용을 줄입니다.
활성화되면 job은 여러 프로젝트에 균형을 맞추는 대신 시스템에 넣어진 순서대로 처리됩니다.
컴퓨팅 할당량 적용 비활성화#
인스턴스 러너에서 컴퓨팅 분 할당량 적용을 비활성화하려면, ci_queueing_disaster_recovery_disable_quota 기능 플래그를 일시적으로 활성화할 수 있습니다. 이 플래그는 jobs/request 엔드포인트의 시스템 리소스 사용을 줄입니다.
활성화되면 지난 한 시간 내에 생성된 job이 할당량을 초과한 프로젝트에서 실행될 수 있습니다. 이전 job은 주기적인 백그라운드 워커(StuckCiJobsWorker)에 의해 이미 취소됩니다.
