InfoGrab DocsInfoGrab Docs

GitLab 18 업그레이드 참고 사항

요약

이 페이지에는 GitLab 18의 마이너 및 패치 버전에 대한 업그레이드 정보가 포함되어 있습니다. 현재 버전과 대상 버전 사이의 모든 버전. Helm 차트 설치에 대한 추가 정보는 Helm 차트 9.0 업그레이드 참고 사항을 참조하세요.

이 페이지에는 GitLab 18의 마이너 및 패치 버전에 대한 업그레이드 정보가 포함되어 있습니다. 다음에 대한 지침을 검토하세요:

  • 설치 유형.

  • 현재 버전과 대상 버전 사이의 모든 버전.

Helm 차트 설치에 대한 추가 정보는 Helm 차트 9.0 업그레이드 참고 사항을 참조하세요.

필수 업그레이드 중지점#

인스턴스 관리자에게 예측 가능한 업그레이드 일정을 제공하기 위해, 필수 업그레이드 중지점이 다음 버전에서 발생합니다:

  • 18.2

  • 18.5

  • 18.8

  • 18.11

업그레이드 참고 사항 목록#

다음은 각 GitLab 마이너 버전에 대한 업그레이드 참고 사항의 참조 목록입니다. 각 목록 항목은 더 자세한 정보가 있는 특정 섹션을 가리킵니다.

(Geo) 또는 (Linux package) 같은 설치 방법이 표시된 항목은 해당 방법에만 적용됩니다. 그 외 모든 항목은 모든 설치 방법에 적용됩니다.

18.11로 업그레이드#

GitLab 18.11로 업그레이드하기 전에 다음 사항을 검토하세요:

18.10으로 업그레이드#

GitLab 18.10으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.9로 업그레이드#

GitLab 18.9로 업그레이드하기 전에 다음 사항을 검토하세요:

18.8로 업그레이드#

GitLab 18.8로 업그레이드하기 전에 다음 사항을 검토하세요:

18.7로 업그레이드#

GitLab 18.7로 업그레이드하기 전에 다음 사항을 검토하세요:

18.6으로 업그레이드#

GitLab 18.6으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.5로 업그레이드#

GitLab 18.5로 업그레이드하기 전에 다음 사항을 검토하세요:

18.4로 업그레이드#

GitLab 18.4로 업그레이드하기 전에 다음 사항을 검토하세요:

18.3으로 업그레이드#

GitLab 18.3으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.2로 업그레이드#

GitLab 18.2로 업그레이드하기 전에 다음 사항을 검토하세요:

18.1로 업그레이드#

GitLab 18.1로 업그레이드하기 전에 다음 사항을 검토하세요:

18.0으로 업그레이드#

GitLab 18.0으로 업그레이드하기 전에 다음 사항을 검토하세요:

업그레이드 참고 사항#

GitLab 18에 대한 구체적인 업그레이드 참고 사항입니다.

파이프라인 실행 정책의 dotenv 변수가 variables_override를 준수함#

  • Tier: Ultimate

  • 영향 대상: 파이프라인 실행 정책

  • 영향 받는 버전:

릴리스 영향 받는 패치 릴리스
18.10 18.10.0 이상

GitLab 18.10 이상에서는 dotenv 아티팩트(artifacts:reports:dotenv)의 변수가 파이프라인 실행 정책의 다른 변수와 동일한 variables_override 규칙을 따릅니다 (기본적으로 안전함). 이전에는 dotenv 변수가 variables_override 제한을 우회할 수 있어 정책의 보안 제어가 약화되었습니다.

파이프라인이 정책에 정의된 변수를 재정의하기 위해 dotenv 변수에 의존했다면, variables_override.allowed: false가 설정된 경우 해당 동작이 더 이상 작동하지 않습니다. 이전 동작을 복원하려면 새 dotenv 옵션을 allow_override로 설정하세요:

variables_override:
  allowed: false
  exceptions: []
  dotenv: allow_override

자세한 내용은 파이프라인 실행 정책merge request 214991을 참조하세요.

파일 스토리지의 log_error NoMethodError로 인한 Geo blob 동기화 실패#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo (파일 스토리지 전용)

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.2 18.11.3
18.10 18.10.0 - 18.10.5 18.10.6
18.0 - 18.9 모든 패치 릴리즈 수정되지 않음

파일 스토리지(오브젝트 스토리지가 아닌)에 blob을 저장하는 Geo 보조 사이트에서 blob 복제(파이프라인 아티팩트, LFS 오브젝트, 업로드, job 아티팩트 등)가 다음과 같은 오해를 불러일으키는 오류와 함께 실패할 수 있습니다:

Error while attempting to sync: undefined method `log_error' for an instance of Gitlab::Geo::Replication::BlobDownloader

자세한 내용은 이슈 598565를 참조하세요.

Geo 컨테이너 리포지터리 동기화가 OCI 이미지 인덱스 태그를 자동으로 건너뜀#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo (컨테이너 레지스트리)

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.4 18.11.5
18.10 18.10.0 - 18.10.7 18.10.8
18.0 - 18.9 모든 패치 릴리즈 수정되지 않음

Geo 보조 사이트에서 컨테이너 리포지터리 동기화가 매니페스트가 OCI 이미지 인덱스(application/vnd.oci.image.index.v1+json)인 태그를 자동으로 건너뛰었습니다. 다중 아키텍처 이미지와 BuildKit 캐시 태그는 이 매니페스트 유형을 일반적으로 사용합니다. 오류가 발생하지 않았고 태그 수도 일치했지만, 보조 사이트에서 영향받은 태그에 대해 docker pull을 수행하면 manifest unknown이 반환되었습니다. 동일한 근본 원인으로 인해 보조 사이트에 고아 태그가 남아 동기화로 제거할 수 없었습니다.

기본 사이트와 보조 사이트 모두 수정된 버전으로 업그레이드하면, 새로 동기화된 태그는 올바릅니다. 이전에 영향받은 리포지터리는 다음 검증 주기(기본값으로 90일이 소요될 수 있는 재검증 인터벌)에서 수렴됩니다. 영향받은 리포지터리를 즉시 복구하려면 보조 사이트에서 컨테이너 리포지터리 동기화를 수동으로 트리거하세요.

자세한 내용은 이슈 600486을 참조하세요.

내부 및 공개 프로젝트에서 컨테이너 이미지를 가져올 때 CI job 토큰 회귀 문제#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.1 18.11.2

CI job이 CI_JOB_TOKEN을 사용하여 내부 또는 공개 프로젝트에서 컨테이너 이미지를 가져오는 경우, GitLab 18.11.0 또는 18.11.1로 업그레이드하지 마세요.

GitLab 18.11.0의 회귀 문제로 인해 CI job이 CI_JOB_TOKEN을 사용하여 내부 또는 공개 프로젝트에서 컨테이너 이미지를 가져올 수 없습니다. 영향받은 파이프라인은 denied: requested access to the resource is denied와 함께 실패합니다. 수정 사항이 18-11-stable-ee에 백포트되었지만 18.11.1 태그가 생성된 이후에 반영되어, 18.11.0과 18.11.1 모두 영향을 받습니다.

이미 업그레이드한 운영자를 위한 사용 가능한 임시 해결책:

  • 소비 프로젝트를 소스 프로젝트의 CI job 토큰 허용 목록에 추가합니다. CI/CD job 토큰 보안을 참조하세요.

  • CI_JOB_TOKEN 대신 개인, 그룹, 또는 프로젝트 액세스 토큰으로 컨테이너 풀을 인증합니다.

  • 백포트 커밋 e3c0f308을 GitLab 인스턴스에 적용합니다.

자세한 내용은 이슈 597223을 참조하세요.

SLES 12.5 RPM 패키지 설치 실패#

  • 영향 대상: Linux package

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 설치 가능한 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4 - 18.10.5
18.9 18.9.1 - 18.9.5 18.9.0, 18.9.6

SLES 12.5에서는 GitLab 18.9.0, 18.10.4, 18.11.2만 성공적으로 설치할 수 있습니다. 영향받는 범위의 다른 모든 패치 릴리즈는 설치에 실패합니다.

SLES 12.5용 GitLab Linux 패키지는 rpm 또는 zypper 명령을 사용할 때 error: install failed와 함께 설치에 실패합니다. 근본 원인은 SLES 12 SP5와 함께 출시된 RPM 4.11.2의 16 MiB RPM 헤더 데이터 크기 제한(HEADER_DATA_MAX)입니다. GitLab 패키지의 파일 수가 증가함에 따라 직렬화된 RPM 헤더가 이 제한을 초과하여 설치 중 RPM 데이터베이스 트랜잭션이 자동으로 실패했습니다.

이 문제는 Linux 패키지의 파일 수를 줄임으로써 특정 패치 릴리즈에서 해결되었습니다 (머지 리퀘스트 9215 참조). 그러나 파일 수가 다시 증가하면 후속 패치 릴리즈에서 회귀가 발생할 수 있습니다. SLES 12.5에 GitLab을 설치하려면 위에 나열된 설치 가능한 패치 레벨만 사용하세요.

SUSE 배포판은 GitLab 18.9에서 지원 중단되었으며 GitLab 19.0에서 제거될 예정입니다. 지원되는 운영 체제로 마이그레이션하는 것을 고려하세요.

자세한 내용은 이슈 9647을 참조하세요.

Mattermost 및 Spamcheck가 SLES 12.5 패키지에서 제거됨#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.11.0 이상

RPM 패키지 크기 제약으로 인해, Mattermost와 Spamcheck가 SLES 12.5 Linux 패키지에서 제거되었습니다.

SUSE 배포판은 GitLab 18.9에서 지원 중단되었으며 GitLab 19.0에서 제거될 예정이며, MattermostSpamcheck 모두 GitLab 19.0에서 모든 배포판에서 제거될 예정입니다.

SLES 12.5에서 Mattermost를 사용하는 경우, Mattermost를 독립 실행형 배포로 마이그레이션할 수 있습니다. SLES 12.5에서 Spamcheck를 사용하는 경우, Docker를 사용하여 배포할 수 있습니다.

Geo 보조 사이트의 스로틀된 job이 소진되지 않음#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

Geo 보조 사이트가 ConcurrencyLimit::ResumeWorker를 비활성화하여, 스로틀된 Geo::EventWorkerGeo::SyncWorker job이 소진되지 않고 Redis에 누적되었습니다. 이로 인해 Geo 복제가 중단되고 Redis 메모리 사용량이 증가할 수 있습니다.

자세한 내용은 이슈 595824를 참조하세요.

아웃바운드 필터링 사용 시 Geo 사이트 URL 차단됨#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

아웃바운드 요청 필터링이 활성화된 경우, Geo 사이트 URL이 잘못 차단됩니다. 이로 인해 Geo 사이트를 저장할 때 Url is blocked: Requests to hosts and IP addresses not on the Allow List are denied와 같은 유효성 검사 오류가 발생합니다.

이 문제는 아웃바운드 필터링이 구성될 때 Geo 사이트 URL이 아웃바운드 로컬 요청 허용 목록에 자동으로 추가되지 않기 때문에 발생합니다.

자세한 내용은 이슈 544821을 참조하세요.

Geo blob 다운로드 타임아웃 설정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.10.0

현재 8시간(28,800초)으로 하드코딩된 Geo blob 다운로드 타임아웃은 전송 시간이 더 필요한 매우 큰 LFS 오브젝트(5GB 이상)에 대해 동기화 실패를 야기하며, "시작됨" 상태에서 멈춰 있게 됩니다. 새로운 blob_download_timeout 설정으로 blob 복제(LFS 오브젝트, 업로드, job 아티팩트 등)의 사이트별 타임아웃(초 단위)을 제어합니다. Geo Sites API를 통해 구성할 수 있습니다.

  • 기본값: 28800 (8시간).

  • 최대값: 86400 (24시간).

Geo blob 다운로드 실패#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.4 18.10.5

모든 Geo blob 유형(업로드, LFS 오브젝트, job 아티팩트 등)이 보조 사이트에서 지속적으로 동기화에 실패할 수 있습니다. 일시적인 네트워크 오류와 달리, 이러한 실패는 모든 blob 레코드에 영향을 미치며 재시도해도 복구되지 않습니다. 영향받은 보조 사이트는 "실패" 상태의 blob을 표시하고, Sidekiq 로그에는 세그폴트, HPE_USER Span callback error in on_header_field 오류, 또는 예상치 못한 HTTP 상태 코드(예: status_code: 32 또는 status_code: 34)가 포함될 수 있습니다.

근본 원인은 GitLab 18.10에서 업그레이드된 rugged 1.9.0과 llhttp-ffi gem 간의 심볼 충돌입니다. rugged.so의 정적으로 링크된 llhttp 심볼이 llhttp-ffi 콜백을 재정의하여 HTTP 응답 파싱을 손상시킵니다. 자세한 내용은 이슈 598564를 참조하세요.

GitLab 18.10.5에서 rugged가 충돌하는 심볼을 포함하지 않는 1.7.2로 다운그레이드됩니다. 업그레이드 후 별도 조치가 필요하지 않습니다.

GitLab 18.10.4의 기능 플래그 임시 해결책#

GitLab 18.10.4를 사용 중이고 GitLab 18.10.5로 업그레이드할 수 없는 경우, geo_blob_download_with_gitlab_http 기능 플래그를 활성화하세요. 이 플래그는 blob 다운로드를 FFI 의존 http gem 대신 Gitlab::HTTP(Net::HTTP)를 사용하도록 전환합니다:

  • 기능 플래그 활성화:
sudo gitlab-rails console
Feature.enable(:geo_blob_download_with_gitlab_http)
exit
  • Sidekiq 재시작:
sudo gitlab-ctl restart sidekiq

기능 플래그 임시 해결책에는 알려진 제한 사항이 있습니다:

  • 60초를 초과하는 대형 blob 전송이 타임아웃될 수 있습니다 (이슈 598020).

  • 컨테이너 레지스트리 복제는 이 플래그로 처리되지 않습니다.

  • 아웃바운드 요청 필터링(deny_all_requests_except_allowed)이 있는 환경에서는 추가 구성이 필요할 수 있습니다 (이슈 598514).

자세한 내용은 이슈 595139를 참조하세요.

18.9로 업그레이드 시 PostgreSQL CheckViolation 오류로 실패#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.9.0, 18.9.1

Self-managed GitLab 인스턴스를 GitLab 18.9.0 또는 18.9.1로 업그레이드할 때, 데이터베이스 마이그레이션 중에 업그레이드가 다음 오류와 함께 실패합니다:

PG::CheckViolation: ERROR: check constraint "check_xxxxxxxx" of relation "tablename" is violated by some row

이 문제는 GitLab 18.10에서 수정된 버그로 인해 발생했습니다 (머지 리퀘스트 224446 참조). 수정 사항이 백포트되어 다음 GitLab 18.9 패치 릴리즈에 포함될 예정입니다 (머지 리퀘스트 225026 참조).

그러나 이 버그로 인해 단일 레코드 버그로 일괄 백그라운드 마이그레이션이 자동으로 건너뛰어질 수 있습니다. v18.8로 업그레이드할 때, 단일 레코드가 있는 테이블을 대상으로 하는 일괄 백그라운드 마이그레이션이 실행되지 않고 잘못 finished로 표시되었습니다. 이로 인해 데이터가 백필되지 않아 Self-managed 인스턴스에서 업그레이드 실패가 발생합니다.

제안된 수정 사항(머지 리퀘스트 225461 참조)은 영향받은 일괄 백그라운드 마이그레이션을 finished/finalized에서 다시 paused로 재설정하여 스케줄러가 다시 실행하도록 합니다. 이 수정은 min_value = max_value 또는 min_cursor = max_cursor인 경우 18.5~18.8 사이의 queued_migration_version을 가진 마이그레이션으로 범위가 제한됩니다.

두 가지 옵션이 있습니다:

  • 지금 임시 해결책을 적용하여 즉시 업그레이드를 완료합니다.

  • 완전한 수정을 기다렸다가 해당 릴리즈가 포함된 후 업그레이드합니다.

다음 Knowledge Base 문서에는 알려진 다섯 가지 증상에 대한 임시 해결책이 설명되어 있습니다:

차단된 사용자의 배포 키 및 개인 액세스 토큰 무효화#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.8 18.8.2 이상 N/A (의도적 변경)
18.7 18.7.2 이상 N/A (의도적 변경)
18.6 18.6.4 이상 N/A (의도적 변경)

GitLab 18.8.2, 18.7.2, 18.6.4는 이제 차단된 사용자와 연결된 배포 키를 사용하는 API 요청을 거부합니다. 차단된 사용자와 연결된 배포 키가 있는 경우, 위에 언급된 버전으로 업그레이드한 후에는 더 이상 작동하지 않습니다. 이것은 차단된 사용자가 키와 토큰을 통해 GitLab 리소스에 액세스하는 것을 방지하기 위한 보안 수정입니다.

다음을 수행해야 합니다:

  • 차단된 사용자가 소유한 배포 키 또는 PAT를 식별합니다.

  • 청구 가능한 사용자에게 재할당하거나, 삭제하고 청구 가능한 사용자 또는 서비스 계정으로 새 키/토큰을 생성합니다.

다음 쿼리는 차단된 계정과 연결되어 있고 지난 365일 동안 최소 한 번 사용된 모든 배포 키를 식별하는 데 사용할 수 있습니다:

SELECT
  k.id,
  k.user_id,
  u.username,
  u.state as user_state,
  k.title,
  k.fingerprint,
  k.fingerprint_sha256,
  k.usage_type,
  k.last_used_at,
  k.created_at,
  k.updated_at
FROM keys k
INNER JOIN users u ON k.user_id = u.id
WHERE u.state IN ('blocked', 'ldap_blocked', 'blocked_pending_approval', 'banned')
  AND k.type = 'DeployKey'
  AND k.last_used_at >= NOW() - INTERVAL '365 days'
ORDER BY u.state, u.username, k.last_used_at DESC;

ClickHouse 딕셔너리 생성 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

ClickHouse 통합이 활성화된 GitLab Self-Managed 고객은 누락된 권한(DB::Exception: gitlab: Not enough privileges)으로 인해 업그레이드 프로세스 중에 ClickHouse 데이터베이스 마이그레이션 오류가 발생할 수 있습니다. 이 오류를 해결하려면 데이터베이스 딕셔너리 읽기 지원 문제 해결 문서를 참조하세요.

CI 데이터에 대한 일괄 백그라운드 마이그레이션 재도입#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

CI builds 메타데이터 마이그레이션에서 도입된 일괄 백그라운드 마이그레이션은 데이터 구조의 엣지 케이스를 처리하고 완료를 보장하기 위해 재도입되어야 했습니다.

따옴표 없는 플레이스홀더가 있는 커스텀 웹훅 템플릿을 저장할 수 없음#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 모든 패치 릴리즈 수정되지 않음
18.9 모든 패치 릴리즈 수정되지 않음
18.8 모든 패치 릴리즈 수정되지 않음

GitLab 18.8 ~ 18.10에서 따옴표 없는 페이로드 필드가 있는 커스텀 웹훅 템플릿을 저장할 수 없습니다. 이 문제는 GitLab 18.11에서 해결되었습니다.

임시 해결책으로 필드를 따옴표로 묶으세요. 예를 들어, {"value": {{id}}}{"value": "{{id}}"}가 됩니다.

따옴표로 묶인 필드는 숫자 값 대신 문자열 값을 생성합니다. 이것이 웹훅과 호환되지 않는 경우, GitLab 18.11 이상으로 업그레이드하세요.

자세한 내용은 웹훅 문제 해결 문서를 참조하세요.

CI builds 메타데이터 마이그레이션#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.7.0

포스트 배포 마이그레이션은 CI builds 메타데이터를 새로운 최적화된 테이블(p_ci_job_definitions)로 복사하기 위해 일괄 백그라운드 마이그레이션을 예약합니다. 이 마이그레이션은 궁극적으로 CI 데이터베이스 크기를 줄이기 위한 이니셔티브의 일부입니다 (에픽 13886 참조). 수백만 개의 job이 있는 인스턴스가 있고 마이그레이션 속도를 높이고 싶은 경우, 마이그레이션할 데이터를 선택할 수 있습니다.

Geo ActionCable 허용 오리진 설정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.7.0

ActionCable 웹소켓 요청에 대한 허용 오리진을 구성하기 위해 새로운 action_cable_allowed_origins 설정이 추가되었습니다. 올바른 크로스-사이트 WebSocket 연결을 보장하기 위해 기본 사이트를 구성할 때 허용된 URL을 지정하세요:

Geo VerificationStateBackfillWorker 느린 쿼리 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.6.5

Geo::VerificationStateBackfillWorkermerge_request_diff_details 테이블에 대해 대형 느린 쿼리를 생성하는 Geo 이슈 587407이 수정되었습니다.

Commits and Files API 크기 및 속도 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.6 18.6.2 이상 N/A (의도적 변경)
18.5 18.5.4 이상 N/A (의도적 변경)
18.4 18.4.6 이상 N/A (의도적 변경)

GitLab 18.6.2, 18.5.4, 18.4.6은 다음 엔드포인트에 대한 요청에 크기 및 속도 제한을 도입했습니다:

GitLab은 크기 제한을 초과하는 요청에는 413 Entity Too large 상태로, 속도 제한을 초과하는 요청에는 429 Too Many Requests 상태로 응답합니다. 자세한 내용은 Commits and Files API 제한을 참조하세요.

Duo Agent Platform 러너 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.6.2

Duo Agent Platform에서 사용할 수 있는 러너와 관련하여 일부 러너 제한이 도입되었습니다.

Geo 로그 커서 마이그레이션 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.5 18.5.0 - 18.5.1 18.5.2
18.4 18.4.0 - 18.4.3 18.4.4

보조 사이트에서 Geo 로그 커서 시작을 방해하는 누락된 Geo 마이그레이션이 수정되었습니다.

디자인 관리 디자인 백필 완료#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.5.0

포스트 배포 마이그레이션 20250922202128_finalize_correct_design_management_designs_backfill이 18.4에서 예약된 일괄 백그라운드 마이그레이션을 완료합니다. 업그레이드 경로에서 18.4를 건너뛴 경우, 포스트 배포 마이그레이션이 실행될 때 마이그레이션이 완전히 실행됩니다. 실행 시간은 design_management_designs 테이블의 크기에 직접적으로 비례합니다. 대부분의 인스턴스에서 마이그레이션은 2분 이상 걸리지 않아야 하지만, 일부 대형 인스턴스의 경우 최대 10분이 걸릴 수 있습니다. 마이그레이션 프로세스를 중단하지 말고 기다려 주세요.

NGINX 라우팅 변경으로 인해 404 오류 발생#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.5.0

GitLab 18.5.0에 도입된 NGINX 라우팅 변경으로 인해 localhost 또는 대체 도메인 이름과 같은 일치하지 않는 호스트명을 사용할 때 서비스에 액세스할 수 없게 될 수 있습니다. 이 문제는 다음을 야기합니다:

  • /-/health와 같은 헬스 체크 엔드포인트가 적절한 응답 대신 404 오류를 반환합니다.

  • 구성된 FQDN 이외의 호스트명으로 액세스할 때 GitLab 웹 인터페이스에 404 오류 페이지가 표시됩니다.

  • GitLab Pages가 다른 서비스를 위한 트래픽을 수신할 수 있습니다.

  • 이전에 작동하던 대체 호스트명을 사용하는 모든 요청에 문제가 발생합니다.

이 문제는 Linux 패키지의 머지 리퀘스트 8805에서 해결되었으며, 수정 사항은 GitLab 18.5.2와 18.6.0에서 사용 가능합니다.

클론, 푸시, 풀과 같은 Git 작업은 이 문제의 영향을 받지 않습니다.

일괄 백그라운드 마이그레이션 nil 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.4.2, 18.4.3

18.4.2 또는 18.4.3으로 업그레이드하면 다음 일괄 백그라운드 마이그레이션에서 no implicit conversion of nil into String 오류가 발생할 수 있습니다:

  • FixIncompleteInstanceExternalAuditDestinations

  • FinalizeAuditEventDestinationMigrations

이 문제를 해결하려면 최신 패치 릴리즈로 업그레이드하거나 이슈 578938의 임시 해결책을 사용하세요.

Geo 복제 TypeError#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.4 18.4.0 - 18.4.1 18.4.2

Geo 보조 사이트에서 버그로 인해 복제 이벤트가 no implicit conversion of String into Array (TypeError) 오류 메시지와 함께 실패합니다. 재검증과 같은 중복성이 최종 일관성을 보장하지만, RPO(복구 목표 시점)가 크게 증가합니다.

서비스 거부 방지를 위한 JSON 입력 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.4 18.4.1 이상 N/A (의도적 변경)
18.3 18.3.3 이상 N/A (의도적 변경)
18.2 18.2.7 이상 N/A (의도적 변경)

GitLab 18.4.1, 18.3.3, 18.2.7은 서비스 거부 공격을 방지하기 위해 JSON 입력에 대한 제한을 도입했습니다. GitLab은 이 제한을 초과하는 HTTP 요청에 400 Bad Request 상태로 응답합니다. 자세한 내용은 HTTP 요청 제한을 참조하세요.

LdapAddOnSeatSyncWorker가 Duo 시트를 제거함#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.3.0

LDAP이 활성화된 경우 새로운 워커 LdapAddOnSeatSyncWorker가 도입되어 매일 밤 GitLab Duo 시트에서 모든 사용자를 의도치 않게 제거할 수 있었습니다. 이 문제는 GitLab 18.4.0과 18.3.2에서 수정되었습니다. 자세한 내용은 이슈 565064를 참조하세요.

Geo Rake 체크 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.3.0

Geo 보조 사이트를 설치할 때 rake gitlab:geo:check가 잘못 실패를 보고하는 이슈가 18.3.0에서 수정되었습니다.

Geo Pages 파일명 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.3 18.3.0 - 18.3.2 18.3.3
18.2 18.2.0 - 18.2.6 18.2.7
18.1 18.1.0 이상 18.1에서 수정되지 않음

GitLab 18.3.3 및 18.2.7 이상에는 긴 파일명이 있는 Pages 배포에서 Geo 검증이 실패할 수 있는 이슈 559196에 대한 수정이 포함됩니다. 이 수정은 복제 및 검증 중에 일관성을 유지하기 위해 Geo 보조 사이트의 파일명 트리밍을 방지합니다.

18.1과 18.2 사이의 무중단 업그레이드 푸시 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.2.0

18.1.x와 18.2.x 사이의 업그레이드는 알려진 이슈 567543의 영향을 받습니다. 이 이슈는 업그레이드 중에 기존 프로젝트에 코드를 푸시하는 데 오류가 발생합니다. 18.1.x와 18.2.x 버전 사이의 업그레이드 중에 다운타임이 없도록 하려면, 수정 사항이 포함된 버전 18.2.6으로 직접 업그레이드하세요.

Geo VerificationStateBackfillService ci_job_artifact_states#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.2 18.2.0 - 18.2.1 18.2.2
18.1 18.1.0 - 18.1.3 18.1.4
18.0 18.0.0 - 18.0.5 18.0.6

영향받은 버전에는 ci_job_artifact_states의 기본 키 변경으로 인해 VerificationStateBackfillService가 실행될 때 발생하는 알려진 이슈가 있습니다. 해결하려면 수정된 패치 레벨 릴리즈로 업그레이드하세요.

Elasticsearch strict_dynamic_mapping_exception#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0

Elasticsearch 버전 7에서 Elasticsearch 인덱싱이 strict_dynamic_mapping_exception 오류와 함께 실패할 수 있습니다. 해결하려면 이슈 566413의 "가능한 수정 사항" 섹션을 참조하세요.

PostgreSQL ci_job_artifacts 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0, 18.1.1

GitLab 18.1.0과 18.1.1은 PostgreSQL 로그에 ERROR: relation "ci_job_artifacts" does not exist at ...와 같은 오류를 표시합니다. 로그의 이러한 오류는 안전하게 무시할 수 있지만 Geo 사이트를 포함한 모니터링 경고를 트리거할 수 있습니다. 이 문제를 해결하려면 GitLab 18.1.2 이상으로 업데이트하세요.

머지 리퀘스트 거의 준비됨 버그#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0

일부 사용자의 커밋이 있는 머지 리퀘스트가 진행되지 않고 계속 Your merge request is almost ready를 표시할 수 있습니다. 이슈 554613을 참조하세요. 또한 sidekiq/current 로그merge_request_diff_commit.rb에 대한 undefined method 'id' for nil:NilClass 오류가 표시됩니다. 이 문제를 해결하려면:

REINDEX TABLE CONCURRENTLY public.merge_request_diff_commit_users;
  • 영향받은 머지 리퀘스트를 닫고 다시 엽니다.

Geo HTTP 500 프록시 오류#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.1 18.1.0 18.1.1
18.0 18.0.0 - 18.0.2 18.0.3

표의 GitLab 버전에는 보조 Geo 사이트에서 프록시되는 Git 작업이 HTTP 500 오류와 함께 실패하는 알려진 이슈가 있습니다. 해결하려면 수정된 패치 레벨 릴리즈로 업그레이드하세요.

PostgreSQL 14 미지원#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

PostgreSQL 14는 GitLab 18부터 지원되지 않습니다. GitLab 18.0 이상으로 업그레이드하기 전에 PostgreSQL을 최소 버전 16.5로 업그레이드하세요. 자세한 내용은 설치 요구 사항을 참조하세요.

자동 데이터베이스 버전 업그레이드는 Linux 패키지를 사용하는 단일 노드 인스턴스에만 적용됩니다. Geo 인스턴스, Linux 패키지를 사용하는 고가용성 PostgreSQL, 또는 외부 PostgreSQL 데이터베이스(Amazon RDS 등)를 사용하는 경우 PostgreSQL을 수동으로 업그레이드해야 합니다. 자세한 단계는 Geo 인스턴스 업그레이드를 참조하세요.

pg_dump 바이너리 호환성#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

GitLab은 pg_dump 바이너리를 번들로 제공합니다. 외부 PostgreSQL 서버를 사용하는 경우, GitLab 데이터베이스 백업 생성 및 복원 모두에 대해 pg_dump 클라이언트 버전이 PostgreSQL 서버와 호환되는지 확인하세요.

Bitnami PostgreSQL 및 Redis 이미지 지원 중단#

  • 영향 대상: Helm chart

  • 영향 받는 버전: 17.11.0 이하

2025년 9월 29일부터 Bitnami는 태그된 PostgreSQL 및 Redis 이미지 제공을 중단합니다. 번들 Redis 또는 Postgres와 함께 GitLab 차트를 사용하여 GitLab 17.11 이하를 배포하는 경우, 예상치 못한 다운타임을 방지하기 위해 레거시 리포지터리를 사용하도록 수동으로 값을 업데이트해야 합니다. 자세한 내용은 이슈 6089를 참조하세요.

17.11에서 무중단 업그레이드 시 파이프라인 실패#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

기능 플래그 ci_only_one_persistent_ref_creation은 Rails가 업그레이드되었지만 Sidekiq가 버전 17.11에 남아 있을 때 무중단 업그레이드 중에 파이프라인 실패를 야기합니다 (이슈 558808의 세부 정보 참조).

예방: 업그레이드 전에 Rails 콘솔을 열고 기능 플래그를 활성화하세요:

$ sudo gitlab-rails console
Feature.enable(:ci_only_one_persistent_ref_creation)

이미 영향을 받은 경우: 이 명령을 실행하고 실패한 파이프라인을 재시도하세요:

$ sudo gitlab-rails console
Rails.cache.delete_matched("pipeline:*:create_persistent_ref_service")

Gitaly 구성을 git_data_dirs에서 storage로 마이그레이션#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.0.0

GitLab 18.0 이상에서는 git_data_dirs 설정을 사용하여 Gitaly 스토리지 위치를 구성할 수 없습니다.

git_data_dirs를 아직 사용 중인 경우, GitLab 18.0으로 업그레이드하기 전에 Gitaly 구성을 마이그레이션해야 합니다.

Geo CE에서 EE로 되돌릴 때 마이그레이션 오류#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.0.0

GitLab Enterprise Edition을 배포했다가 GitLab Community Edition으로 되돌린 경우, 데이터베이스 스키마가 GitLab 애플리케이션이 예상하는 스키마와 달라져 18.0.0으로 업그레이드할 때 마이그레이션 오류가 발생할 수 있습니다. 해당 버전에서 해당 칼럼의 기본값을 변경하는 마이그레이션이 추가되었기 때문에 18.0.0 업그레이드 시 네 가지 특정 오류가 발생할 수 있습니다.

오류는 다음과 같습니다:

  • No such column: geo_nodes.verification_max_capacity

  • No such column: geo_nodes.minimum_reverification_interval

  • No such column: geo_nodes.repos_max_capacity

  • No such column: geo_nodes.container_repositories_max_capacity

이 마이그레이션은 해당 칼럼이 없을 경우 추가하도록 GitLab 18.0.2에서 패치되었습니다. 이슈 #543146을 참조하세요.

영향받은 릴리즈:

영향받은 마이너 릴리즈 영향받은 패치 릴리즈 수정된 버전
18.0 18.0.0 - 18.0.1 18.0.2

Docker 설치 시 PRNG is not seeded 오류#

  • 영향 대상: Docker

  • 영향 받는 버전: 18.0.0

FIPS가 활성화된 호스트에서 Docker 설치로 GitLab을 실행하는 경우, SSH 키 생성 또는 OpenSSH 서버(sshd) 시작이 다음 오류 메시지와 함께 실패할 수 있습니다:

PRNG is not seeded

GitLab 18.0은 기본 이미지를 Ubuntu 22.04에서 24.04로 업데이트했습니다. Ubuntu 24.04가 더 이상 FIPS 호스트가 비-FIPS OpenSSL 제공자를 사용하는 것을 허용하지 않기 때문에 이 오류가 발생합니다.

이 문제를 해결하기 위한 몇 가지 옵션이 있습니다:

  • 호스트 시스템에서 FIPS를 비활성화합니다.

  • GitLab Docker 컨테이너에서 FIPS 기반 커널의 자동 감지를 비활성화합니다. GitLab 18.0.2 이상에서 OPENSSL_FORCE_FIPS_MODE=0 환경 변수를 설정하면 됩니다.

  • GitLab Docker 이미지 대신 호스트에 네이티브 FIPS 패키지를 설치합니다.

마지막 옵션이 FIPS 요구 사항을 충족하기 위해 권장됩니다. 레거시 설치의 경우 처음 두 가지 옵션을 임시 방편으로 사용할 수 있습니다.

CI builds 메타데이터 마이그레이션 세부 정보#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.7.0

GitLab 18.6부터 새로운 파이프라인은 새로운 형식으로만 데이터를 씁니다 (이슈 552065 참조). 이 마이그레이션은 기존 데이터를 이전 형식에서 새 형식으로만 복사합니다. 데이터는 삭제되지 않습니다.

마이그레이션되지 않은 데이터는 향후 릴리즈에서 제거될 예정입니다 (에픽 18271 참조).

마이그레이션 기간은 인스턴스의 총 CI job 수에 직접적으로 비례합니다. 최신 데이터를 우선시하기 위해 job은 최신 파티션에서 가장 오래된 파티션 순으로 처리됩니다.

업그레이드 전에 대규모 프로젝트에서 자동 파이프라인 정리를 활성화하여 오래된 파이프라인을 삭제함으로써 마이그레이션할 job 수를 줄일 수 있습니다.

마이그레이션은 두 가지 유형의 데이터를 복사합니다:

  • Job 처리 데이터: UI 또는 API가 아닌 job 실행 시 러너에게만 필요한 .gitlab-ci.yml의 job 실행 구성(예: script, variables).

  • 사용자에게 표시되는 job 데이터: 모든 job 데이터 중에서 이 마이그레이션은 job 타임아웃 값, job 종료 코드 값, 노출된 아티팩트, 환경 연결에만 영향을 미칩니다.

대규모 CI 데이터셋이 있는 GitLab Self-Managed 및 GitLab Dedicated 인스턴스의 경우, 마이그레이션 범위를 줄여 마이그레이션 속도를 높일 수 있습니다. 범위를 제어하려면 아래에 정의된 설정을 사용하세요.

job 처리 데이터의 범위 제어#

기본적으로 마이그레이션은 기존 모든 job의 처리 데이터를 복사합니다. 아래에 설명된 설정 중 하나를 사용하여 범위를 줄일 수 있습니다.

설정 값은 보유하려는 job 처리 데이터의 양을 제어합니다. 예를 들어, 지난 6개월 동안 생성된 job만 실행될 것으로 예상되는 경우 (재시도, 수동 job 실행, 환경 자동 중지를 통해) 6mo로 설정하세요.

GitLab은 우선순위에 따라 설정을 찾습니다:

  • 파이프라인 아카이브 설정 (권장 모범 사례). 아카이브된 파이프라인은 job을 수동으로 재시도하거나 재실행할 수 없음을 나타냅니다. 이 설정이 활성화된 경우, 아카이브된 job의 처리 데이터는 마이그레이션할 필요가 없습니다.

    파이프라인 아카이브 범위가 나중에 확장되면, 처리 데이터가 없는 job은 실행 불가능한 상태로 남게 됩니다.

  • GITLAB_DB_CI_JOBS_PROCESSING_DATA_CUTOFF 환경 변수, 파이프라인 아카이브가 구성되지 않았거나 이 마이그레이션을 위해 재정의가 필요한 경우. 1y (1년), 6mo (6개월), 90d (90일)과 같은 기간 문자열을 허용합니다.

  • GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF 환경 변수, 위의 항목 중 어느 것도 설정되지 않은 경우. 1y (1년), 6mo (6개월), 90d (90일)과 같은 기간 문자열을 허용합니다. 사용자에게 표시되는 job 데이터의 범위 제어를 참조하세요.

  • 구성을 찾을 수 없는 경우 모든 데이터가 복사됩니다.

사용자에게 표시되는 job 데이터의 범위 제어#

환경 변수 GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF는 표시 데이터가 마이그레이션될 job을 제어합니다.

예를 들어, GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF=1y는 가장 최근 1년의 job에 대한 영향받은 표시 데이터(타임아웃 값, 환경, 종료 코드, 노출된 아티팩트 메타데이터)를 복사합니다.

기본적으로 컷오프 날짜가 없으며 모든 job의 데이터가 마이그레이션됩니다.

마이그레이션 영향 추정#

참고로, GitLab.com의 경우 약 2개월 동안 4억 개의 행을 마이그레이션할 것으로 예상합니다.

인스턴스의 마이그레이션 영향을 추정하기 위해 PostgreSQL 콘솔에서 다음 쿼리를 실행할 수 있습니다:

테이블 크기

SELECT n.nspname AS schema_name, c.relname AS partition_name,
       pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size
FROM pg_inherits i
JOIN pg_class c ON c.oid = i.inhrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
JOIN pg_class p ON p.oid = i.inhparent
WHERE p.relname = 'p_ci_builds_metadata'
ORDER BY pg_total_relation_size(c.oid) DESC;

새 테이블에는 이 공간의 약 20%가 필요합니다.

job 수 추정

이것은 PostgreSQL 통계 테이블의 추정값입니다.

SELECT SUM(c.reltuples)::bigint AS estimated_jobs_count
FROM pg_class c
JOIN pg_inherits i ON c.oid = i.inhrelid
WHERE i.inhparent = 'p_ci_builds'::regclass;

기간별 job 수

특정 기간에 생성된 job 수를 찾으려면 테이블을 쿼리해야 합니다:

SELECT COUNT(*) FROM p_ci_builds WHERE created_at >= now() - '1 year'::interval;

쿼리가 타임아웃되는 경우, Rails 콘솔을 사용하여 데이터를 배치로 처리하세요:

counts = []
CommitStatus.each_batch(of: 25000) do |batch|
  counts << batch.where(created_at: 1.year.ago...).count
end
counts.sum

머지 리퀘스트 병합 데이터에 대한 일괄 백그라운드 마이그레이션#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

일괄 백그라운드 마이그레이션merge_requests 테이블에서 새로운 전용 merge_requests_merge_data 테이블로 머지 리퀘스트 병합 관련 데이터를 복사합니다.

이 마이그레이션은 데이터베이스 스키마 최적화 이니셔티브의 일부로, 병합별 속성을 별도의 테이블로 정규화하여 쿼리 성능과 유지 보수성을 향상시킵니다.

마이그레이션되는 데이터#

마이그레이션은 merge_requests에서 merge_requests_merge_data로 다음 칼럼을 복사합니다:

  • merge_commit_sha

  • merged_commit_sha

  • merge_ref_sha

  • squash_commit_sha

  • in_progress_merge_commit_sha

  • merge_status

  • auto_merge_enabled

  • squash

  • merge_user_id

  • merge_params

  • merge_error

  • merge_jid

마이그레이션은 merge_requests 테이블을 처리하여 merge_requests_merge_data에 해당 항목이 없는 머지 리퀘스트의 데이터만 복사합니다.

GitLab 18.7부터 새로운 머지 리퀘스트는 애플리케이션 레벨의 이중 쓰기 메커니즘을 통해 두 테이블 모두에 데이터를 씁니다 (이슈 참조). 이 마이그레이션은 이중 쓰기가 구현된 후 생성되거나 수정되지 않은 기존 데이터만 복사합니다.

이 마이그레이션 중에 merge_requests 테이블에서 데이터는 삭제되지 않습니다.

마이그레이션은 GitLab 18.9에서 완료될 예정입니다. 자세한 내용은 이슈를 참조하세요.

마이그레이션 기간 추정#

마이그레이션 기간은 인스턴스의 머지 리퀘스트 수에 직접적으로 비례합니다.

영향을 추정하려면:

PostgreSQL 쿼리:

-- 전체 머지 리퀘스트 수
SELECT COUNT(*) FROM merge_requests;

-- 테이블 크기 추정
SELECT pg_size_pretty(pg_total_relation_size('merge_requests')) AS table_size;

Rails 콘솔:

# 전체 머지 리퀘스트 수
MergeRequest.count

# 마이그레이션할 남은 머지 리퀘스트 수
MergeRequest.left_joins(:merge_data)
  .where(merge_requests_merge_data: { merge_request_id: nil })
  .count

마이그레이션은 배치로 머지 리퀘스트를 처리하며 대부분의 인스턴스에서 몇 시간에서 며칠 내에 완료되어야 합니다.

GitLab 18.11의 PostgreSQL 버전 17.7 업그레이드#

  • 영향 대상: Linux package, Docker, Geo

  • 영향 받는 버전: 18.11.0

GitLab 18.11로 업그레이드하면 단일 노드 Linux 패키지 설치에 대해 PostgreSQL 17.7로 자동 업그레이드가 트리거됩니다.

자동 데이터베이스 버전 업그레이드는 Linux 패키지를 사용하는 단일 노드 인스턴스에만 적용됩니다. Geo 배포의 경우, 메이저 버전 업그레이드 시 Geo 보조 사이트에 대한 PostgreSQL 복제를 재초기화해야 하므로 PostgreSQL 업그레이드는 의도적으로 예약하고 계획해야 합니다. 이로 인해 예상보다 큰 다운타임이 발생할 수 있습니다.

Sidekiq 동시성 제한으로 인해 Helm 차트 및 Operator 배포에 job 백로그 발생#

  • 영향 대상: Helm chart, Operator

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

GitLab 18.9에서 GitLab Helm 차트가 기본적으로 GITLAB_SIDEKIQ_MAX_REPLICAS를 설정하기 시작했습니다 (charts/GitLab 머지 리퀘스트 4348). KEDA 기반 자동 확장을 사용하지 않는 GitLab Self-Managed 및 GitLab Dedicated 환경에서는 Sidekiq 동시성 제한이 예기치 않게 활성화되어 job을 Redis 기반 스로틀 큐로 지연시킵니다.

이로 인해 다음이 발생할 수 있습니다:

  • Sidekiq job 백로그.

  • Redis 메모리 증가.

  • job 실행 지연.

  • WebHookWorker, AuditEvents::AuditEventStreamingWorker, Geo 복제 워커(Geo::EventWorker, Geo::SyncWorker)와 같은 워커에 대한 영향.

영향을 받는 경우, 수정된 버전으로 업그레이드할 때까지 다음 임시 완화 방법 중 하나를 사용할 수 있습니다:

  • 특정 워커에 대한 동시성 제한 비활성화: 기능 플래그를 활성화하여 비활성화합니다. Sidekiq 파드에서 exec를 실행하여 Rails 콘솔을 엽니다:
kubectl exec -it <sidekiq-pod-name> -- gitlab-rails console

그런 다음 영향받은 워커에 대한 플래그를 활성화합니다:

Feature.enable(:"disable_sidekiq_concurrency_limit_middleware_")

를 영향받은 워커 이름(예: WebHookWorker)으로 교체하세요.

  • 모든 기본 동시성 제한 비활성화: Sidekiq 파드 환경 구성에서 GITLAB_SIDEKIQ_MAX_REPLICAS=0으로 설정합니다. 이렇게 하면 기본 동시성 제한 계산이 완전히 비활성화됩니다.

    Geo를 사용하는 경우, Geo 보조 사이트에서 ConcurrencyLimit::ResumeWorker가 실행되지 않으므로 이미 스로틀된 job이 자동으로 소진되지 않을 수 있습니다. 스로틀된 큐를 지우기 위해 수동으로 개입해야 할 수 있습니다.

기본 동시성 제한 계산을 기능 플래그 뒤에 두는 수정이 머지 리퀘스트 230713에 병합되었으며 18.10.4(머지 리퀘스트 231085)와 18.9.6(머지 리퀘스트 231297)에 백포트되었습니다.

모든 프로젝트에서 기본적으로 활성화된 시크릿 탐지 오탐 탐지#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.10.x

시크릿 오탐 탐지를 위한 foundation flow를 활성화하려면 일반적으로 두 단계가 필요합니다:

  • 그룹에 대해 foundational flow를 허용합니다.

  • 개별 프로젝트에 대해 foundational flow를 활성화합니다.

그러나 GitLab 18.10의 모든 버전으로 업그레이드하면 모든 프로젝트에 대해 시크릿 오탐 탐지를 위한 foundational flow가 활성화됩니다. 그룹에 대해 foundational flow가 허용되면 해당 그룹의 모든 프로젝트에 대해 이미 활성화됩니다.

그룹에 대해 시크릿 오탐 탐지를 위한 foundational flow를 허용하기 전에 그룹 내 프로젝트의 설정을 확인해야 합니다.

GitLab 18 업그레이드 참고 사항

GitLab v19.2
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

이 페이지에는 GitLab 18의 마이너 및 패치 버전에 대한 업그레이드 정보가 포함되어 있습니다. 현재 버전과 대상 버전 사이의 모든 버전. Helm 차트 설치에 대한 추가 정보는 Helm 차트 9.0 업그레이드 참고 사항을 참조하세요.

이 페이지에는 GitLab 18의 마이너 및 패치 버전에 대한 업그레이드 정보가 포함되어 있습니다. 다음에 대한 지침을 검토하세요:

  • 설치 유형.

  • 현재 버전과 대상 버전 사이의 모든 버전.

Helm 차트 설치에 대한 추가 정보는 Helm 차트 9.0 업그레이드 참고 사항을 참조하세요.

필수 업그레이드 중지점#

인스턴스 관리자에게 예측 가능한 업그레이드 일정을 제공하기 위해, 필수 업그레이드 중지점이 다음 버전에서 발생합니다:

  • 18.2

  • 18.5

  • 18.8

  • 18.11

업그레이드 참고 사항 목록#

다음은 각 GitLab 마이너 버전에 대한 업그레이드 참고 사항의 참조 목록입니다. 각 목록 항목은 더 자세한 정보가 있는 특정 섹션을 가리킵니다.

(Geo) 또는 (Linux package) 같은 설치 방법이 표시된 항목은 해당 방법에만 적용됩니다. 그 외 모든 항목은 모든 설치 방법에 적용됩니다.

18.11로 업그레이드#

GitLab 18.11로 업그레이드하기 전에 다음 사항을 검토하세요:

18.10으로 업그레이드#

GitLab 18.10으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.9로 업그레이드#

GitLab 18.9로 업그레이드하기 전에 다음 사항을 검토하세요:

18.8로 업그레이드#

GitLab 18.8로 업그레이드하기 전에 다음 사항을 검토하세요:

18.7로 업그레이드#

GitLab 18.7로 업그레이드하기 전에 다음 사항을 검토하세요:

18.6으로 업그레이드#

GitLab 18.6으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.5로 업그레이드#

GitLab 18.5로 업그레이드하기 전에 다음 사항을 검토하세요:

18.4로 업그레이드#

GitLab 18.4로 업그레이드하기 전에 다음 사항을 검토하세요:

18.3으로 업그레이드#

GitLab 18.3으로 업그레이드하기 전에 다음 사항을 검토하세요:

18.2로 업그레이드#

GitLab 18.2로 업그레이드하기 전에 다음 사항을 검토하세요:

18.1로 업그레이드#

GitLab 18.1로 업그레이드하기 전에 다음 사항을 검토하세요:

18.0으로 업그레이드#

GitLab 18.0으로 업그레이드하기 전에 다음 사항을 검토하세요:

업그레이드 참고 사항#

GitLab 18에 대한 구체적인 업그레이드 참고 사항입니다.

파이프라인 실행 정책의 dotenv 변수가 variables_override를 준수함#

  • Tier: Ultimate

  • 영향 대상: 파이프라인 실행 정책

  • 영향 받는 버전:

릴리스 영향 받는 패치 릴리스
18.10 18.10.0 이상

GitLab 18.10 이상에서는 dotenv 아티팩트(artifacts:reports:dotenv)의 변수가 파이프라인 실행 정책의 다른 변수와 동일한 variables_override 규칙을 따릅니다 (기본적으로 안전함). 이전에는 dotenv 변수가 variables_override 제한을 우회할 수 있어 정책의 보안 제어가 약화되었습니다.

파이프라인이 정책에 정의된 변수를 재정의하기 위해 dotenv 변수에 의존했다면, variables_override.allowed: false가 설정된 경우 해당 동작이 더 이상 작동하지 않습니다. 이전 동작을 복원하려면 새 dotenv 옵션을 allow_override로 설정하세요:

variables_override:
  allowed: false
  exceptions: []
  dotenv: allow_override

자세한 내용은 파이프라인 실행 정책merge request 214991을 참조하세요.

파일 스토리지의 log_error NoMethodError로 인한 Geo blob 동기화 실패#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo (파일 스토리지 전용)

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.2 18.11.3
18.10 18.10.0 - 18.10.5 18.10.6
18.0 - 18.9 모든 패치 릴리즈 수정되지 않음

파일 스토리지(오브젝트 스토리지가 아닌)에 blob을 저장하는 Geo 보조 사이트에서 blob 복제(파이프라인 아티팩트, LFS 오브젝트, 업로드, job 아티팩트 등)가 다음과 같은 오해를 불러일으키는 오류와 함께 실패할 수 있습니다:

Error while attempting to sync: undefined method `log_error' for an instance of Gitlab::Geo::Replication::BlobDownloader

자세한 내용은 이슈 598565를 참조하세요.

Geo 컨테이너 리포지터리 동기화가 OCI 이미지 인덱스 태그를 자동으로 건너뜀#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo (컨테이너 레지스트리)

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.4 18.11.5
18.10 18.10.0 - 18.10.7 18.10.8
18.0 - 18.9 모든 패치 릴리즈 수정되지 않음

Geo 보조 사이트에서 컨테이너 리포지터리 동기화가 매니페스트가 OCI 이미지 인덱스(application/vnd.oci.image.index.v1+json)인 태그를 자동으로 건너뛰었습니다. 다중 아키텍처 이미지와 BuildKit 캐시 태그는 이 매니페스트 유형을 일반적으로 사용합니다. 오류가 발생하지 않았고 태그 수도 일치했지만, 보조 사이트에서 영향받은 태그에 대해 docker pull을 수행하면 manifest unknown이 반환되었습니다. 동일한 근본 원인으로 인해 보조 사이트에 고아 태그가 남아 동기화로 제거할 수 없었습니다.

기본 사이트와 보조 사이트 모두 수정된 버전으로 업그레이드하면, 새로 동기화된 태그는 올바릅니다. 이전에 영향받은 리포지터리는 다음 검증 주기(기본값으로 90일이 소요될 수 있는 재검증 인터벌)에서 수렴됩니다. 영향받은 리포지터리를 즉시 복구하려면 보조 사이트에서 컨테이너 리포지터리 동기화를 수동으로 트리거하세요.

자세한 내용은 이슈 600486을 참조하세요.

내부 및 공개 프로젝트에서 컨테이너 이미지를 가져올 때 CI job 토큰 회귀 문제#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.11 18.11.0 - 18.11.1 18.11.2

CI job이 CI_JOB_TOKEN을 사용하여 내부 또는 공개 프로젝트에서 컨테이너 이미지를 가져오는 경우, GitLab 18.11.0 또는 18.11.1로 업그레이드하지 마세요.

GitLab 18.11.0의 회귀 문제로 인해 CI job이 CI_JOB_TOKEN을 사용하여 내부 또는 공개 프로젝트에서 컨테이너 이미지를 가져올 수 없습니다. 영향받은 파이프라인은 denied: requested access to the resource is denied와 함께 실패합니다. 수정 사항이 18-11-stable-ee에 백포트되었지만 18.11.1 태그가 생성된 이후에 반영되어, 18.11.0과 18.11.1 모두 영향을 받습니다.

이미 업그레이드한 운영자를 위한 사용 가능한 임시 해결책:

  • 소비 프로젝트를 소스 프로젝트의 CI job 토큰 허용 목록에 추가합니다. CI/CD job 토큰 보안을 참조하세요.

  • CI_JOB_TOKEN 대신 개인, 그룹, 또는 프로젝트 액세스 토큰으로 컨테이너 풀을 인증합니다.

  • 백포트 커밋 e3c0f308을 GitLab 인스턴스에 적용합니다.

자세한 내용은 이슈 597223을 참조하세요.

SLES 12.5 RPM 패키지 설치 실패#

  • 영향 대상: Linux package

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 설치 가능한 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4 - 18.10.5
18.9 18.9.1 - 18.9.5 18.9.0, 18.9.6

SLES 12.5에서는 GitLab 18.9.0, 18.10.4, 18.11.2만 성공적으로 설치할 수 있습니다. 영향받는 범위의 다른 모든 패치 릴리즈는 설치에 실패합니다.

SLES 12.5용 GitLab Linux 패키지는 rpm 또는 zypper 명령을 사용할 때 error: install failed와 함께 설치에 실패합니다. 근본 원인은 SLES 12 SP5와 함께 출시된 RPM 4.11.2의 16 MiB RPM 헤더 데이터 크기 제한(HEADER_DATA_MAX)입니다. GitLab 패키지의 파일 수가 증가함에 따라 직렬화된 RPM 헤더가 이 제한을 초과하여 설치 중 RPM 데이터베이스 트랜잭션이 자동으로 실패했습니다.

이 문제는 Linux 패키지의 파일 수를 줄임으로써 특정 패치 릴리즈에서 해결되었습니다 (머지 리퀘스트 9215 참조). 그러나 파일 수가 다시 증가하면 후속 패치 릴리즈에서 회귀가 발생할 수 있습니다. SLES 12.5에 GitLab을 설치하려면 위에 나열된 설치 가능한 패치 레벨만 사용하세요.

SUSE 배포판은 GitLab 18.9에서 지원 중단되었으며 GitLab 19.0에서 제거될 예정입니다. 지원되는 운영 체제로 마이그레이션하는 것을 고려하세요.

자세한 내용은 이슈 9647을 참조하세요.

Mattermost 및 Spamcheck가 SLES 12.5 패키지에서 제거됨#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.11.0 이상

RPM 패키지 크기 제약으로 인해, Mattermost와 Spamcheck가 SLES 12.5 Linux 패키지에서 제거되었습니다.

SUSE 배포판은 GitLab 18.9에서 지원 중단되었으며 GitLab 19.0에서 제거될 예정이며, MattermostSpamcheck 모두 GitLab 19.0에서 모든 배포판에서 제거될 예정입니다.

SLES 12.5에서 Mattermost를 사용하는 경우, Mattermost를 독립 실행형 배포로 마이그레이션할 수 있습니다. SLES 12.5에서 Spamcheck를 사용하는 경우, Docker를 사용하여 배포할 수 있습니다.

Geo 보조 사이트의 스로틀된 job이 소진되지 않음#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

Geo 보조 사이트가 ConcurrencyLimit::ResumeWorker를 비활성화하여, 스로틀된 Geo::EventWorkerGeo::SyncWorker job이 소진되지 않고 Redis에 누적되었습니다. 이로 인해 Geo 복제가 중단되고 Redis 메모리 사용량이 증가할 수 있습니다.

자세한 내용은 이슈 595824를 참조하세요.

아웃바운드 필터링 사용 시 Geo 사이트 URL 차단됨#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

아웃바운드 요청 필터링이 활성화된 경우, Geo 사이트 URL이 잘못 차단됩니다. 이로 인해 Geo 사이트를 저장할 때 Url is blocked: Requests to hosts and IP addresses not on the Allow List are denied와 같은 유효성 검사 오류가 발생합니다.

이 문제는 아웃바운드 필터링이 구성될 때 Geo 사이트 URL이 아웃바운드 로컬 요청 허용 목록에 자동으로 추가되지 않기 때문에 발생합니다.

자세한 내용은 이슈 544821을 참조하세요.

Geo blob 다운로드 타임아웃 설정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.10.0

현재 8시간(28,800초)으로 하드코딩된 Geo blob 다운로드 타임아웃은 전송 시간이 더 필요한 매우 큰 LFS 오브젝트(5GB 이상)에 대해 동기화 실패를 야기하며, "시작됨" 상태에서 멈춰 있게 됩니다. 새로운 blob_download_timeout 설정으로 blob 복제(LFS 오브젝트, 업로드, job 아티팩트 등)의 사이트별 타임아웃(초 단위)을 제어합니다. Geo Sites API를 통해 구성할 수 있습니다.

  • 기본값: 28800 (8시간).

  • 최대값: 86400 (24시간).

Geo blob 다운로드 실패#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.4 18.10.5

모든 Geo blob 유형(업로드, LFS 오브젝트, job 아티팩트 등)이 보조 사이트에서 지속적으로 동기화에 실패할 수 있습니다. 일시적인 네트워크 오류와 달리, 이러한 실패는 모든 blob 레코드에 영향을 미치며 재시도해도 복구되지 않습니다. 영향받은 보조 사이트는 "실패" 상태의 blob을 표시하고, Sidekiq 로그에는 세그폴트, HPE_USER Span callback error in on_header_field 오류, 또는 예상치 못한 HTTP 상태 코드(예: status_code: 32 또는 status_code: 34)가 포함될 수 있습니다.

근본 원인은 GitLab 18.10에서 업그레이드된 rugged 1.9.0과 llhttp-ffi gem 간의 심볼 충돌입니다. rugged.so의 정적으로 링크된 llhttp 심볼이 llhttp-ffi 콜백을 재정의하여 HTTP 응답 파싱을 손상시킵니다. 자세한 내용은 이슈 598564를 참조하세요.

GitLab 18.10.5에서 rugged가 충돌하는 심볼을 포함하지 않는 1.7.2로 다운그레이드됩니다. 업그레이드 후 별도 조치가 필요하지 않습니다.

GitLab 18.10.4의 기능 플래그 임시 해결책#

GitLab 18.10.4를 사용 중이고 GitLab 18.10.5로 업그레이드할 수 없는 경우, geo_blob_download_with_gitlab_http 기능 플래그를 활성화하세요. 이 플래그는 blob 다운로드를 FFI 의존 http gem 대신 Gitlab::HTTP(Net::HTTP)를 사용하도록 전환합니다:

  • 기능 플래그 활성화:
sudo gitlab-rails console
Feature.enable(:geo_blob_download_with_gitlab_http)
exit
  • Sidekiq 재시작:
sudo gitlab-ctl restart sidekiq

기능 플래그 임시 해결책에는 알려진 제한 사항이 있습니다:

  • 60초를 초과하는 대형 blob 전송이 타임아웃될 수 있습니다 (이슈 598020).

  • 컨테이너 레지스트리 복제는 이 플래그로 처리되지 않습니다.

  • 아웃바운드 요청 필터링(deny_all_requests_except_allowed)이 있는 환경에서는 추가 구성이 필요할 수 있습니다 (이슈 598514).

자세한 내용은 이슈 595139를 참조하세요.

18.9로 업그레이드 시 PostgreSQL CheckViolation 오류로 실패#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.9.0, 18.9.1

Self-managed GitLab 인스턴스를 GitLab 18.9.0 또는 18.9.1로 업그레이드할 때, 데이터베이스 마이그레이션 중에 업그레이드가 다음 오류와 함께 실패합니다:

PG::CheckViolation: ERROR: check constraint "check_xxxxxxxx" of relation "tablename" is violated by some row

이 문제는 GitLab 18.10에서 수정된 버그로 인해 발생했습니다 (머지 리퀘스트 224446 참조). 수정 사항이 백포트되어 다음 GitLab 18.9 패치 릴리즈에 포함될 예정입니다 (머지 리퀘스트 225026 참조).

그러나 이 버그로 인해 단일 레코드 버그로 일괄 백그라운드 마이그레이션이 자동으로 건너뛰어질 수 있습니다. v18.8로 업그레이드할 때, 단일 레코드가 있는 테이블을 대상으로 하는 일괄 백그라운드 마이그레이션이 실행되지 않고 잘못 finished로 표시되었습니다. 이로 인해 데이터가 백필되지 않아 Self-managed 인스턴스에서 업그레이드 실패가 발생합니다.

제안된 수정 사항(머지 리퀘스트 225461 참조)은 영향받은 일괄 백그라운드 마이그레이션을 finished/finalized에서 다시 paused로 재설정하여 스케줄러가 다시 실행하도록 합니다. 이 수정은 min_value = max_value 또는 min_cursor = max_cursor인 경우 18.5~18.8 사이의 queued_migration_version을 가진 마이그레이션으로 범위가 제한됩니다.

두 가지 옵션이 있습니다:

  • 지금 임시 해결책을 적용하여 즉시 업그레이드를 완료합니다.

  • 완전한 수정을 기다렸다가 해당 릴리즈가 포함된 후 업그레이드합니다.

다음 Knowledge Base 문서에는 알려진 다섯 가지 증상에 대한 임시 해결책이 설명되어 있습니다:

차단된 사용자의 배포 키 및 개인 액세스 토큰 무효화#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.8 18.8.2 이상 N/A (의도적 변경)
18.7 18.7.2 이상 N/A (의도적 변경)
18.6 18.6.4 이상 N/A (의도적 변경)

GitLab 18.8.2, 18.7.2, 18.6.4는 이제 차단된 사용자와 연결된 배포 키를 사용하는 API 요청을 거부합니다. 차단된 사용자와 연결된 배포 키가 있는 경우, 위에 언급된 버전으로 업그레이드한 후에는 더 이상 작동하지 않습니다. 이것은 차단된 사용자가 키와 토큰을 통해 GitLab 리소스에 액세스하는 것을 방지하기 위한 보안 수정입니다.

다음을 수행해야 합니다:

  • 차단된 사용자가 소유한 배포 키 또는 PAT를 식별합니다.

  • 청구 가능한 사용자에게 재할당하거나, 삭제하고 청구 가능한 사용자 또는 서비스 계정으로 새 키/토큰을 생성합니다.

다음 쿼리는 차단된 계정과 연결되어 있고 지난 365일 동안 최소 한 번 사용된 모든 배포 키를 식별하는 데 사용할 수 있습니다:

SELECT
  k.id,
  k.user_id,
  u.username,
  u.state as user_state,
  k.title,
  k.fingerprint,
  k.fingerprint_sha256,
  k.usage_type,
  k.last_used_at,
  k.created_at,
  k.updated_at
FROM keys k
INNER JOIN users u ON k.user_id = u.id
WHERE u.state IN ('blocked', 'ldap_blocked', 'blocked_pending_approval', 'banned')
  AND k.type = 'DeployKey'
  AND k.last_used_at >= NOW() - INTERVAL '365 days'
ORDER BY u.state, u.username, k.last_used_at DESC;

ClickHouse 딕셔너리 생성 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

ClickHouse 통합이 활성화된 GitLab Self-Managed 고객은 누락된 권한(DB::Exception: gitlab: Not enough privileges)으로 인해 업그레이드 프로세스 중에 ClickHouse 데이터베이스 마이그레이션 오류가 발생할 수 있습니다. 이 오류를 해결하려면 데이터베이스 딕셔너리 읽기 지원 문제 해결 문서를 참조하세요.

CI 데이터에 대한 일괄 백그라운드 마이그레이션 재도입#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

CI builds 메타데이터 마이그레이션에서 도입된 일괄 백그라운드 마이그레이션은 데이터 구조의 엣지 케이스를 처리하고 완료를 보장하기 위해 재도입되어야 했습니다.

따옴표 없는 플레이스홀더가 있는 커스텀 웹훅 템플릿을 저장할 수 없음#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 모든 패치 릴리즈 수정되지 않음
18.9 모든 패치 릴리즈 수정되지 않음
18.8 모든 패치 릴리즈 수정되지 않음

GitLab 18.8 ~ 18.10에서 따옴표 없는 페이로드 필드가 있는 커스텀 웹훅 템플릿을 저장할 수 없습니다. 이 문제는 GitLab 18.11에서 해결되었습니다.

임시 해결책으로 필드를 따옴표로 묶으세요. 예를 들어, {"value": {{id}}}{"value": "{{id}}"}가 됩니다.

따옴표로 묶인 필드는 숫자 값 대신 문자열 값을 생성합니다. 이것이 웹훅과 호환되지 않는 경우, GitLab 18.11 이상으로 업그레이드하세요.

자세한 내용은 웹훅 문제 해결 문서를 참조하세요.

CI builds 메타데이터 마이그레이션#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.7.0

포스트 배포 마이그레이션은 CI builds 메타데이터를 새로운 최적화된 테이블(p_ci_job_definitions)로 복사하기 위해 일괄 백그라운드 마이그레이션을 예약합니다. 이 마이그레이션은 궁극적으로 CI 데이터베이스 크기를 줄이기 위한 이니셔티브의 일부입니다 (에픽 13886 참조). 수백만 개의 job이 있는 인스턴스가 있고 마이그레이션 속도를 높이고 싶은 경우, 마이그레이션할 데이터를 선택할 수 있습니다.

Geo ActionCable 허용 오리진 설정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.7.0

ActionCable 웹소켓 요청에 대한 허용 오리진을 구성하기 위해 새로운 action_cable_allowed_origins 설정이 추가되었습니다. 올바른 크로스-사이트 WebSocket 연결을 보장하기 위해 기본 사이트를 구성할 때 허용된 URL을 지정하세요:

Geo VerificationStateBackfillWorker 느린 쿼리 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.6.5

Geo::VerificationStateBackfillWorkermerge_request_diff_details 테이블에 대해 대형 느린 쿼리를 생성하는 Geo 이슈 587407이 수정되었습니다.

Commits and Files API 크기 및 속도 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.6 18.6.2 이상 N/A (의도적 변경)
18.5 18.5.4 이상 N/A (의도적 변경)
18.4 18.4.6 이상 N/A (의도적 변경)

GitLab 18.6.2, 18.5.4, 18.4.6은 다음 엔드포인트에 대한 요청에 크기 및 속도 제한을 도입했습니다:

GitLab은 크기 제한을 초과하는 요청에는 413 Entity Too large 상태로, 속도 제한을 초과하는 요청에는 429 Too Many Requests 상태로 응답합니다. 자세한 내용은 Commits and Files API 제한을 참조하세요.

Duo Agent Platform 러너 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.6.2

Duo Agent Platform에서 사용할 수 있는 러너와 관련하여 일부 러너 제한이 도입되었습니다.

Geo 로그 커서 마이그레이션 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.5 18.5.0 - 18.5.1 18.5.2
18.4 18.4.0 - 18.4.3 18.4.4

보조 사이트에서 Geo 로그 커서 시작을 방해하는 누락된 Geo 마이그레이션이 수정되었습니다.

디자인 관리 디자인 백필 완료#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.5.0

포스트 배포 마이그레이션 20250922202128_finalize_correct_design_management_designs_backfill이 18.4에서 예약된 일괄 백그라운드 마이그레이션을 완료합니다. 업그레이드 경로에서 18.4를 건너뛴 경우, 포스트 배포 마이그레이션이 실행될 때 마이그레이션이 완전히 실행됩니다. 실행 시간은 design_management_designs 테이블의 크기에 직접적으로 비례합니다. 대부분의 인스턴스에서 마이그레이션은 2분 이상 걸리지 않아야 하지만, 일부 대형 인스턴스의 경우 최대 10분이 걸릴 수 있습니다. 마이그레이션 프로세스를 중단하지 말고 기다려 주세요.

NGINX 라우팅 변경으로 인해 404 오류 발생#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.5.0

GitLab 18.5.0에 도입된 NGINX 라우팅 변경으로 인해 localhost 또는 대체 도메인 이름과 같은 일치하지 않는 호스트명을 사용할 때 서비스에 액세스할 수 없게 될 수 있습니다. 이 문제는 다음을 야기합니다:

  • /-/health와 같은 헬스 체크 엔드포인트가 적절한 응답 대신 404 오류를 반환합니다.

  • 구성된 FQDN 이외의 호스트명으로 액세스할 때 GitLab 웹 인터페이스에 404 오류 페이지가 표시됩니다.

  • GitLab Pages가 다른 서비스를 위한 트래픽을 수신할 수 있습니다.

  • 이전에 작동하던 대체 호스트명을 사용하는 모든 요청에 문제가 발생합니다.

이 문제는 Linux 패키지의 머지 리퀘스트 8805에서 해결되었으며, 수정 사항은 GitLab 18.5.2와 18.6.0에서 사용 가능합니다.

클론, 푸시, 풀과 같은 Git 작업은 이 문제의 영향을 받지 않습니다.

일괄 백그라운드 마이그레이션 nil 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.4.2, 18.4.3

18.4.2 또는 18.4.3으로 업그레이드하면 다음 일괄 백그라운드 마이그레이션에서 no implicit conversion of nil into String 오류가 발생할 수 있습니다:

  • FixIncompleteInstanceExternalAuditDestinations

  • FinalizeAuditEventDestinationMigrations

이 문제를 해결하려면 최신 패치 릴리즈로 업그레이드하거나 이슈 578938의 임시 해결책을 사용하세요.

Geo 복제 TypeError#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.4 18.4.0 - 18.4.1 18.4.2

Geo 보조 사이트에서 버그로 인해 복제 이벤트가 no implicit conversion of String into Array (TypeError) 오류 메시지와 함께 실패합니다. 재검증과 같은 중복성이 최종 일관성을 보장하지만, RPO(복구 목표 시점)가 크게 증가합니다.

서비스 거부 방지를 위한 JSON 입력 제한#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.4 18.4.1 이상 N/A (의도적 변경)
18.3 18.3.3 이상 N/A (의도적 변경)
18.2 18.2.7 이상 N/A (의도적 변경)

GitLab 18.4.1, 18.3.3, 18.2.7은 서비스 거부 공격을 방지하기 위해 JSON 입력에 대한 제한을 도입했습니다. GitLab은 이 제한을 초과하는 HTTP 요청에 400 Bad Request 상태로 응답합니다. 자세한 내용은 HTTP 요청 제한을 참조하세요.

LdapAddOnSeatSyncWorker가 Duo 시트를 제거함#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.3.0

LDAP이 활성화된 경우 새로운 워커 LdapAddOnSeatSyncWorker가 도입되어 매일 밤 GitLab Duo 시트에서 모든 사용자를 의도치 않게 제거할 수 있었습니다. 이 문제는 GitLab 18.4.0과 18.3.2에서 수정되었습니다. 자세한 내용은 이슈 565064를 참조하세요.

Geo Rake 체크 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.3.0

Geo 보조 사이트를 설치할 때 rake gitlab:geo:check가 잘못 실패를 보고하는 이슈가 18.3.0에서 수정되었습니다.

Geo Pages 파일명 수정#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.3 18.3.0 - 18.3.2 18.3.3
18.2 18.2.0 - 18.2.6 18.2.7
18.1 18.1.0 이상 18.1에서 수정되지 않음

GitLab 18.3.3 및 18.2.7 이상에는 긴 파일명이 있는 Pages 배포에서 Geo 검증이 실패할 수 있는 이슈 559196에 대한 수정이 포함됩니다. 이 수정은 복제 및 검증 중에 일관성을 유지하기 위해 Geo 보조 사이트의 파일명 트리밍을 방지합니다.

18.1과 18.2 사이의 무중단 업그레이드 푸시 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.2.0

18.1.x와 18.2.x 사이의 업그레이드는 알려진 이슈 567543의 영향을 받습니다. 이 이슈는 업그레이드 중에 기존 프로젝트에 코드를 푸시하는 데 오류가 발생합니다. 18.1.x와 18.2.x 버전 사이의 업그레이드 중에 다운타임이 없도록 하려면, 수정 사항이 포함된 버전 18.2.6으로 직접 업그레이드하세요.

Geo VerificationStateBackfillService ci_job_artifact_states#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 레벨 수정된 패치 레벨
18.2 18.2.0 - 18.2.1 18.2.2
18.1 18.1.0 - 18.1.3 18.1.4
18.0 18.0.0 - 18.0.5 18.0.6

영향받은 버전에는 ci_job_artifact_states의 기본 키 변경으로 인해 VerificationStateBackfillService가 실행될 때 발생하는 알려진 이슈가 있습니다. 해결하려면 수정된 패치 레벨 릴리즈로 업그레이드하세요.

Elasticsearch strict_dynamic_mapping_exception#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0

Elasticsearch 버전 7에서 Elasticsearch 인덱싱이 strict_dynamic_mapping_exception 오류와 함께 실패할 수 있습니다. 해결하려면 이슈 566413의 "가능한 수정 사항" 섹션을 참조하세요.

PostgreSQL ci_job_artifacts 오류#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0, 18.1.1

GitLab 18.1.0과 18.1.1은 PostgreSQL 로그에 ERROR: relation "ci_job_artifacts" does not exist at ...와 같은 오류를 표시합니다. 로그의 이러한 오류는 안전하게 무시할 수 있지만 Geo 사이트를 포함한 모니터링 경고를 트리거할 수 있습니다. 이 문제를 해결하려면 GitLab 18.1.2 이상으로 업데이트하세요.

머지 리퀘스트 거의 준비됨 버그#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.1.0

일부 사용자의 커밋이 있는 머지 리퀘스트가 진행되지 않고 계속 Your merge request is almost ready를 표시할 수 있습니다. 이슈 554613을 참조하세요. 또한 sidekiq/current 로그merge_request_diff_commit.rb에 대한 undefined method 'id' for nil:NilClass 오류가 표시됩니다. 이 문제를 해결하려면:

REINDEX TABLE CONCURRENTLY public.merge_request_diff_commit_users;
  • 영향받은 머지 리퀘스트를 닫고 다시 엽니다.

Geo HTTP 500 프록시 오류#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.1 18.1.0 18.1.1
18.0 18.0.0 - 18.0.2 18.0.3

표의 GitLab 버전에는 보조 Geo 사이트에서 프록시되는 Git 작업이 HTTP 500 오류와 함께 실패하는 알려진 이슈가 있습니다. 해결하려면 수정된 패치 레벨 릴리즈로 업그레이드하세요.

PostgreSQL 14 미지원#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

PostgreSQL 14는 GitLab 18부터 지원되지 않습니다. GitLab 18.0 이상으로 업그레이드하기 전에 PostgreSQL을 최소 버전 16.5로 업그레이드하세요. 자세한 내용은 설치 요구 사항을 참조하세요.

자동 데이터베이스 버전 업그레이드는 Linux 패키지를 사용하는 단일 노드 인스턴스에만 적용됩니다. Geo 인스턴스, Linux 패키지를 사용하는 고가용성 PostgreSQL, 또는 외부 PostgreSQL 데이터베이스(Amazon RDS 등)를 사용하는 경우 PostgreSQL을 수동으로 업그레이드해야 합니다. 자세한 단계는 Geo 인스턴스 업그레이드를 참조하세요.

pg_dump 바이너리 호환성#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

GitLab은 pg_dump 바이너리를 번들로 제공합니다. 외부 PostgreSQL 서버를 사용하는 경우, GitLab 데이터베이스 백업 생성 및 복원 모두에 대해 pg_dump 클라이언트 버전이 PostgreSQL 서버와 호환되는지 확인하세요.

Bitnami PostgreSQL 및 Redis 이미지 지원 중단#

  • 영향 대상: Helm chart

  • 영향 받는 버전: 17.11.0 이하

2025년 9월 29일부터 Bitnami는 태그된 PostgreSQL 및 Redis 이미지 제공을 중단합니다. 번들 Redis 또는 Postgres와 함께 GitLab 차트를 사용하여 GitLab 17.11 이하를 배포하는 경우, 예상치 못한 다운타임을 방지하기 위해 레거시 리포지터리를 사용하도록 수동으로 값을 업데이트해야 합니다. 자세한 내용은 이슈 6089를 참조하세요.

17.11에서 무중단 업그레이드 시 파이프라인 실패#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.0.0

기능 플래그 ci_only_one_persistent_ref_creation은 Rails가 업그레이드되었지만 Sidekiq가 버전 17.11에 남아 있을 때 무중단 업그레이드 중에 파이프라인 실패를 야기합니다 (이슈 558808의 세부 정보 참조).

예방: 업그레이드 전에 Rails 콘솔을 열고 기능 플래그를 활성화하세요:

$ sudo gitlab-rails console
Feature.enable(:ci_only_one_persistent_ref_creation)

이미 영향을 받은 경우: 이 명령을 실행하고 실패한 파이프라인을 재시도하세요:

$ sudo gitlab-rails console
Rails.cache.delete_matched("pipeline:*:create_persistent_ref_service")

Gitaly 구성을 git_data_dirs에서 storage로 마이그레이션#

  • 영향 대상: Linux package

  • 영향 받는 버전: 18.0.0

GitLab 18.0 이상에서는 git_data_dirs 설정을 사용하여 Gitaly 스토리지 위치를 구성할 수 없습니다.

git_data_dirs를 아직 사용 중인 경우, GitLab 18.0으로 업그레이드하기 전에 Gitaly 구성을 마이그레이션해야 합니다.

Geo CE에서 EE로 되돌릴 때 마이그레이션 오류#

  • Tier: Premium, Ultimate

  • 영향 대상: Geo

  • 영향 받는 버전: 18.0.0

GitLab Enterprise Edition을 배포했다가 GitLab Community Edition으로 되돌린 경우, 데이터베이스 스키마가 GitLab 애플리케이션이 예상하는 스키마와 달라져 18.0.0으로 업그레이드할 때 마이그레이션 오류가 발생할 수 있습니다. 해당 버전에서 해당 칼럼의 기본값을 변경하는 마이그레이션이 추가되었기 때문에 18.0.0 업그레이드 시 네 가지 특정 오류가 발생할 수 있습니다.

오류는 다음과 같습니다:

  • No such column: geo_nodes.verification_max_capacity

  • No such column: geo_nodes.minimum_reverification_interval

  • No such column: geo_nodes.repos_max_capacity

  • No such column: geo_nodes.container_repositories_max_capacity

이 마이그레이션은 해당 칼럼이 없을 경우 추가하도록 GitLab 18.0.2에서 패치되었습니다. 이슈 #543146을 참조하세요.

영향받은 릴리즈:

영향받은 마이너 릴리즈 영향받은 패치 릴리즈 수정된 버전
18.0 18.0.0 - 18.0.1 18.0.2

Docker 설치 시 PRNG is not seeded 오류#

  • 영향 대상: Docker

  • 영향 받는 버전: 18.0.0

FIPS가 활성화된 호스트에서 Docker 설치로 GitLab을 실행하는 경우, SSH 키 생성 또는 OpenSSH 서버(sshd) 시작이 다음 오류 메시지와 함께 실패할 수 있습니다:

PRNG is not seeded

GitLab 18.0은 기본 이미지를 Ubuntu 22.04에서 24.04로 업데이트했습니다. Ubuntu 24.04가 더 이상 FIPS 호스트가 비-FIPS OpenSSL 제공자를 사용하는 것을 허용하지 않기 때문에 이 오류가 발생합니다.

이 문제를 해결하기 위한 몇 가지 옵션이 있습니다:

  • 호스트 시스템에서 FIPS를 비활성화합니다.

  • GitLab Docker 컨테이너에서 FIPS 기반 커널의 자동 감지를 비활성화합니다. GitLab 18.0.2 이상에서 OPENSSL_FORCE_FIPS_MODE=0 환경 변수를 설정하면 됩니다.

  • GitLab Docker 이미지 대신 호스트에 네이티브 FIPS 패키지를 설치합니다.

마지막 옵션이 FIPS 요구 사항을 충족하기 위해 권장됩니다. 레거시 설치의 경우 처음 두 가지 옵션을 임시 방편으로 사용할 수 있습니다.

CI builds 메타데이터 마이그레이션 세부 정보#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.7.0

GitLab 18.6부터 새로운 파이프라인은 새로운 형식으로만 데이터를 씁니다 (이슈 552065 참조). 이 마이그레이션은 기존 데이터를 이전 형식에서 새 형식으로만 복사합니다. 데이터는 삭제되지 않습니다.

마이그레이션되지 않은 데이터는 향후 릴리즈에서 제거될 예정입니다 (에픽 18271 참조).

마이그레이션 기간은 인스턴스의 총 CI job 수에 직접적으로 비례합니다. 최신 데이터를 우선시하기 위해 job은 최신 파티션에서 가장 오래된 파티션 순으로 처리됩니다.

업그레이드 전에 대규모 프로젝트에서 자동 파이프라인 정리를 활성화하여 오래된 파이프라인을 삭제함으로써 마이그레이션할 job 수를 줄일 수 있습니다.

마이그레이션은 두 가지 유형의 데이터를 복사합니다:

  • Job 처리 데이터: UI 또는 API가 아닌 job 실행 시 러너에게만 필요한 .gitlab-ci.yml의 job 실행 구성(예: script, variables).

  • 사용자에게 표시되는 job 데이터: 모든 job 데이터 중에서 이 마이그레이션은 job 타임아웃 값, job 종료 코드 값, 노출된 아티팩트, 환경 연결에만 영향을 미칩니다.

대규모 CI 데이터셋이 있는 GitLab Self-Managed 및 GitLab Dedicated 인스턴스의 경우, 마이그레이션 범위를 줄여 마이그레이션 속도를 높일 수 있습니다. 범위를 제어하려면 아래에 정의된 설정을 사용하세요.

job 처리 데이터의 범위 제어#

기본적으로 마이그레이션은 기존 모든 job의 처리 데이터를 복사합니다. 아래에 설명된 설정 중 하나를 사용하여 범위를 줄일 수 있습니다.

설정 값은 보유하려는 job 처리 데이터의 양을 제어합니다. 예를 들어, 지난 6개월 동안 생성된 job만 실행될 것으로 예상되는 경우 (재시도, 수동 job 실행, 환경 자동 중지를 통해) 6mo로 설정하세요.

GitLab은 우선순위에 따라 설정을 찾습니다:

  • 파이프라인 아카이브 설정 (권장 모범 사례). 아카이브된 파이프라인은 job을 수동으로 재시도하거나 재실행할 수 없음을 나타냅니다. 이 설정이 활성화된 경우, 아카이브된 job의 처리 데이터는 마이그레이션할 필요가 없습니다.

    파이프라인 아카이브 범위가 나중에 확장되면, 처리 데이터가 없는 job은 실행 불가능한 상태로 남게 됩니다.

  • GITLAB_DB_CI_JOBS_PROCESSING_DATA_CUTOFF 환경 변수, 파이프라인 아카이브가 구성되지 않았거나 이 마이그레이션을 위해 재정의가 필요한 경우. 1y (1년), 6mo (6개월), 90d (90일)과 같은 기간 문자열을 허용합니다.

  • GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF 환경 변수, 위의 항목 중 어느 것도 설정되지 않은 경우. 1y (1년), 6mo (6개월), 90d (90일)과 같은 기간 문자열을 허용합니다. 사용자에게 표시되는 job 데이터의 범위 제어를 참조하세요.

  • 구성을 찾을 수 없는 경우 모든 데이터가 복사됩니다.

사용자에게 표시되는 job 데이터의 범위 제어#

환경 변수 GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF는 표시 데이터가 마이그레이션될 job을 제어합니다.

예를 들어, GITLAB_DB_CI_JOBS_MIGRATION_CUTOFF=1y는 가장 최근 1년의 job에 대한 영향받은 표시 데이터(타임아웃 값, 환경, 종료 코드, 노출된 아티팩트 메타데이터)를 복사합니다.

기본적으로 컷오프 날짜가 없으며 모든 job의 데이터가 마이그레이션됩니다.

마이그레이션 영향 추정#

참고로, GitLab.com의 경우 약 2개월 동안 4억 개의 행을 마이그레이션할 것으로 예상합니다.

인스턴스의 마이그레이션 영향을 추정하기 위해 PostgreSQL 콘솔에서 다음 쿼리를 실행할 수 있습니다:

테이블 크기

SELECT n.nspname AS schema_name, c.relname AS partition_name,
       pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size
FROM pg_inherits i
JOIN pg_class c ON c.oid = i.inhrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
JOIN pg_class p ON p.oid = i.inhparent
WHERE p.relname = 'p_ci_builds_metadata'
ORDER BY pg_total_relation_size(c.oid) DESC;

새 테이블에는 이 공간의 약 20%가 필요합니다.

job 수 추정

이것은 PostgreSQL 통계 테이블의 추정값입니다.

SELECT SUM(c.reltuples)::bigint AS estimated_jobs_count
FROM pg_class c
JOIN pg_inherits i ON c.oid = i.inhrelid
WHERE i.inhparent = 'p_ci_builds'::regclass;

기간별 job 수

특정 기간에 생성된 job 수를 찾으려면 테이블을 쿼리해야 합니다:

SELECT COUNT(*) FROM p_ci_builds WHERE created_at >= now() - '1 year'::interval;

쿼리가 타임아웃되는 경우, Rails 콘솔을 사용하여 데이터를 배치로 처리하세요:

counts = []
CommitStatus.each_batch(of: 25000) do |batch|
  counts << batch.where(created_at: 1.year.ago...).count
end
counts.sum

머지 리퀘스트 병합 데이터에 대한 일괄 백그라운드 마이그레이션#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.8.0

일괄 백그라운드 마이그레이션merge_requests 테이블에서 새로운 전용 merge_requests_merge_data 테이블로 머지 리퀘스트 병합 관련 데이터를 복사합니다.

이 마이그레이션은 데이터베이스 스키마 최적화 이니셔티브의 일부로, 병합별 속성을 별도의 테이블로 정규화하여 쿼리 성능과 유지 보수성을 향상시킵니다.

마이그레이션되는 데이터#

마이그레이션은 merge_requests에서 merge_requests_merge_data로 다음 칼럼을 복사합니다:

  • merge_commit_sha

  • merged_commit_sha

  • merge_ref_sha

  • squash_commit_sha

  • in_progress_merge_commit_sha

  • merge_status

  • auto_merge_enabled

  • squash

  • merge_user_id

  • merge_params

  • merge_error

  • merge_jid

마이그레이션은 merge_requests 테이블을 처리하여 merge_requests_merge_data에 해당 항목이 없는 머지 리퀘스트의 데이터만 복사합니다.

GitLab 18.7부터 새로운 머지 리퀘스트는 애플리케이션 레벨의 이중 쓰기 메커니즘을 통해 두 테이블 모두에 데이터를 씁니다 (이슈 참조). 이 마이그레이션은 이중 쓰기가 구현된 후 생성되거나 수정되지 않은 기존 데이터만 복사합니다.

이 마이그레이션 중에 merge_requests 테이블에서 데이터는 삭제되지 않습니다.

마이그레이션은 GitLab 18.9에서 완료될 예정입니다. 자세한 내용은 이슈를 참조하세요.

마이그레이션 기간 추정#

마이그레이션 기간은 인스턴스의 머지 리퀘스트 수에 직접적으로 비례합니다.

영향을 추정하려면:

PostgreSQL 쿼리:

-- 전체 머지 리퀘스트 수
SELECT COUNT(*) FROM merge_requests;

-- 테이블 크기 추정
SELECT pg_size_pretty(pg_total_relation_size('merge_requests')) AS table_size;

Rails 콘솔:

# 전체 머지 리퀘스트 수
MergeRequest.count

# 마이그레이션할 남은 머지 리퀘스트 수
MergeRequest.left_joins(:merge_data)
  .where(merge_requests_merge_data: { merge_request_id: nil })
  .count

마이그레이션은 배치로 머지 리퀘스트를 처리하며 대부분의 인스턴스에서 몇 시간에서 며칠 내에 완료되어야 합니다.

GitLab 18.11의 PostgreSQL 버전 17.7 업그레이드#

  • 영향 대상: Linux package, Docker, Geo

  • 영향 받는 버전: 18.11.0

GitLab 18.11로 업그레이드하면 단일 노드 Linux 패키지 설치에 대해 PostgreSQL 17.7로 자동 업그레이드가 트리거됩니다.

자동 데이터베이스 버전 업그레이드는 Linux 패키지를 사용하는 단일 노드 인스턴스에만 적용됩니다. Geo 배포의 경우, 메이저 버전 업그레이드 시 Geo 보조 사이트에 대한 PostgreSQL 복제를 재초기화해야 하므로 PostgreSQL 업그레이드는 의도적으로 예약하고 계획해야 합니다. 이로 인해 예상보다 큰 다운타임이 발생할 수 있습니다.

Sidekiq 동시성 제한으로 인해 Helm 차트 및 Operator 배포에 job 백로그 발생#

  • 영향 대상: Helm chart, Operator

  • 영향 받는 버전:

Release 영향 받는 패치 릴리즈 수정된 패치 레벨
18.10 18.10.0 - 18.10.3 18.10.4
18.9 18.9.0 - 18.9.5 18.9.6

GitLab 18.9에서 GitLab Helm 차트가 기본적으로 GITLAB_SIDEKIQ_MAX_REPLICAS를 설정하기 시작했습니다 (charts/GitLab 머지 리퀘스트 4348). KEDA 기반 자동 확장을 사용하지 않는 GitLab Self-Managed 및 GitLab Dedicated 환경에서는 Sidekiq 동시성 제한이 예기치 않게 활성화되어 job을 Redis 기반 스로틀 큐로 지연시킵니다.

이로 인해 다음이 발생할 수 있습니다:

  • Sidekiq job 백로그.

  • Redis 메모리 증가.

  • job 실행 지연.

  • WebHookWorker, AuditEvents::AuditEventStreamingWorker, Geo 복제 워커(Geo::EventWorker, Geo::SyncWorker)와 같은 워커에 대한 영향.

영향을 받는 경우, 수정된 버전으로 업그레이드할 때까지 다음 임시 완화 방법 중 하나를 사용할 수 있습니다:

  • 특정 워커에 대한 동시성 제한 비활성화: 기능 플래그를 활성화하여 비활성화합니다. Sidekiq 파드에서 exec를 실행하여 Rails 콘솔을 엽니다:
kubectl exec -it <sidekiq-pod-name> -- gitlab-rails console

그런 다음 영향받은 워커에 대한 플래그를 활성화합니다:

Feature.enable(:"disable_sidekiq_concurrency_limit_middleware_")

를 영향받은 워커 이름(예: WebHookWorker)으로 교체하세요.

  • 모든 기본 동시성 제한 비활성화: Sidekiq 파드 환경 구성에서 GITLAB_SIDEKIQ_MAX_REPLICAS=0으로 설정합니다. 이렇게 하면 기본 동시성 제한 계산이 완전히 비활성화됩니다.

    Geo를 사용하는 경우, Geo 보조 사이트에서 ConcurrencyLimit::ResumeWorker가 실행되지 않으므로 이미 스로틀된 job이 자동으로 소진되지 않을 수 있습니다. 스로틀된 큐를 지우기 위해 수동으로 개입해야 할 수 있습니다.

기본 동시성 제한 계산을 기능 플래그 뒤에 두는 수정이 머지 리퀘스트 230713에 병합되었으며 18.10.4(머지 리퀘스트 231085)와 18.9.6(머지 리퀘스트 231297)에 백포트되었습니다.

모든 프로젝트에서 기본적으로 활성화된 시크릿 탐지 오탐 탐지#

  • 영향 대상: 모든 설치 방법

  • 영향 받는 버전: 18.10.x

시크릿 오탐 탐지를 위한 foundation flow를 활성화하려면 일반적으로 두 단계가 필요합니다:

  • 그룹에 대해 foundational flow를 허용합니다.

  • 개별 프로젝트에 대해 foundational flow를 활성화합니다.

그러나 GitLab 18.10의 모든 버전으로 업그레이드하면 모든 프로젝트에 대해 시크릿 오탐 탐지를 위한 foundational flow가 활성화됩니다. 그룹에 대해 foundational flow가 허용되면 해당 그룹의 모든 프로젝트에 대해 이미 활성화됩니다.

그룹에 대해 시크릿 오탐 탐지를 위한 foundational flow를 허용하기 전에 그룹 내 프로젝트의 설정을 확인해야 합니다.