InfoGrab DocsInfoGrab Docs

지원 중단

요약

다음 GitLab 기능은 폐기되었으며 더 이상 사용을 권장하지 않습니다. 이 폐기 정보를 대상으로 고급 검색과 필터링을 하려면 Customer Success 팀이 만든 도구를 사용해 봅니다. REST API 폐기 목록은 별도로 문서화되어 있습니다.

다음 GitLab 기능은 폐기되었으며 더 이상 사용을 권장하지 않습니다.

이 폐기 정보를 대상으로 고급 검색과 필터링을 하려면 Customer Success 팀이 만든 도구를 사용해 봅니다.

REST API 폐기 목록은 별도로 문서화되어 있습니다.

[rss] 예정된 브레이킹 체인지 알림을 받으려면, RSS 피드 리더에 다음 URL을 추가합니다: https://docs.gitlab.com/releases/breaking-changes.xml

GitLab 21.0#

Code Suggestions v2 및 v3 AI Gateway 엔드포인트#

  • GitLab 19.5에서 발표
  • GitLab 21.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

AI Gateway 엔드포인트 /v2/completions, /v2/code/completions, /v2/code/generations, /v3/code/completions는 GitLab 19.5에서 폐기되었으며 GitLab 21.0에서 제거될 예정입니다. Code Suggestions 요청은 대신 /v4/code/suggestions를 사용해야 합니다.

GitLab.com은 GitLab 19.1부터 /v4/code/suggestions를 사용하고 있습니다. GitLab.com에서는 별도의 조치가 필요하지 않습니다.

GitLab Self-Managed, GitLab Dedicated, GitLab 편집기 확장은 이후 릴리스에서 v4 엔드포인트로 전환됩니다. 이 변경이 포함된 버전을 추적하려면 이슈 605661을 참고합니다. 자체 호스팅 AI Gateway를 운영한다면 GitLab 21.0용 AI Gateway 이미지에서도 이 엔드포인트가 제거됩니다.

중단을 방지하려면 GitLab 21.0이 릴리스되기 전에 다음을 수행합니다.

  • 인스턴스를 최신 GitLab 버전으로 업그레이드합니다.
  • 편집기 확장을 최신 버전으로 업데이트합니다.
  • AI Gateway를 직접 호출하는 사용자 지정 클라이언트를 /v4/code/suggestions를 사용하도록 업데이트합니다.

GitLab 20.0#

컴플라이언스 파이프라인#

  • GitLab 17.3에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

현재 프로젝트 파이프라인에서 컴플라이언스 또는 보안 관련 job 이 실행되도록 보장하는 방법은 두 가지입니다.

프로젝트의 모든 파이프라인에서 필수 job 실행을 보장하는 단일 지점을 제공하기 위해 GitLab은 17.3에서 컴플라이언스 파이프라인을 폐기했으며 GitLab 20.0에서 이 기능을 제거할 예정입니다.

고객은 컴플라이언스 파이프라인에서 새로운 파이프라인 실행 정책 유형으로 가능한 한 빨리 마이그레이션해야 합니다.

자세한 내용은 다음을 참고합니다.

패키지용 Dependency Proxy 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

패키지용 Dependency Proxy는 폐기되었으며 향후 릴리스에서 제거될 예정입니다. 이 기능은 Maven 가상 레지스트리로 대체되었으며, 향상된 성능과 더 나은 업스트림 프록시·캐싱 기능, GitLab 패키지 관리 워크플로와의 더 긴밀한 통합을 제공합니다.

필요한 조치: 패키지 매니저 설정을 패키지용 Dependency Proxy 엔드포인트에서 Maven 가상 레지스트리로 마이그레이션합니다. 설정 방법은 Maven 가상 레지스트리 문서를 참고합니다.

GraphQL의 previousStageJobs 폐기#

  • GitLab 19.2에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GraphQL CiJob 타입의 previousStageJobs 필드는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. GitLab UI가 더 이상 의존 관계 계산에 previousStageJobs를 필요로 하지 않으므로 서버 측 대체 수단은 필요하지 않습니다.

Design Management 폐기#

  • GitLab 18.6에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 20.0부터 GitLab은 Design Management 폐기를 시작합니다. Design Management는 사용자가 협업을 위해 와이어프레임, 목업 등의 디자인 자산을 GitLab 이슈에 업로드할 수 있게 해주는 기능입니다. 기존 사용량과 예상 고객 영향을 신중히 검토한 끝에 이러한 결정을 내렸습니다. Design Management에 필요한 지속적인 유지 관리 비용이 현재 사용량을 상회했으며, 현대적인 디자이너 워크플로에 더 부합하는 솔루션에 역량을 집중하고자 합니다. GitLab 20.0 이후로는 사용자가 새로운 디자인을 업로드할 수 없습니다. 기존 디자인은 GitLab 21.0까지 읽기 전용 모드로 계속 제공되어, 사용자가 필요에 따라 디자인을 저장할 시간을 확보할 수 있습니다. GitLab은 디자이너가 이미 사용 중인 도구와 더 잘 통합되는 대안을 검토하고 있습니다.

감사 이벤트 API의 키셋 페이지네이션 강제#

  • GitLab 17.8에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

인스턴스, 그룹, 프로젝트용 감사 이벤트 API는 현재 선택적 키셋 페이지네이션을 지원합니다. GitLab 20.0에서는 이러한 API에 키셋 페이지네이션을 강제할 예정입니다.

GitLab Helm 차트 값 gitlab.kas.ingress.grpc.enabled#

  • GitLab 19.5에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Helm 차트에서 KAS gRPC Ingress는 이제 global.kas.ingress.grpc.enabled로 제어하며, 이 값은 Kubernetes용 에이전트에 알리는 주소가 네이티브 gRPC(grpcs://)를 사용할지 WebSocket(wss://)을 사용할지도 결정합니다.

kas 차트의 로컬 값 gitlab.kas.ingress.grpc.enabled는 폐기되었으며 차트 11.0(GitLab 20.0)에서 제거될 예정입니다. 이 값은 여전히 gRPC Ingress를 렌더링할지 제어하지만, 다른 차트가 알리는 주소를 도출할 때 이 값을 볼 수 없으므로 Ingress와 주소가 서로 다를 수 있습니다.

gitlab.kas.ingress.grpc.enabled를 설정했다면 차트 11.0으로 업그레이드하기 전에 이 값을 global.kas.ingress.grpc.enabled로 옮깁니다. 둘 다 설정하지 않으면 기본값이 유지됩니다. NGINX Ingress 공급자에는 gRPC Ingress가 렌더링되며, 차트가 gRPC를 KAS로 라우팅할 때 에이전트는 grpcs://를 가리키게 됩니다.

Go 모듈 프록시(실험적 기능) 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 패키지 레지스트리의 실험적 Go 모듈 프록시는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 이 기능은 실험적 상태를 벗어난 적이 없습니다.

이 기능은 Go 가상 레지스트리로 대체될 예정이며, GitLab을 통한 Go 모듈 해석에 더 완전하고 신뢰할 수 있는 경험을 제공합니다.

필요한 조치: GitLab을 Go 모듈 프록시로 사용 중이라면 Go 가상 레지스트리가 제공되는 대로 마이그레이션을 계획합니다. 그 전까지는 GOPROXY 환경 변수를 업데이트하여 대체 프록시(proxy.golang.org 또는 자체 호스팅 솔루션 등)를 구성할 수 있습니다.

GraphQL useWorkItemsView 사용자 환경설정#

  • GitLab 19.5에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

UserPreferences 타입의 useWorkItemsView 필드와 userPreferencesUpdate 뮤테이션의 useWorkItemsView 인수는 GitLab 19.5에서 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 이슈에서 작업 항목으로의 마이그레이션이 완료되어 항상 작업 항목 보기가 사용되므로, 이 환경설정은 필요하지 않습니다. GitLab 19.5부터 이 인수는 허용되지만 무시되고 필드는 항상 true를 반환합니다. 뮤테이션에서 이 인수를, 쿼리에서 이 필드를 제거합니다. 대체 항목은 없습니다.

레거시 retry:when 실패 사유 stuck_or_timeout_failure와 job_execution_timeout 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서 범용 job 실패 사유였던 stuck_or_timeout_failure와 job_execution_timeout은 더 구체적인 사유 집합(예: stuck_pending_no_matching_runners, no_updates_running, server_timeout_running)으로 분리되었습니다. 새 빌드는 더 이상 기존 사유로 기록되지 않습니다.

이러한 기존 사유는 .gitlab-ci.yml의 retry:when에서는 여전히 유효한 값입니다. 기존 설정이 알아채지 못한 채 깨지는 것을 방지하기 위해, retry:when 아래에 stuck_or_timeout_failure 또는 job_execution_timeout을 나열하면 GitLab은 이를 대체된 구체적 사유 전체 집합과 일치하는 별칭으로 처리합니다. 또한 이러한 값이 사용되면 GitLab은 CI 린트 출력과 파이프라인 에디터에 차단하지 않는 경고를 표시합니다.

두 값 모두 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

필요한 조치: retry:when을 다음과 같이 구체적인 실패 사유를 사용하도록 업데이트합니다.

  • stuck_or_timeout_failure는 stuck_pending_with_matching_runners, stuck_pending_no_matching_runners, no_updates_running, no_updates_canceling 중 해당하는 부분집합으로 대체합니다.
  • job_execution_timeout은 server_timeout_running 및/또는 server_timeout_canceling으로 대체합니다.

레거시 그룹 수준 감사 이벤트 스트리밍 대상 GraphQL API#

  • GitLab 18.10에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

다음 감사 이벤트 스트리밍 대상용 그룹 수준 GraphQL API는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

폐기된 뮤테이션:

  • externalAuditEventDestinationCreate - 대신 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • externalAuditEventDestinationDestroy - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • externalAuditEventDestinationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • googleCloudLoggingConfigurationCreate - 대신 gcpLogging 카테고리와 함께 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • googleCloudLoggingConfigurationDestroy - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • googleCloudLoggingConfigurationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsAmazonS3ConfigurationCreate - 대신 amazonS3 카테고리와 함께 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • auditEventsAmazonS3ConfigurationDelete - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • auditEventsAmazonS3ConfigurationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsStreamingHeadersCreate - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingHeadersDestroy - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingHeadersUpdate - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingDestinationEventsAdd - 대신 auditEventsGroupDestinationEventsAdd를 사용합니다.
  • auditEventsStreamingDestinationEventsRemove - 대신 auditEventsGroupDestinationEventsRemove를 사용합니다.
  • auditEventsStreamingHttpNamespaceFiltersAdd - 대신 auditEventsGroupDestinationNamespaceFilterCreate를 사용합니다.
  • auditEventsStreamingHttpNamespaceFiltersDelete - 대신 auditEventsGroupDestinationNamespaceFilterDelete를 사용합니다.

폐기된 그룹 필드:

  • Group.externalAuditEventDestinations - 대신 Group.externalAuditEventStreamingDestinations를 사용합니다.
  • Group.googleCloudLoggingConfigurations - 대신 gcpLogging 카테고리와 함께 Group.externalAuditEventStreamingDestinations를 사용합니다.
  • Group.amazonS3Configurations - 대신 amazonS3 카테고리와 함께 Group.externalAuditEventStreamingDestinations를 사용합니다.

새로운 통합 스트리밍 대상 API는 category 매개변수를 사용하는 단일 엔드포인트 집합을 통해 모든 대상 카테고리(HTTP, Google Cloud Logging, Amazon S3)를 지원합니다.

레거시 인스턴스 수준 감사 이벤트 스트리밍 대상 GraphQL API#

  • GitLab 18.10에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

다음 감사 이벤트 스트리밍 대상용 인스턴스 수준 GraphQL API는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

폐기된 뮤테이션:

  • instanceExternalAuditEventDestinationCreate - 대신 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • instanceExternalAuditEventDestinationDestroy - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • instanceExternalAuditEventDestinationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationCreate - 대신 gcpLogging 카테고리와 함께 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationDestroy - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationCreate - 대신 amazonS3 카테고리와 함께 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationDelete - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsStreamingInstanceHeadersCreate - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingInstanceHeadersDestroy - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingInstanceHeadersUpdate - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingDestinationInstanceEventsAdd - 대신 auditEventsInstanceDestinationEventsAdd를 사용합니다.
  • auditEventsStreamingDestinationInstanceEventsRemove - 대신 auditEventsInstanceDestinationEventsRemove를 사용합니다.

폐기된 쿼리 필드:

  • instanceExternalAuditEventDestinations - 대신 auditEventsInstanceStreamingDestinations를 사용합니다.
  • instanceGoogleCloudLoggingConfigurations - 대신 gcpLogging 카테고리와 함께 auditEventsInstanceStreamingDestinations를 사용합니다.
  • auditEventsInstanceAmazonS3Configurations - 대신 amazonS3 카테고리와 함께 auditEventsInstanceStreamingDestinations를 사용합니다.

새로운 통합 스트리밍 대상 API는 category 매개변수를 사용하는 단일 엔드포인트 집합을 통해 모든 대상 카테고리(HTTP, Google Cloud Logging, Amazon S3)를 지원합니다.

NGINX Ingress, HAProxy, Traefik 차트 지원#

  • GitLab 18.9에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 기본 Envoy Gateway(Kubernetes Gateway API 사용)의 대안으로 여러 Ingress 컨트롤러를 번들로 제공합니다.

이렇게 번들로 제공되는 Ingress 컨트롤러인 NGINX Ingress, HAProxy, Traefik는 GitLab Helm 차트와 GitLab Operator에서 제거될 예정입니다. Ingress 사용 자체는 GitLab Helm 차트와 GitLab Operator에서 계속 지원되지만, 이를 위해서는 외부 Ingress 컨트롤러를 배포해야 합니다.

번들로 제공되는 Envoy Gateway와 Gateway API로 마이그레이션할 것을 권장합니다. 또는 다음과 같이 외부 Ingress 컨트롤러와 클래스를 배포하고 구성할 수 있습니다.

gitlab-ctl patroni failover와 switchover의 --master 옵션#

  • GitLab 19.4에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

gitlab-ctl patroni failover와 gitlab-ctl patroni switchover 명령의 --master 옵션은 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 두 명령 모두 GitLab 19.4부터 --leader를 받아들이며, 이는 patronictl 이 사용하는 옵션 이름과 일치합니다.

마이그레이션하려면 이러한 명령을 호출하는 스크립트와 런북에서 --master를 --leader로 교체합니다. 이 옵션은 동일한 값, 즉 현재 리더 노드의 이름을 받습니다. 제거되기 전까지 --master는 기존 동작을 유지하며 폐기 경고를 출력합니다.

kpt 기반 agentk가 폐기됩니다#

  • GitLab 17.9에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Kubernetes 용 에이전트의 kpt 기반 설치에 대한 지원을 제거할 예정입니다. kpt 패키지는 손상되었고 오래되었습니다. 2022년 이후 유지 관리되지 않았고, 그 이후 Helm 차트에 추가된 기능이 없으며, 알려진 사용자도 없습니다. 대신 다음 지원되는 설치 방법 중 하나로 에이전트를 설치해야 합니다.

  • Helm(권장)
  • GitLab CLI
  • Flux

kpt에서 Helm으로 마이그레이션하려면 에이전트 설치 문서를 따라 kpt로 배포된 agentk 인스턴스를 덮어씁니다.

GitLab 19.5#

Bitbucket Cloud 이슈 및 위키 가져오기#

  • GitLab 19.1에서 발표
  • GitLab 19.5에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Atlassian은 2026 년 8 월 20 일에 Bitbucket Cloud 이슈와 위키를 종료할 예정입니다. 해당 날짜 이후에는 기반 API 엔드포인트가 제거되어 GitLab 이 더 이상 Bitbucket Cloud에서 이슈나 위키를 가져올 수 없습니다.

GitLab 19.3에서 Bitbucket Cloud 임포터는 API 제거를 우아하게 처리하여 이슈와 위키를 건너뛸 예정입니다. GitLab 19.5에서는 이슈와 위키에 대한 가져오기 코드가 제거될 예정입니다.

Bitbucket 이슈 데이터가 필요한 사용자는 2026 년 8 월 20 일 기한 전에 가져오기를 완료하거나, Bitbucket에서 내보낸 후 CSV 가져오기를 사용해야 합니다. 위키의 경우 기한 전에 Bitbucket 위키 리포지터리를 로컬로 클론합니다.

GraphQL secretPermissionUpdate 및 secretPermissionDelete 뮤테이션#

  • GitLab 19.5에서 발표
  • GitLab 19.5에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Secrets Manager를 베타에서 정식 출시(Generally Available)로 전환하는 과정의 하나로, GitLab은 GitLab 19.5에서 secretPermissionUpdate 및 secretPermissionDelete GraphQL 뮤테이션을 제거합니다. 대신 projectSecretsPermissionUpdate와 projectSecretsPermissionDelete를 사용합니다. 대체 뮤테이션은 기존 뮤테이션과 같은 서비스를 호출합니다.

새 뮤테이션은 소문자 문자열 값을 받던 기존 permissions 인수 대신 actions 인수를 받습니다. 새 actions 인수는 SecretsManagementAction enum을 받습니다. 이 enum의 각 값은 대문자입니다. 기존 값을 새 값으로 다음과 같이 대응시킵니다.

  • "read"는 READ에 대응합니다.
  • "create" 단독은 CREATE에 대응합니다.
  • "create"와 함께이든 아니든 "update"는 WRITE에 대응합니다.
  • "delete"는 DELETE에 대응합니다.

응답 형태도 바뀝니다. 다음 변경 사항에 맞게 코드를 업데이트합니다.

  • 페이로드 필드 이름이 secretPermission에서 secretsPermission으로 바뀝니다.
  • 페이로드 타입 이름이 SecretPermission에서 ProjectSecretsPermission으로 바뀝니다.
  • 새 타입에는 permissions 필드가 없습니다. 대신 actions 필드를 읽습니다.

GitLab 19.3#

REST API가 정수 경로 매개변수에 숫자가 아닌 ID를 사용하면 400을 반환#

  • GitLab 19.3에서 발표
  • GitLab 19.3에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

이전에는 여러 REST API 엔드포인트가 정수 타입 경로 매개변수에 대해 사전 검증 없이 숫자가 아니거나 다중 값인 입력을 받아들였습니다. 이러한 요청은 명확한 오류 대신 일관성 없는 응답 (401 Unauthorized, 404 Not Found, 드물게는 잠재적 버그로 인한 200 OK)을 반환했습니다. 이제는 매개변수 타입을 검증하여 400 Bad Request를 반환합니다.

마이그레이션하려면 각 요청에 단일 숫자 ID를 전송합니다. 정상적인 클라이언트는 이미 이렇게 하고 있으므로, 형식이 올바른 요청에는 별도 조치가 필요하지 않습니다.

GitLab 19.2#

Self Managed Ultimate 티어에 Advanced Search 필요#

  • GitLab 18.11에서 발표
  • GitLab 19.2에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

이제 Self Managed Ultimate 티어 고객은 Ultimate 티어 기능 전체에 완전히 접근하려면 Advanced Search를 반드시 사용해야 합니다. Advanced Search 없이도 GitLab 이 손상되지는 않지만, 활성화하지 않으면 Ultimate 티어 기능을 모두 사용할 수 있는 것은 아닙니다.

이전에는 특정 기능의 쿼리 성능을 개선하는 방법으로 Advanced Search 활성화를 권장했습니다. 이제는 Advanced Search를 필요로 하는 전체 기능 구축이 GitLab에 요구되는 제공 속도와 품질을 충족하는 데 근본적이라는 결론을 내렸습니다.

Advanced Search를 사용하지 않아도 기존 기능이 손상되거나 저하되지는 않습니다. 이는 향후를 대비한 변경일 뿐입니다. Advanced Search 없이는 새 기능이 지원되지 않을 수 있습니다. Ultimate 티어 GA 기능은 이제 전체 또는 일부 기능에 Advanced Search를 반드시 요구할 수 있습니다.

Advanced Search 활성화 방법은 문서에서 확인할 수 있습니다.

GitLab 19.1#

Advanced Search에서 Elasticsearch 7.x 더 이상 지원하지 않음#

  • GitLab 18.10에서 발표
  • GitLab 19.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Elasticsearch 7.x의 유지보수 기간은 2026-01-15에 종료되었습니다. GitLab Self-Managed의 경우 관리자는 advanced search를 사용하려면 Elasticsearch 인스턴스를 업그레이드해야 합니다.

Amazon Linux 2 용 Linux 패키지 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.1에서는 Linux 패키지용 Amazon Linux 2(AL2) 패키지 빌드를 제거합니다.

Amazon Linux 2는 2026 년 6 월에 수명이 종료되며, 이후에는 보안 업데이트를 받지 못합니다. Linux 패키지 지원 플랫폼 정책에 따라, 벤더가 운영체제 지원을 중단하면 최소 6 개월의 발표 기간을 두고 패키지 빌드를 중단합니다.

현재 Amazon Linux 2에서 GitLab을 운영 중이라면 GitLab 19.1로 업그레이드하기 전에 Amazon Linux 2023(AL2023) 또는 다른 지원되는 운영체제로 마이그레이션해야 합니다. Amazon은 AL2에서 AL2023으로 이전하는 데 도움이 되는 마이그레이션 문서를 제공합니다.

GitLab 19.0#

컨테이너 레지스트리용 Azure 스토리지 드라이버#

  • GitLab 17.10에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

컨테이너 레지스트리용 레거시 Azure 스토리지 드라이버는 GitLab 17.10에서 폐기되었으며 GitLab 19.0에서 제거될 예정입니다. 컨테이너 레지스트리에 Azure 오브젝트 스토리지를 사용 중이며 새 드라이버를 미리 사용하려면 설정을 업데이트하여 새로운 azure_v2 드라이버를 사용해야 합니다. GitLab 19.0에서는 폐기된 Azure 드라이버가 azure_v2 드라이버의 별칭이 되어 별도의 수동 조치가 필요하지 않습니다.

azure_v2 스토리지 드라이버는 레거시 드라이버에 비해 향상된 안정성과 성능을 제공하며, 유지보수하기 더 쉬운 코드베이스를 사용합니다. 이러한 개선 사항은 레지스트리 사용량이 늘어나면서 발생할 수 있는 성능 문제를 예방하는 데 도움이 됩니다.

azure_v2 드라이버로 마이그레이션하려면:

  1. 레지스트리 설정 파일을 업데이트하여 레거시 azure 드라이버 대신 azure_v2 드라이버를 사용합니다.
  2. 새 드라이버에 맞게 필요한 설정을 조정합니다.
  3. 프로덕션에 배포하기 전에 비프로덕션 환경에서 새 설정을 테스트합니다.

스토리지 드라이버 설정 업데이트에 관한 자세한 내용은 오브젝트 스토리지 사용을 참고합니다.

Container Registry의 AWS S3 Signature Version 2 지원#

  • GitLab 17.8에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

컨테이너 레지스트리에서 Amazon S3 Signature Version 2를 사용한 요청 인증 지원은 GitLab 17.8에서 폐기되었으며 GitLab 19.0에서 제거될 예정입니다.

AWS SDK v2 기반의 새로운 S3v2 스토리지 드라이버(GitLab 17.10부터 베타로 제공되며 19.0에서 기본값이 됨)는 Signature Version 4만 지원합니다. S3v2 드라이버가 기본값이 되면 Signature Version 2 관련 설정(v4auth: false 등)은 사용자가 알아채지 못한 채 무시됩니다.

S3v2가 기본 드라이버가 되는 GitLab 버전으로 업그레이드하기 전에 Signature Version 4로 마이그레이션할 수 있습니다. 이 변경에는 S3 버킷 설정 업데이트와 GitLab 컨테이너 레지스트리 설정이 Signature Version 4와 호환되는지 확인하는 작업이 필요합니다.

마이그레이션하려면:

  1. GitLab 컨테이너 레지스트리 설정의 S3 스토리지 백엔드 구성을 확인합니다.
  2. v4auth가 false로 설정되어 있다면 해당 옵션을 제거합니다.
  3. 기존 자격 증명이 v4 인증에서 동작하는지 확인합니다.

이러한 변경 후 문제가 발생하면 AWS 자격 증명을 재생성해 봅니다.

인증되지 않은 Projects API 요청에 대한 페이지 제한 강제#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

플랫폼 안정성을 유지하고 모든 고객에게 최적의 성능을 보장하기 위해, 인증되지 않은 Projects API 요청에 최대 오프셋 제한을 강제합니다. 이 오프셋 제한은 GitLab.com 에만 적용됩니다. GitLab Self-Managed와 GitLab Dedicated에서는 기능 플래그 뒤에서 오프셋 제한이 기본적으로 비활성화됩니다.

변경 사항

Projects List REST API에 대한 인증되지 않은 모든 요청에 최대 50,000 개의 오프셋 제한이 강제됩니다. 예를 들어 페이지당 20 개 결과를 조회할 경우 page 매개변수는 2,500 페이지로 제한됩니다.

더 많은 데이터에 접근해야 하는 워크플로는 키셋 기반 페이지네이션 매개변수를 사용해야 합니다.

중요한 이유

이 제한은 리소스 사용률을 효과적으로 관리하여 GitLab.com 전반에서 일관된 서비스 품질과 성능을 보장합니다.

SUSE 배포판용 Linux 패키지 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서 SUSE 배포판에 대한 지원을 종료합니다. 이는 다음에 영향을 미칩니다.

  • openSUSE Leap 15.6
  • SUSE Linux Enterprise Server 12.5
  • SUSE Linux Enterprise Server 15.6

openSUSE Leap 15.6은 수명 종료가 임박했습니다. SUSE Linux Enterprise Server는 SUSE의 장기 서비스로 계속 지원되지만, GitLab 고객 사이의 채택률이 너무 낮아 지속적인 지원을 상업적으로 유지하기 어렵습니다.

Linux 패키지를 사용하는 SUSE 배포판 고객은 GitLab을 18.11.x 버전 이후로 업그레이드할 수 없습니다.

이러한 배포판을 사용하는 고객은 기존 배포판에서 GitLab의 Docker 배포로 마이그레이션할 것을 권장합니다. 이렇게 하면 GitLab 업그레이드를 계속 받기 위해 다른 Linux 배포판으로 이전할 필요가 없습니다.

업데이트: SLES 12.5의 RPM 패키지 크기 제약으로 인해, Mattermost와 Spamcheck는 모든 배포판에서 예정된 제거보다 앞서 GitLab 18.11에서 SLES 12.5 패키지로부터 GitLab 19.0에서 제거되었습니다.

Ubuntu 20.04 용 Linux 패키지 지원#

  • GitLab 17.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Ubuntu 20.04의 Ubuntu 표준 지원은 2025 년 5 월에 종료되었습니다.

Linux 패키지 지원 플랫폼 정책에 따라, 벤더가 운영체제 지원을 중단하면 패키지 빌드를 중단합니다.

GitLab 19.0 부터는 Linux 패키지 설치용 Ubuntu 20.04 배포판 패키지를 더 이상 제공하지 않습니다. GitLab 18.11 이 Ubuntu 20.04 용 Linux 패키지를 제공하는 마지막 GitLab 버전입니다.

현재 Ubuntu 20.04에서 GitLab을 운영 중이라면 GitLab 19.0으로 업그레이드하기 전에 Ubuntu 22.04 또는 다른 지원되는 운영체제로 업그레이드해야 합니다. Canonical은 마이그레이션에 도움이 되는 업그레이드 가이드를 제공합니다.

Linux 패키지에 번들된 Mattermost#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 Linux 패키지에서 번들 Mattermost를 제거할 계획입니다.

Mattermost는 2015 년 오픈 소스 팀 메시징 솔루션으로 GitLab에 처음 번들되었으며, 통합을 지원하기 위해 GitLab SSO가 포함되었습니다. 이후 Mattermost는 자체 패키징과 배포 옵션을 크게 발전시켰으며, GitLab 고객 사이의 번들 Mattermost 채택률은 상대적으로 낮게 유지되었습니다.

Mattermost v11에서 Mattermost는 무료 제공에서 GitLab SSO를 폐기했습니다. 이러한 변경, Mattermost 독립형 배포 옵션의 성숙도, 그리고 고객 기반에서의 낮은 채택률을 고려하여 Linux 패키지에서 Mattermost를 제거합니다.

현재 GitLab에 번들된 Mattermost를 사용 중이라면 마이그레이션 방법과 사용 가능한 Mattermost 에디션은 Mattermost 문서의 GitLab Omnibus에서 Mattermost Standalone으로 마이그레이션을 참고합니다.

Resource owner password credentials 그랜트 폐기#

  • GitLab 18.0에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

OAuth 플로로서 resource owner password credentials(ROPC) 그랜트를 사용하는 것은 폐기되었으며 GitLab 19.0에서 지원이 완전히 제거될 예정입니다. 관리자가 자신의 인스턴스에서 이 그랜트 타입을 클라이언트 자격 증명과 함께만 사용하도록 활성화하거나 비활성화할 수 있는 설정을 추가했습니다. 이를 통해 클라이언트 자격 증명 없이 ROPC 사용을 중단하려는 사용자는 19.0 이전에 이를 적용할 수 있습니다. ROPC는 19.0에서 완전히 제거되며, 그 이후에는 클라이언트 자격 증명과 함께라도 사용할 수 없습니다.

GitLab은 보안상의 이유로 2025 년 4 월 8 일부터 GitLab.com에서 ROPC에 대한 클라이언트 인증을 요구해 왔습니다. ROPC 지원을 완전히 제거하면 보안이 OAuth RFC 버전 2.1에 부합하게 됩니다.

컨테이너 레지스트리용 S3 스토리지 드라이버(AWS SDK v1)#

  • GitLab 17.10에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

AWS SDK v1을 사용하는 컨테이너 레지스트리용 S3 스토리지 드라이버는 폐기되었으며 GitLab 19.0에서 제거될 예정입니다. 컨테이너 레지스트리에 S3 오브젝트 스토리지를 사용 중이며 새 드라이버를 더 빨리 사용하려면 설정을 업데이트하여 새로운 s3_v2 드라이버를 사용해야 합니다. GitLab 19.0에서는 폐기된 s3 드라이버가 s3_v2 드라이버의 별칭이 되어 별도의 수동 조치가 필요하지 않습니다.

s3_v2 스토리지 드라이버는 AWS SDK v2를 기반으로 하며 향상된 성능, 더 나은 보안, AWS의 지속적인 지원을 제공합니다. 2025 년 5 월부터 제공되어, 2025 년 7 월 31 일에 지원이 종료되는 폐기된 AWS SDK v1을 대체합니다.

s3_v2 드라이버는 더 이상 Signature Signing Algorithm v2를 지원하지 않습니다. 설정에서 v4auth: false 옵션이 지정되어 있으면 s3_v2 드라이버가 이를 알아채지 못한 채 무시하고 더 안전한 V4 알고리즘을 사용합니다. s3_v2 드라이버로 마이그레이션하려면:

  1. 레지스트리 설정 파일을 업데이트하여 s3 대신 s3_v2 설정을 사용합니다.
  2. AWS SDK v2는 Signature Version 4만 지원하므로, 아직 이전하지 않았다면 인증을 Signature Version 2에서 Signature Version 4로 전환합니다.
  3. 프로덕션에 배포하기 전에 비프로덕션 환경에서 설정을 테스트합니다.

AWS S3에서는 드라이버 변경으로 인해 클라이언트가 레지스트리 블롭을 다운로드할 때 사용하는 presigned URL의 호스트 이름도 바뀔 수 있습니다. AWS SDK v2는 설정된 리전에 맞는 S3 엔드포인트를 확인하므로, presigned URL 이 전역 s3.amazonaws.com 호스트 이름 대신 s3.us-east-1.amazonaws.com과 같은 리전별 호스트 이름을 사용할 수 있습니다. 네트워크에서 아웃바운드 트래픽을 제한하는 경우, 업그레이드 전에 프록시나 방화벽 허용 목록에 해당 리전 호스트 이름을 추가합니다. 그렇지 않으면 이미지 풀이 403 Forbidden 응답으로 실패합니다.

스토리지 드라이버 설정 업데이트에 관한 자세한 내용은 오브젝트 스토리지 사용을 참고합니다.

Slack 슬래시 명령어#

  • GitLab 18.7에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Slack 슬래시 명령어 통합은 동일한 기능을 제공하면서 더 안전한 통합 방식인 Slack용 GitLab 앱을 위해 폐기됩니다.

GitLab 19.0부터 사용자는 더 이상 Slack 슬래시 명령어 통합을 설정하거나 사용할 수 없습니다. 이 통합은 GitLab Self-Managed 및 GitLab Dedicated 인스턴스에서만 사용할 수 있습니다. GitLab.com을 사용하는 경우 별도로 조치할 사항이 없습니다.

GitLab Self-Managed 또는 GitLab Dedicated를 사용 중이며 영향을 받는지 확인하려면 이슈 569345를 참고합니다.

Linux 패키지 및 GitLab Helm 차트의 Spamcheck 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 Linux 패키지 및 GitLab Helm 차트에서 Spamcheck를 제거합니다.

Spamcheck는 공개적으로 노출된 GitLab 인스턴스의 스팸에 대응하기 위한 서비스입니다. 특성상 이 기능은 주로 대규모 공개 인스턴스와 관련이 있으며, 이는 당사 고객 기반에서 드문 사례에 해당합니다.

낮은 채택률과 독립 배포 옵션의 존재를 고려하여, Linux 패키지 및 GitLab Helm 차트에서 Spamcheck를 제거합니다. Spamcheck를 사용하지 않는 고객은 이 변경으로 영향을 받지 않습니다. 이 제거로 대다수 고객의 패키지 크기와 의존성 범위(그에 따른 보안성)가 개선됩니다.

번들된 Spamcheck를 현재 사용 중이라면 Docker를 사용해 별도로 배포할 수 있습니다.

데이터 마이그레이션은 필요하지 않습니다. 설정 안내는 연결된 문서에서 확인할 수 있습니다.

NGINX Ingress 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 현재 기본 네트워킹 컴포넌트로 NGINX Ingress를 번들로 제공합니다. NGINX Ingress는 2026년 3월에 지원이 종료될 예정이므로, Gateway API 및 Envoy Gateway로 전환합니다.

GitLab 19.0부터 Gateway API와 번들된 Envoy Gateway가 기본 설정이 됩니다. 배포 환경에서 Envoy Gateway 로의 마이그레이션이 어려운 경우, 번들된 NGINX Ingress를 명시적으로 다시 활성화할 수 있으며, 이는 GitLab 20.0에서 계획된 완전 제거 전까지 계속 사용할 수 있습니다.

이 변경 사항은 Linux 패키지의 NGINX, 또는 외부에서 관리되는 Ingress 나 Gateway API 컨트롤러를 사용하는 GitLab Helm 차트 및 GitLab Operator 인스턴스에는 영향을 주지 않습니다.

완전 제거 전까지 포크된 NGINX Ingress 차트와 빌드에 대해 최선의 노력으로 보안 유지 관리를 제공합니다. 원활한 전환을 위해 제공되는 Gateway API 솔루션 또는 외부에서 관리되는 Ingress 컨트롤러로의 마이그레이션을 계획할 것을 권장합니다. 단계별 안내는 Envoy Gateway 마이그레이션 가이드를 참고합니다.

PostgreSQL 16 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab은 PostgreSQL의 연간 업그레이드 주기를 따릅니다.

PostgreSQL 16 지원은 GitLab 19.0에서 제거될 예정입니다. GitLab 19.0부터 PostgreSQL 17 이 최소 요구 PostgreSQL 버전이 됩니다.

PostgreSQL 17은 GitLab 18.9부터 사용할 수 있으며, GitLab 19.0에서 PostgreSQL 16 이 제거되기 전 언제든지 업그레이드할 수 있습니다.

Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면, 18.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 충분한 디스크 공간을 확보해야 합니다.

자세한 내용은 패키지로 설치된 PostgreSQL 서버 업그레이드를 참고합니다.

Redis 6 지원#

  • GitLab 18.10에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 안전하고 지원 가능한 인프라 스택을 유지하기 위한 노력의 일환으로 Redis 6 지원을 제거할 계획입니다.

GitLab 19.0으로 업그레이드하기 전에 Redis 7.0 이상 또는 Valkey 7.2로 마이그레이션합니다. Redis 7.2 또는 Valkey 7.2를 권장합니다. Redis 7.0은 업스트림에서 지원이 종료(EOL)되었지만, Redis 7.0을 기반으로 하는 Amazon ElastiCache for Redis 7.1과 같이 일부 벤더에서 적극적으로 유지 관리하는 경우도 있습니다.

Linux 패키지에 번들된 Redis는 GitLab 16.2부터 Redis 7을 사용하고 있어 영향을 받지 않습니다. 외부 Redis 6 배포를 사용하는 GitLab Self-Managed 인스턴스만 마이그레이션이 필요합니다.

외부 Redis 6 배포를 마이그레이션하려면 다음 자료를 참고합니다.

  • AWS ElastiCache: ElastiCache for Redis 7.2는 AWS에서 제공되지 않습니다. 권장되는 Amazon ElastiCache for Valkey 7.2로 마이그레이션합니다. ElastiCache for Redis 7.1은 Redis 7.0을 기반으로 하며 정상 작동이 확인되었습니다. 사용 가능한 업그레이드 경로는 AWS ElastiCache 문서를 참고합니다.
  • GCP Memorystore: Redis 6 인스턴스를 Redis 7.2 또는 Valkey 7.2로 업그레이드합니다. 사용 가능한 업그레이드 경로는 GCP Memorystore 문서를 참고합니다.
  • Azure Cache for Redis: Azure에서는 현재 관리형 Redis 7.2 또는 Valkey 7.2 옵션을 제공하지 않습니다. Azure VM 또는 AKS에서 Redis 7.2 또는 Valkey 7.2를 직접 호스팅할 수 있습니다. Valkey 7.2를 지원하는 GitLab Linux 패키지 설치 방식을 사용할 수도 있습니다.
  • 자체 호스팅: Redis 6 인스턴스를 Redis 7.2 또는 Valkey 7.2로 업그레이드합니다.

자세한 내용은 요구 사항 문서를 참고합니다.

GitLab Helm 차트의 번들 PostgreSQL, Redis, MinIO 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 GitLab 설정을 더 쉽게 하기 위해 Bitnami PostgreSQL, Bitnami Redis, 그리고 공식 MinIO 차트의 포크를 번들로 제공합니다. 라이선스, 프로젝트 유지 관리, 공개 이미지 제공 방식의 여러 변경으로 인해 이 컴포넌트들은 대체 없이 GitLab Helm 차트와 GitLab Operator에서 제거됩니다.

이 차트들은 현재 기본으로 활성화되어 있지만, 프로덕션 사용에는 권장되지 않는다고 명시적으로 문서화되어 있습니다. 이들의 유일한 목적은 빠른 개념 증명 및 테스트 환경 구성이었습니다.

번들된 PostgreSQL, Redis, MinIO로 인스턴스를 운영 중이라면 마이그레이션 가이드를 확인합니다.

Linux 패키지에서 제공하는 Redis와 PostgreSQL은 이 변경의 영향을 받지 않습니다.

ci_job_token_scope_enabled 프로젝트 API 속성이 폐기됩니다#

  • GitLab 16.4에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

프로젝트로부터의 접근 제한 CI/CD 작업 토큰 프로젝트 설정은 18.0에서 제거되었습니다. 프로젝트 API의 관련 ci_job_token_scope_enabled 속성은 현재 폐기되었으며 항상 false를 반환하므로 19.0에서 제거됩니다. 작업 토큰 접근을 제어하려면 CI/CD 작업 토큰 프로젝트 설정을 사용합니다.

heroku/builder:22 이미지가 폐기됩니다#

  • GitLab 17.4에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Auto DevOps Build 프로젝트에서 클라우드 네이티브 빌드팩(CNB) 빌더 이미지가 heroku/builder:24로 업데이트되었습니다. 대부분의 경우 이 변경이 지장을 주지 않을 것으로 예상하지만, Auto DevOps 사용자, 특히 Auto Build 사용자에게는 브레이킹 체인지이 될 수 있습니다. 워크로드에 미치는 영향을 더 잘 파악하려면 다음을 검토합니다.

이 변경은 파이프라인에서 Auto DevOps의 Auto Build 단계가 제공하는 auto-build-image를 사용하는 경우 영향을 줍니다.

GitLab 19.0 이후에도 heroku/builder:22를 계속 사용하려면 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:22로 설정합니다.

  • GitLab 18.8에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Explore > Projects의 Trending 탭과 관련 GraphQL 인수는 GitLab 18.8에서 폐기되며 GitLab 19.0에서 제거됩니다. GitLab 19.0 릴리스 한 달 전부터 Trending 탭은 GitLab.com에서 별표 개수 내림차순으로 정렬된 Active 탭으로 리디렉션됩니다.

제거되는 항목

  • Explore > Projects 페이지의 Trending 탭
  • 다음 GraphQL 타입의 trending 인수
    • Query.adminProjects
    • Query.projects
    • Organization.projects

변경 이유

trending 알고리즘은 공개 프로젝트만 고려하므로, 주로 내부 또는 비공개 가시성을 사용하는 GitLab Self-Managed 인스턴스에는 효과가 없습니다. 이 알고리즘의 한계와 검색 기능 부재로 인해 Self-Managed 사용자들의 명시적인 제거 요청이 있었습니다. 상당한 개선에 투자하는 대신, 기존 탐색 메커니즘을 강화하는 데 리소스를 집중합니다.

필요한 조치

UI 사용자: Trending 탭은 19.0에서 완전히 제거되기 전, 다음 브레이킹 체인지 적용 기간 동안 접근할 수 없게 됩니다. 최근 업데이트되었거나 별표가 가장 많은 프로젝트를 확인하려면 Active 탭을 사용할 것을 권장합니다.

Bitbucket Cloud 가져오기 GitLab API에서 앱 비밀번호 사용#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Atlassian은 Bitbucket Cloud의 앱 비밀번호(사용자 이름·비밀번호 인증)를 폐기했으며, 이 인증 방식이 2026-06-09부터 작동을 멈춘다고 발표했습니다.

GitLab 19.0부터 GitLab API를 통해 Bitbucket Cloud에서 리포지터리를 가져오려면 사용자 API 토큰을 대신 사용해야 합니다.

Bitbucket Server에서 가져오거나 GitLab UI를 통해 Bitbucket Cloud에서 가져오는 사용자는 영향을 받지 않습니다.

ciJobTokenScopeAddProject GraphQL 뮤테이션이 폐기됩니다#

  • GitLab 17.5에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서 CI/CD 작업 토큰의 향후 기본 동작 변경에 맞추어, 관련 ciJobTokenScopeAddProject GraphQL 뮤테이션도 ciJobTokenScopeAddGroupOrProject 를 위해 폐기합니다.

GitLab 18.8#

정적 컴플라이언스 위반 리포트#

  • GitLab 18.2에서 발표
  • GitLab 18.8에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

기존 정적 컴플라이언스 위반 리포트는 GitLab 18.2에서 폐기되며 GitLab 18.8에서 제거됩니다.

정적 컴플라이언스 위반 리포트를 대체하기 위해 다음을 제공했습니다.

이 기능들은 정적 위반 리포트와 동일한 기능을 모두 제공하면서도, 필요한 위반 항목을 직접 설정할 수 있습니다.

GitLab 18.8에서는 요구 사항 및 통제에 대한 더 정확한 보고를 위해, 정적 컴플라이언스 위반 리포트를 컴플라이언스 프레임워크를 사용하는 동적 리포트로 대체합니다.

GitLab 18.6#

GitLab Duo Self-Hosted 용 초기 Mistral 모델 폐기#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 지원 종료
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.6에서 GitLab은 GitLab Duo Self-Hosted 용 Mistral 7B-it, Mixtral 8x7B, Mixtral 8x22B 모델 지원을 제거합니다. GitLab Duo Enterprise 고객은 GitLab Duo Self-Hosted에서 이 모델들을 계속 사용할 수 있지만, 해당 모델을 사용하는 구성에 대해서는 더 이상 기술 지원을 받을 수 없습니다. GitLab Duo Self-Hosted는 일반 공급 가능한 모든 GitLab Duo Self-Hosted 기능과 완전히 호환되는 것으로 검증된 Mistral Small 24B Instruct 2506은 계속 지원합니다.

Omnibus Linux 패키지에 번들된 Prometheus 2.x#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Linux 패키지에 번들된 Prometheus 2.x는 폐기되며 GitLab 18.6에서 최신 Prometheus 3.x 릴리스로 업데이트됩니다.

Prometheus 3에는 새로운 로그 형식 및 더 엄격한 헤더 검증과 같이 주요 변경이 될 수 있는 사항이 일부 포함되어 있습니다. 자세한 내용은 Prometheus 마이그레이션 가이드를 참고합니다.

이 변경은 GitLab Helm 차트 설치에는 영향을 주지 않습니다.

컴플라이언스 표준 준수 대시보드를 컴플라이언스 상태 대시보드로 교체#

  • GitLab 17.11에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 17.11에서 다음을 제공했습니다.

이 기능들은 컴플라이언스 표준 준수 대시보드와 동일한 기능을 모두 제공하면서도, 필요한 준수 항목을 직접 설정할 수 있습니다.

GitLab 18.6에서는 요구 사항 및 통제에 대한 더 정확한 보고를 위해, 컴플라이언스 표준 준수 대시보드를 컴플라이언스 상태 대시보드로 교체합니다.

정확 코드 검색을 비활성화하는 사용자 설정#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

정확 코드 검색을 비활성화하는 사용자 설정은 현재 폐기되었습니다. GitLab.com에서는 더 이상 프로필 환경설정에서 정확 코드 검색을 비활성화할 수 없습니다.

정확 코드 검색은 더 나은 사용자 경험을 제공하며 기존 검색 API와 호환됩니다. 모든 사용자가 개선된 검색 기능의 혜택을 받을 수 있도록, 이 사용자 설정은 GitLab 18.6에서 제거될 예정입니다.

GitLab 18.5#

고급 검색에서 OpenSearch 1.x 지원#

  • GitLab 18.2에서 발표
  • GitLab 18.5에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

OpenSearch 1.x의 유지 관리 기간이 종료되었습니다. GitLab Self-Managed 및 GitLab Dedicated의 경우, 관리자는 고급 검색을 사용하려면 OpenSearch 인스턴스를 업그레이드해야 합니다.

GitLab 18.4#

GitLab 차트의 Bitnami PostgreSQL 및 Redis 이미지#

  • GitLab 18.4에서 발표
  • GitLab 18.4에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트의 기본 설정은 PostgreSQL 및 Redis 용 Bitnami 차트와 컨테이너 이미지에 의존합니다. Bitnami는 2025년 9월 29일부로 무료 카탈로그에서 이 이미지들을 중단할 예정입니다. 이미지를 일시적으로 사용할 수 없게 하는 브라운아웃은 2025년 8월 28일에 시작되었습니다.

GitLab 차트는 데모 및 테스트 목적으로만 Bitnami의 PostgreSQL과 Redis를 번들로 제공합니다. 이는 어떤 지원되는 GitLab 참조 아키텍처에도 포함되지 않습니다. 참조 아키텍처를 사용 중이거나 다른 벤더의 패키지 또는 이미지로 외부 PostgreSQL과 Redis를 배포한 경우, 이 변경의 영향을 받지 않습니다.

임시 해결책으로 GitLab은 차트 설정을 Bitnami 레거시 리포지터리로 마이그레이션했습니다. 하지만 패치되지 않은 GitLab 차트 환경(GitLab 17.11, GitLab 18.0.5, GitLab 18.1.4, GitLab 18.2.1 이하)은 계속 폐기된 Bitnami 리포지터리에서 이미지를 가져오며, 이로 인해 9월 29일 이후 배포에 실패하거나 브라운아웃 단계에서 배포에 실패할 수 있습니다.

영향을 받는 GitLab 차트 설정을 운영 중이라면 다음 중 하나를 수행해야 합니다.

  • 지원되는 GitLab 참조 아키텍처로 마이그레이션합니다.
  • 패치된 차트 버전으로 업그레이드합니다.
  • 차트 값에 레거시 리포지터리를 설정합니다. 예시는 머지 리퀘스트 4421을 참고합니다.

앞으로 GitLab 차트에서 Bitnami 컴포넌트를 대체하거나 완전히 제거하는 방안에 대한 대안을 검토할 예정입니다. 자세한 내용은 Bitnami 공식 발표를 참고합니다.

GitLab 18.3#

cert-manager Helm 차트 업데이트#

  • GitLab 18.0에서 발표
  • GitLab 18.3에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

최신 cert-manager 차트의 스키마 검증을 지원하기 위해, GitLab Helm 차트의 certmanager.install 값이 폐기되며 installCertmanager로 대체됩니다. 스키마 정의는 GitLab 차트의 certmanager 섹션에 추가한 추가 속성을 허용하지 않습니다.

GitLab 18.3(GitLab 차트 9.3)에서는 폐기된 값을 제거하고 번들된 cert-manager를 업데이트합니다.

이전에 certmanager.install 설정을 사용했다면 다음을 수행합니다.

  1. certmanager.install 값을 installCertmanager로 옮깁니다.
  2. certmanager.install 설정을 완전히 제거합니다.

cert-manager 릴리스 노트도 함께 검토합니다.

GitLab 18.1#

Commits API로 확장된 파이프라인 작업 한도#

  • GitLab 17.7에서 발표
  • GitLab 18.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0부터 활성 파이프라인의 최대 작업 수는 Commits API를 사용해 작업을 생성할 때도 적용됩니다. 통합이 설정된 작업 한도 내에서 유지되는지 검토합니다.

GitLab 18.0#

API Discovery가 기본적으로 브랜치 파이프라인을 사용합니다#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서는 API Discovery 용 CI/CD 템플릿(API-Discovery.gitlab-ci.yml)의 기본 동작을 업데이트합니다.

GitLab 18.0 이전에는 이 템플릿이 머지 리퀘스트(MR)가 열려 있을 때 기본적으로 머지 리퀘스트(MR) 파이프라인에서 작업을 실행하도록 구성되어 있습니다. GitLab 18.0부터는 이 템플릿의 동작을 다른 AST 스캐너용 Stable 템플릿 에디션의 동작에 맞춥니다.

  • 기본적으로 템플릿은 브랜치 파이프라인에서 스캔 작업을 실행합니다.
  • MR 이 열려 있을 때 대신 MR 파이프라인을 사용하도록 CI/CD 변수 AST_ENABLE_MR_PIPELINES: true를 설정할 수 있습니다. 이 새 변수의 구현은 이슈 410880에서 추적됩니다.

애플리케이션 보안 테스트 분석기 주요 버전 업데이트#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서는 모든 애플리케이션 보안 테스트 분석기 컨테이너 이미지의 주요 버전을 업데이트합니다.

기본 제공 템플릿을 사용하지 않거나 분석기 버전을 고정한 경우, CI/CD 작업 정의를 업데이트하여 고정된 버전을 제거하거나 최신 주요 버전으로 업데이트해야 합니다.

GitLab 17.0에서 GitLab 17.11까지의 사용자는 GitLab 18.0 릴리스 전까지 계속 분석기 업데이트를 받으며, 그 이후 새로 수정되는 버그와 릴리스되는 기능은 새로운 주요 버전의 분석기에서만 제공됩니다. 다만 컨테이너 레지스트리에 게시된 기존 컨테이너 이미지는 제거하지 않습니다.

유지 관리 정책에 따라 폐기된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최신 3개 마이너 릴리스 내에서 백포트됩니다.

구체적으로, 다음 분석기는 GitLab 18.0 릴리스 이후 더 이상 업데이트되지 않습니다.

  • GitLab Advanced SAST: 버전 1
  • Container scanning: 버전 7
  • Gemnasium: 버전 5
  • DAST: 버전 5
  • DAST API: 버전 4
  • Fuzz API: 버전 4
  • IaC scanning: 버전 5
  • Pipeline secret detection: 버전 6
  • 정적 애플리케이션 보안 테스트(SAST): 모든 분석기의 버전 5
    • kics
    • kubesec
    • pmd-apex
    • semgrep
    • sobelow
    • spotbugs

Upcoming 및 Started 마일스톤 필터의 동작 변경#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

"Upcoming"과 "Started" 특수 필터의 동작은 다가오는 GitLab 주요 릴리스 18.0에서 변경될 예정입니다. 두 필터의 새로운 동작은 이슈 429728에 설명되어 있습니다.

이 변경은 기존 마일스톤 필터링 로직을 계속 사용하는 GitLab REST API에는 영향을 주지 않습니다. GitLab GraphQL API는 새로운 필터링 로직을 따르도록 업데이트됩니다.

CI/CD 작업 토큰 - 승인된 그룹 및 프로젝트 허용 목록 적용#

  • GitLab 16.5에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 15.9에 도입된 승인된 그룹 및 프로젝트 설정을 사용하면(GitLab 16.3에서 이 프로젝트로의 접근 제한에서 이름이 변경됨) 프로젝트에 대한 CI/CD 작업 토큰 접근을 제어할 수 있습니다. 이 프로젝트 및 허용 목록에 있는 그룹·프로젝트만 허용으로 설정하면, 허용 목록에 추가된 그룹이나 프로젝트만 작업 토큰을 사용해 해당 프로젝트에 접근할 수 있습니다.

GitLab 15.9 이전에 생성된 프로젝트의 경우, 허용 목록은 기본적으로 비활성화되어 있었으며 (모든 그룹 및 프로젝트 접근 설정이 선택되어) 모든 프로젝트에서 작업 토큰 접근이 허용되었습니다. 이제 허용 목록은 모든 새 프로젝트에서 기본으로 활성화됩니다. 기존 프로젝트에서는 여전히 비활성화되어 있거나, 접근을 제한 없이 열어두기 위해 모든 그룹 및 프로젝트 옵션을 수동으로 선택했을 수 있습니다.

GitLab 17.6부터 GitLab Self-Managed 및 GitLab Dedicated 인스턴스의 관리자는 선택적으로 모든 프로젝트에 대해 이 더 안전한 설정을 적용할 수 있습니다. 이 설정은 프로젝트 Maintainer가 모든 그룹 및 프로젝트를 선택하지 못하도록 막습니다. 이 변경으로 프로젝트 간 보안 수준이 높아집니다.

GitLab 18.0에서는 이 인스턴스 설정이 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 기본으로 활성화됩니다. GitLab Self-Managed 및 GitLab Dedicated 관리자는 GitLab 18.0으로 업그레이드한 후 이 설정을 비활성화하여 업그레이드 이전 동작으로 되돌릴 수 있습니다. GitLab Self-Managed 및 GitLab Dedicated의 경우 GitLab 18.0에서 프로젝트 설정 자체는 변경되지 않지만, 인스턴스 설정의 상태가 인스턴스의 모든 프로젝트에 영향을 미칩니다.

이 변경에 대비하려면, 프로젝트 간 인증에 작업 토큰을 사용하는 프로젝트 Maintainer는 해당 프로젝트의 승인된 그룹 및 프로젝트 허용 목록을 채워야 합니다. 그런 다음 설정을 이 프로젝트 및 허용 목록에 있는 그룹·프로젝트만 허용으로 변경해야 합니다.

CI/CD 작업 토큰으로 인증하여 해당 프로젝트에 접근해야 하는 프로젝트를 식별할 수 있도록, GitLab 17.6에서는 프로젝트에 대한 작업 토큰 인증을 추적하는 방법도 도입했습니다. 이 데이터를 사용해 CI/CI 작업 토큰 허용 목록을 채울 수 있습니다.

GitLab 17.10부터 18.6까지는 마이그레이션 도구를 사용해 작업 토큰 인증 로그에서 CI/CD 작업 토큰 허용 목록을 자동으로 채울 수 있습니다. GitLab 18.0에서 허용 목록이 전면 적용되기 전에 이 마이그레이션 도구를 사용해 허용 목록을 채우고 적용할 것을 권장합니다. GitLab 18.0에서는 앞서 발표한 대로 GitLab.com에서 허용 목록의 자동 채움과 적용이 이루어집니다.

이 마이그레이션 도구는 GitLab 18.7에서 제거되었습니다.

CI/CD 작업 토큰 - 프로젝트로부터의 접근 제한 설정 제거#

  • GitLab 15.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 14.4에서는 보안을 강화하기 위해 프로젝트의 CI/CD 작업 토큰(CI_JOB_TOKEN)으로부터의 접근을 제한하는 설정을 도입했습니다. 이 설정은 CI_JOB_TOKEN 접근 제한 이라고 불렸습니다. GitLab 16.3에서는 명확성을 위해 이 설정의 이름을 이 프로젝트로부터의 접근 제한으로 변경했습니다.

GitLab 15.9에서는 승인된 그룹 및 프로젝트라는 대체 설정을 도입했습니다. 이 설정은 허용 목록을 사용해 프로젝트로의 작업 토큰 접근을 제어합니다. 이 새 설정은 기존 설정보다 크게 개선된 것입니다. 첫 번째 반복 버전은 GitLab 16.0에서 폐기되었으며 GitLab 18.0에서 제거가 예정되었습니다.

이 프로젝트로부터의 접근 제한 설정은 모든 새 프로젝트에서 기본적으로 비활성화되어 있습니다. GitLab 16.0 이상에서는 어떤 프로젝트에서든 이 설정을 비활성화한 후에는 다시 활성화할 수 없습니다. 대신 승인된 그룹 및 프로젝트 설정을 사용해 프로젝트로의 작업 토큰 접근을 제어합니다.

DAST dast_crawl_extract_element_timeout 및 dast_crawl_search_element_timeout 변수#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

DAST 변수 DAST_CRAWL_EXTRACT_ELEMENT_TIMEOUT 및 DAST_CRAWL_SEARCH_ELEMENT_TIMEOUT은 폐기되었으며 GitLab 18.0에서 제거됩니다. 이 변수들이 도입될 당시에는 특정 브라우저 상호작용에 대한 세부적인 타임아웃 제어를 제공했습니다. 이제 이러한 상호작용은 공통 타임아웃 값으로 관리되므로 이 변수들은 더 이상 필요하지 않습니다. 또한 근본적인 구현 문제로 인해, 이 변수들은 DAST 브라우저 기반 분석기가 도입된 이후 실질적으로 작동하지 않았습니다. 이 두 변수를 제거하면 DAST 설정이 단순해지고 사용자에게 더 나은 온보딩 경험을 제공합니다.

DAST dast_devtools_api_timeout 기본값이 낮아집니다#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

DAST_DEVTOOLS_API_TIMEOUT 환경 변수는 DAST 스캔이 브라우저의 응답을 얼마나 기다릴지 결정합니다. GitLab 18.0 이전에는 이 변수가 45초로 고정된 값을 가졌습니다. GitLab 18.0 이후에는 DAST_DEVTOOLS_API_TIMEOUT 환경 변수가 다른 타임아웃 설정을 기반으로 계산되는 동적 값을 가집니다. 대부분의 경우 45초 값은 여러 스캐너 함수의 타임아웃 값보다 높았습니다. 동적으로 계산된 값은 적용되는 사례 수를 늘려 DAST_DEVTOOLS_API_TIMEOUT 변수를 더 유용하게 만듭니다.

잠재적인 중단을 줄이기 위해 다음 일정에 따라 기본 타임아웃 값을 단계적으로 조정합니다.

타임아웃 값 마일스톤
45 17.11 이하
30 18.0
20 18.1
10 18.2
5 18.3

Dependency Proxy 토큰 범위 강제 적용#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

컨테이너용 Dependency Proxy는 개인 액세스 토큰이나 그룹 액세스 토큰을 사용하는 docker login, docker pull 요청을 범위 검증 없이 수락합니다.

GitLab 18.0에서는 Dependency Proxy가 인증에 read_registry와 write_registry 범위를 모두 요구합니다. 이 변경 이후 해당 범위가 없는 토큰을 사용한 인증 시도는 거부됩니다.

이는 브레이킹 체인지입니다. 업그레이드하기 전에 필요한 범위를 가진 새 액세스 토큰을 생성하고, 워크플로 변수와 스크립트를 새 토큰으로 갱신합니다.

이 변경이 GitLab Self-Managed 인스턴스에 미치는 영향을 파악하려면 GitLab 17.10 이후 버전에서 인증 로그의 경고 메시지를 모니터링합니다. auth_json.log 파일에서 Dependency proxy missing authentication abilities 문구가 포함된 항목을 확인합니다. GitLab Helm 차트나 GitLab Dedicated를 사용 중이라면 해당 로그는 component: "gitlab"과 subcomponent: "auth_json"에 있습니다. 이 항목들은 필요한 범위가 없는 토큰을 사용한 인증 시도를 보여주며, GitLab 18.0으로 업그레이드한 후에는 이러한 시도가 실패합니다.

Terraform CI/CD 템플릿 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Terraform CI/CD 템플릿은 폐기되었으며 GitLab 18.0에서 제거됩니다. 이는 다음 템플릿에 영향을 미칩니다.

  • Terraform.gitlab-ci.yml
  • Terraform.latest.gitlab-ci.yml
  • Terraform/Base.gitlab-ci.yml
  • Terraform/Base.latest.gitlab-ci.yml

GitLab 16.9에서는 사용자에게 폐기를 알리는 새 작업이 템플릿에 추가되었습니다. 이 경고는 영향을 받는 파이프라인에서 deprecated-and-will-be-removed-in-18.0 작업을 플레이스홀더 작업으로 덮어써서 끌 수 있습니다.

GitLab은 BSL 라이선스가 적용된 버전으로는 작업 이미지의 terraform 바이너리를 업데이트할 수 없습니다.

Terraform을 계속 사용하려면 템플릿과 Terraform 이미지를 클론한 뒤, 필요에 따라 직접 유지 관리합니다. GitLab은 커스텀 빌드 이미지로 마이그레이션하는 상세 안내를 제공합니다.

대안으로 GitLab.com에서는 새 OpenTofu CI/CD 컴포넌트를, GitLab Self-Managed에서는 새 OpenTofu CI/CD 템플릿을 사용할 것을 권장합니다. CI/CD 컴포넌트는 아직 GitLab Self-Managed에서 사용할 수 없지만, 이슈 #415638에서 이 기능을 추가할 것을 제안하고 있습니다. CI/CD 컴포넌트가 GitLab Self-Managed에서 사용 가능해지면 OpenTofu CI/CD 템플릿은 제거됩니다.

새 OpenTofu CI/CD 컴포넌트에 대해 자세히 알아봅니다.

라이선스 메타데이터 형식 V1 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

라이선스 메타데이터 형식 V1 데이터셋은 폐기되었으며 GitLab 18.0에서 제거됩니다.

package_metadata_synchronization 기능 플래그가 활성화된 사용자는 GitLab 16.3 이상으로 업그레이드하고 기능 플래그 설정을 제거할 것을 권장합니다.

GraphQL API NamespaceProjectSortEnum의 STORAGE enum 폐기#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab GraphQL API의 NamespaceProjectSortEnum에 있는 STORAGE enum은 GitLab 18.0에서 제거됩니다.

이 변경에 대비해 NamespaceProjectSortEnum과 상호작용하는 GraphQL 쿼리를 검토하고 갱신할 것을 권장합니다. STORAGE 필드에 대한 참조는 EXCESS_REPO_STORAGE_SIZE_DESC로 교체합니다.

GraphQL API ProjectMonthlyUsageType의 name 필드 폐기#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab GraphQL API의 ProjectMonthlyUsageType에 있는 name 필드는 GitLab 18.0에서 제거됩니다.

이 변경에 대비해 ProjectMonthlyUsageType과 상호작용하는 GraphQL 쿼리를 검토하고 갱신할 것을 권장합니다. name 필드에 대한 참조는 project.name으로 교체합니다.

GitLab NGINX 차트 컨트롤러 이미지 v1.3.1 폴백 지원#

  • GitLab 17.6에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.
Note

이 변경은 GitLab NGINX 차트를 사용 중이고 직접 NGINX RBAC 규칙을 설정한 경우에만 영향을 미칩니다.

외부 NGINX 차트를 사용 중이거나, NGINX RBAC 규칙 변경 없이 GitLab NGINX 차트를 사용 중이라면 이 폐기는 해당하지 않습니다.

GitLab 17.6(Helm 차트 8.6)에서 GitLab 차트는 기본 NGINX 컨트롤러 이미지를 버전 1.3.1에서 1.11.2로 업데이트했습니다. 이 새 버전은 GitLab NGINX 차트에 추가된 새 RBAC 규칙을 필요로 하므로, 결국 이 규칙들을 생성해야 합니다. 이 변경 사항은 다음 버전에도 백포트되었습니다.

  • GitLab 17.5.1 (Helm 차트 8.5.1)
  • GitLab 17.4.3 (Helm 차트 8.4.3)
  • GitLab 17.3.6 (Helm 차트 8.3.6)
Note

Helm 차트 8.3~8.7의 최신 패치 버전에는 NGINX 컨트롤러 버전 1.11.2가 포함되어 있습니다. 이후 차트 버전에는 다양한 보안 수정 사항이 포함되어 있어 버전 1.11.5가 포함됩니다. GitLab 18.0은 기본적으로 컨트롤러 버전 1.11.5를 사용합니다.

직접 NGINX RBAC 규칙을 관리한다면 이는 nginx-ingress.rbac.create를 false로 설정했다는 의미입니다. 이 경우 GitLab 17.3(Helm 차트 8.3)부터 GitLab 17.11(Helm 차트 8.11)까지는 이 변경을 감지해 이전 컨트롤러 이미지를 사용하는 폴백 메커니즘이 있으므로 RBAC 규칙을 변경할 필요가 없습니다.

GitLab 18.0(Helm 차트 9.0)부터는 이 폴백 메커니즘이 제거되므로 새 컨트롤러 이미지가 사용되고 새 RBAC 규칙이 반드시 있어야 합니다.

GitLab 18.0에서 강제 적용되기 전에 새 NGINX 컨트롤러 이미지를 활용하려면 다음을 수행합니다.

  1. 클러스터에 새 RBAC 규칙을 추가합니다. 예시 보기.
  2. nginx-ingress.controller.image.disableFallback을 true로 설정합니다.

자세한 내용은 차트 릴리스 페이지를 참고합니다.

Gitaly 속도 제한#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Git 작업과 리포지터리 지연 시간의 변동 폭이 크기 때문에 Gitaly의 RPC 기반 속도 제한은 효과적이지 않습니다. 적절한 속도 제한을 설정하는 일은 어렵고, 유해한 작업이 초당 요청 수를 충분히 발생시키지 않는 경우가 많아 금방 무용지물이 됩니다.

Gitaly는 이미 동시성 제한과 적응형 제한 애드온을 지원하며, 이는 프로덕션 환경에서 잘 동작하는 것으로 입증되었습니다.

Gitaly는 외부 네트워크에 직접 노출되지 않고 로드 밸런서 같은 외부 보호 계층이 더 나은 안전장치를 제공하므로, 속도 제한의 효과는 떨어집니다.

따라서 더 신뢰할 수 있는 동시성 제한을 위해 속도 제한을 폐기합니다. Gitaly RPC 기반 속도 제한은 GitLab 18.0에서 제거됩니다.

레거시 Web IDE 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

레거시 Vue 기반 GitLab Web IDE 구현은 GitLab에서 제거됩니다. 이 변경은 GitLab 15.11부터 기본 Web IDE 경험으로 자리 잡은 GitLab VSCode Fork 기반 Web IDE로의 성공적인 전환에 따른 것입니다.

이 제거는 여전히 레거시 Web IDE 구현에 접근 중인 사용자에게 영향을 미칩니다.

이 제거에 대비하려면 GitLab 인스턴스에서 이전에 비활성화되어 있던 vscode_web_ide 기능 플래그를 활성화합니다.

정책당 허용되는 스캔 실행 정책 작업 수 제한#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

정책당 허용되는 최대 스캔 실행 정책 작업 수에 새 제한이 추가되었습니다. 이 변경은 17.4에서 scan_execution_policy_action_limit와 scan_execution_policy_action_limit_group 기능 플래그 뒤에 도입되었습니다. 활성화되면 스캔 실행 정책의 처음 10개 작업만 처리됩니다.

제한을 추가함으로써 보안 정책의 성능과 확장성을 보장할 수 있습니다.

추가 작업이 필요하다면 기존 정책을 10개 이하의 작업으로 제한합니다. 그런 다음 보안 정책 프로젝트당 5개의 스캔 실행 정책이라는 한도 내에서 추가 작업이 있는 새 스캔 실행 정책을 생성합니다.

GitLab Self-Managed 및 GitLab Dedicated 관리자는 scan_execution_policies_action_limit 애플리케이션 설정으로 사용자 지정 한도를 구성할 수 있습니다.

스캔 실행 정책의 scan 작업 수 제한#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab.com에서는 GitLab 18.0부터 스캔 실행 정책이 정책당 10개의 scan 작업으로 제한됩니다. 한도를 초과하는 새 정책은 생성할 수 없고, 기존 정책이 한도를 초과하면 업데이트할 수 없습니다. 한도를 초과하는 기존 정책은 처음 10개의 scan 작업만 실행됩니다.

GitLab Self-Managed 및 GitLab Dedicated 인스턴스에서는 scan_execution_policies_action_limit 애플리케이션 설정으로 사용자 지정 한도를 구성할 수 있습니다. 이 인스턴스들의 기본 한도는 0개 작업입니다. 10개 작업으로 한도를 구성할 것을 권장합니다.

Prometheus 서브차트 주요 업데이트#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0과 GitLab 차트 9.0에서 Prometheus 서브차트는 15.3에서 27.3으로 업데이트됩니다. 이 업데이트와 함께 Prometheus 3이 기본으로 제공됩니다.

업그레이드를 수행하려면 수동 단계가 필요합니다. Alertmanager, Node Exporter, Pushgateway를 활성화했다면 Helm 값도 업데이트해야 합니다.

자세한 내용은 마이그레이션 가이드를 참고합니다.

GitLab.com 취약점에 대한 새 데이터 보존 한도#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0에서는 시스템 성능과 안정성을 개선하기 위해 GitLab.com Ultimate 고객을 위한 새 데이터 보존 한도를 도입합니다. 이 데이터 보존 한도는 취약점 데이터가 저장되는 기간에 영향을 미칩니다. 12개월이 지나도록 업데이트되지 않은 취약점은 자동으로 콜드 스토리지 아카이브로 이동됩니다. 이 아카이브는 다음과 같습니다.

  • GitLab UI를 통해 계속 접근하고 다운로드할 수 있습니다.
  • 3년간 보존됩니다.
  • 3년 후 영구적으로 삭제됩니다.

PostgreSQL 14, 15 지원 종료#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab은 PostgreSQL의 연간 업그레이드 주기를 따릅니다.

PostgreSQL 14, 15 지원은 GitLab 18.0에서 제거될 예정입니다. GitLab 18.0에서는 PostgreSQL 16이 최소 요구 버전이 됩니다.

PostgreSQL 14, 15는 GitLab 17 릴리스 주기 전체 동안 지원됩니다. PostgreSQL 16도 GitLab 18.0 이전에 업그레이드하려는 인스턴스를 위해 지원됩니다.

Omnibus Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면 17.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 충분한 디스크 공간을 확보합니다. 자세한 내용은 Omnibus 데이터베이스 문서를 참고합니다.

그룹 설정의 프로젝트 페이지 폐기#

  • GitLab 17.0에서 발표
  • GitLab 17.9에서 지원 종료
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

그룹 소유자는 그룹 설정에서 그룹에 속한 프로젝트를 나열하는 프로젝트 페이지에 접근할 수 있으며, 여기서 프로젝트를 생성·편집·삭제하는 옵션과 각 프로젝트의 멤버 페이지 링크를 이용할 수 있습니다. 이 모든 기능은 그룹 개요 페이지와 각 프로젝트의 멤버 페이지에서도 이용할 수 있습니다. 그룹 설정의 프로젝트 페이지는 사용률이 낮고 접근성이 제한적이어서 폐기됩니다. 이 변경은 사용자 인터페이스에만 영향을 미칩니다. 기반 API는 계속 사용할 수 있으므로 Projects API를 사용해 프로젝트 생성, 편집, 삭제를 계속 수행할 수 있습니다. 17.9에서는 이 페이지에서 그룹 개요 페이지로 리디렉션되도록 구현합니다. 프로젝트 페이지는 18.0에서 그룹 설정에서 완전히 제거됩니다.

REST API 엔드포인트 pre_receive_secret_detection_enabled 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

REST API 엔드포인트 pre_receive_secret_detection_enabled는 secret_push_protection_enabled로 대체되어 폐기됩니다. 기능 이름이 pre_receive_secret_detection에서 secret_push_protection으로 변경된 것을 반영하기 위해 일부 API 필드 이름을 변경하고 있습니다.

새 API 필드 이름을 추가했지만, 처음 발표한 것과 달리 GitLab 18.0에서 기존 필드 이름은 더 이상 제거하지 않습니다.

데이터베이스에서 기존 pre_receive_secret_detection_enabled 칼럼은 여전히 제거할 예정이지만, 두 API 필드 이름을 모두 사용할 수 있습니다. 둘 다 새 secret_push_protection_enabled 데이터베이스 칼럼의 값을 반영합니다.

Raspberry Pi 32비트 패키지 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0 버전부터 Raspberry Pi용 32비트 패키지는 더 이상 제공되지 않습니다. 64비트 Raspberry Pi OS를 사용하고 arm64 Debian 패키지를 설치해야 합니다. 32비트 OS에서 데이터를 백업하고 64비트 OS로 복원하는 방법은 PostgreSQL용 운영체제 업그레이드를 참고합니다.

allowed_pull_policies에 없는 컨테이너 이미지 풀 정책 거부#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

구성된 모든 풀 정책은 러너의 config.toml 파일에 지정된 allowed_pull_policies 구성에 존재해야 합니다. 그렇지 않으면 작업은 incompatible pull policy 오류로 실패해야 합니다.

현재 구현에서는 여러 풀 정책이 정의된 경우, 다른 정책이 포함되지 않았더라도 하나 이상의 풀 정책이 allowed-pull-policies의 정책과 일치하면 작업이 통과합니다.

GitLab 18.0에서는 풀 정책 중 어느 것도 allowed-pull-policies와 일치하지 않는 경우에만 작업이 실패합니다. 하지만 현재 동작과 달리 작업은 allowed-pull-policies에 나열된 풀 정책만 사용합니다. 이 차이로 인해 현재 통과하는 작업이 GitLab 18.0에서는 실패할 수 있습니다.

duoProAssignedUsersCount GraphQL 필드 제거#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

18.0에서는 duoProAssignedUsersCount GraphQL 필드를 제거합니다. aiMetrics API와 함께 이 필드를 사용 중이라면 문제가 발생할 수 있으며, 대신 duoAssignedUsersCount를 사용할 수 있습니다. 이 제거는 GitLab Duo Pro와 Duo 시트에 할당된 사용자를 모두 집계하도록 수정하는 작업의 일부입니다.

setPreReceiveSecretDetection GraphQL 뮤테이션을 setSecretPushProtection으로 변경#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

setPreReceiveSecretDetection GraphQL 뮤테이션의 이름이 setSecretPushProtection으로 변경되었습니다. 기능 이름이 pre_receive_secret_detection에서 secret_push_protection으로 변경된 것을 반영하기 위해 뮤테이션 응답의 일부 필드 이름도 변경하고 있습니다.

새 뮤테이션 이름을 추가했지만, 처음 발표한 것과 달리 GitLab 18.0에서 기존 뮤테이션 이름은 더 이상 제거하지 않습니다.

데이터베이스에서 기존 pre_receive_secret_detection_enabled 칼럼은 여전히 제거할 예정이지만, 두 뮤테이션 이름을 모두 사용할 수 있습니다. 둘 다 새 secret_push_protection_enabled 데이터베이스 칼럼의 값을 반영합니다.

GitGuardian 시크릿 탐지를 건너뛰는 옵션 이름 변경#

  • GitLab 17.3에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitGuardian 시크릿 탐지를 건너뛰는 옵션인 [skip secret detection]과 secret_detection.skip_all은 폐기됩니다. 대신 [skip secret push protection]과 secret_push_protection.skip_all을 사용해야 합니다.

새 표기를 사용할 것을 권장하지만, GitLab 18.0에서 기존 옵션을 더 이상 제거하지 않습니다.

add_on_purchase GraphQL 필드를 add_on_purchases로 교체#

  • GitLab 17.4에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GraphQL 필드 add_on_purchase는 GitLab 17.4에서 폐기되고 GitLab 18.0에서 제거됩니다. 대신 add_on_purchases 필드를 사용합니다.

네임스페이스 add_on_purchase GraphQL 필드를 add_on_purchases로 교체#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

네임스페이스 GraphQL 필드 add_on_purchase는 GitLab 17.5에서 폐기되고 GitLab 18.0에서 제거됩니다. 대신 루트의 add_on_purchases 필드를 사용합니다.

SUSE Linux Enterprise Server 15 SP2 지원 종료#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

SUSE Linux Enterprise Server(SLES) 15 SP2의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료되었습니다.

따라서 Linux 패키지 설치에서 SLES SP2 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 SLES 15 SP6으로 업그레이드해야 합니다.

ciJobTokenScopeRemoveProject의 direction GraphQL 인자 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

ciJobTokenScopeRemoveProject 뮤테이션의 direction GraphQL 인자는 폐기됩니다. GitLab 15.9에서 발표된 기본 CI/CD 작업 토큰 범위 변경에 따라 direction 인자는 기본값이 INBOUND가 되며 OUTBOUND는 GitLab 17.0부터 더 이상 유효하지 않습니다. direction 인자는 GitLab 18.0에서 제거합니다.

프로젝트 토큰 접근 방향을 제어하기 위해 direction 인자와 함께 OUTBOUND를 사용 중이라면, 작업 토큰을 사용하는 파이프라인이 인증에 실패할 위험이 있습니다. 파이프라인이 예상대로 계속 실행되도록 하려면 다른 프로젝트를 프로젝트의 허용 목록에 명시적으로 추가해야 합니다.

API에서 노트 기밀성 토글#

  • GitLab 14.10에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

REST 및 GraphQL API로 노트 기밀성을 토글하는 기능은 폐기되는 중입니다. 노트의 기밀 속성 업데이트는 어떤 방법으로도 더 이상 지원되지 않습니다. 경험을 단순화하고 비공개 정보가 의도치 않게 노출되는 것을 막기 위해 이 기능을 변경하고 있습니다.

Gitaly 스토리지를 구성하는 git_data_dirs#

  • GitLab 16.0에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Linux 패키지 인스턴스에서 Gitaly 스토리지를 구성하는 데 git_data_dirs를 사용하는 방식은 16.0부터 폐기되었으며 18.0에서 제거됩니다.

마이그레이션 안내는 git_data_dirs에서 마이그레이션하기를 참고합니다.

GitLab 17.11#

클라이언트 자격 증명 없는 OAuth ROPC 부여 방식 폐기#

  • GitLab 17.11에서 발표
  • GitLab 17.11에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab.com은 2025년 4월 8일부터 OAuth Resource Owner Password Credentials(ROPC) OAuth 부여 방식에 클라이언트 인증을 요구합니다. ROPC는 OAuth 워킹 그룹의 RFC 버전 2.1에서 제외되었습니다. 클라이언트 자격 증명이 없는 기존 ROPC 통합은 이 날짜 이후 서비스 중단을 겪게 됩니다. 중단을 겪는다면 마감일 전에 클라이언트 자격 증명을 포함하도록 통합을 업데이트합니다. 자세한 내용은 저희 블로그에서 확인할 수 있습니다.

GitLab 17.9#

openSUSE Leap 15.5 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.9에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

openSUSE Leap의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료됩니다.

따라서 Linux 패키지 설치에서 openSUSE Leap 15.5 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 openSUSE Leap 15.6으로 업그레이드해야 합니다.

GitLab 17.8#

CentOS 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

CentOS 7의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 CentOS 7 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 다른 운영체제로 업그레이드해야 합니다.

Oracle Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Oracle Linux 7의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료됩니다.

따라서 Linux 패키지 설치에서 Oracle Linux 7 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 Oracle Linux 8로 업그레이드해야 합니다.

Raspberry Pi OS Buster 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Raspberry Pi OS Buster(구 Raspbian Buster)의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 PiOS Buster 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 PiOS Bullseye로 업그레이드해야 합니다.

Red Hat Enterprise Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Red Hat Enterprise Linux(RHEL) 7은 2024년 6월에 유지관리 지원이 종료되었습니다.

따라서 RHEL 7 및 RHEL 7 호환 운영체제용 Linux 패키지는 더 이상 게시하지 않습니다. 계속 지원받으려면 RHEL 8로 업그레이드해야 합니다.

Scientific Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Scientific Linux 7의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 Scientific Linux 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 다른 RHEL 호환 운영체제로 업그레이드해야 합니다.

GitLab 17.7#

/repository/tree REST API 엔드포인트가 404를 반환하도록 오류 처리 변경#

  • GitLab 16.5에서 발표
  • GitLab 17.7에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 17.7에서는 요청한 경로를 찾을 수 없을 때 리포지터리 트리 목록 API 엔드포인트 /projects/:id/repository/tree의 오류 처리 동작이 업데이트됩니다. 이제 이 엔드포인트는 상태 코드 404 Not Found를 반환합니다. 이전에는 상태 코드가 200 OK였습니다.

이 변경은 GitLab 16.5에서 GitLab.com에 적용되었으며, GitLab 17.7부터는 Self-Managed 인스턴스에서도 사용할 수 있습니다.

구현이 누락된 경로에 대해 빈 배열과 함께 200 상태 코드를 받는 것에 의존하고 있다면, 새 404 응답을 처리하도록 오류 처리를 업데이트해야 합니다.

TLS 1.0, 1.1 지원 종료#

  • GitLab 17.4에서 발표
  • GitLab 17.7에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

OpenSSL 버전 1.1.1의 장기 지원(LTS)은 2023년 9월에 종료되었습니다. 따라서 GitLab 17.7에서는 OpenSSL 3이 기본값이 됩니다. GitLab은 OpenSSL 3을 번들로 제공하므로 운영체제를 변경할 필요는 없습니다.

OpenSSL 3으로 업그레이드하면 다음과 같습니다.

  • GitLab은 모든 아웃바운드 및 인바운드 TLS 연결에 TLS 1.2 이상을 요구합니다.
  • TLS/SSL 인증서는 최소 112비트의 보안 수준을 가져야 합니다. 2048비트보다 짧은 RSA, DSA, DH 키와 224비트보다 짧은 ECC 키는 금지됩니다.

자세한 내용은 GitLab 17.5 변경 사항을 참고합니다.

GitLab 17.6#

Debian 10 지원#

  • GitLab 17.3에서 공지
  • GitLab 17.6에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Debian 10의 장기 서비스 및 지원(LTSS)은 2024 년 6 월에 종료되었습니다.

따라서 Linux 패키지 설치에서는 더 이상 Debian 10 배포판을 지원하지 않습니다. 계속 지원을 받으려면 Debian 11 또는 Debian 12로 업그레이드해야 합니다.

GitLab 17.4#

파이프라인 보기에서 Needs 탭 제거#

  • GitLab 17.1에서 공지
  • GitLab 17.4에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

파이프라인 보기의 Needs 탭은 Job dependencies 그룹화 옵션이 적용된 일반 파이프라인 보기와 표시 정보가 중복되므로 제거합니다. 향후에도 메인 파이프라인 그래프의 보기는 계속 개선할 예정입니다.

GitLab 17.3#

FIPS 준수 Secure 분석기가 UBI Minimal에서 UBI Micro로 변경#

  • GitLab 17.2에서 공지
  • GitLab 17.3에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

코드의 보안 취약점을 스캔하는 데 사용하는 일부 분석기의 기본 이미지를 업데이트합니다. Red Hat Universal Base Image(UBI)를 기반으로 하는 분석기 이미지만 변경하므로, 보안 스캔에 FIPS 모드를 별도로 활성화한 경우에만 이 변경의 영향을 받습니다. GitLab 보안 스캔이 사용하는 기본 이미지는 UBI 기반이 아니므로 영향을 받지 않습니다.

GitLab 17.3에서는 UBI 기반 분석기의 기본 이미지를 UBI Minimal에서 불필요한 패키지가 적고 패키지 관리자를 포함하지 않는 UBI Micro로 변경합니다. 업데이트된 이미지는 크기가 더 작아지고 운영체제가 제공하는 패키지의 취약점 영향도 줄어듭니다.

GitLab 지원팀의 지원 성명(Statement of Support)은 분석기 이미지의 특정 내용에 의존하는 커스터마이징을 포함해 문서화되지 않은 커스터마이징을 지원 범위에서 제외합니다. 예를 들어 before_script에서 추가 패키지를 설치하는 방식은 지원되는 수정이 아닙니다. 그럼에도 이러한 유형의 커스터마이징에 의존하고 있다면, 이 변경에 대응하는 방법을 알아보거나 현재 커스터마이징에 대한 피드백을 제공하려면 이 변경에 대한 폐기 이슈를 참고합니다.

GitLab 17.0#

Agent for Kubernetes의 ca-cert-file 옵션 이름 변경#

Kubernetes 용 GitLab 에이전트(agentk)에서 --ca-cert-file 명령줄 옵션과 이에 대응하는 config.caCert Helm 차트 값의 이름이 각각 --kas-ca-cert-file과 config.kasCaCert로 변경되었습니다.

기존 --ca-cert-file과 config.caCert 옵션은 폐기되었으며 GitLab 17.0에서 제거됩니다.

Herokuish에 대한 Auto DevOps 지원 폐기#

Herokuish에 대한 Auto DevOps 지원은 Cloud Native Buildpacks로 대체되며 폐기됩니다. Herokuish에서 Cloud Native Buildpacks로 빌드를 마이그레이션해야 합니다. GitLab 14.0부터 Auto Build는 기본적으로 Cloud Native Buildpacks를 사용합니다.

Cloud Native Buildpacks는 자동 테스트를 지원하지 않으므로 Auto DevOps의 Auto Test 기능도 함께 폐기됩니다.

대시(-) 문자가 포함된 자동 생성 Markdown 앵커 링크#

GitLab은 Markdown 문서나 위키 페이지의 특정 위치로 링크할 수 있도록 모든 헤딩에 대해 앵커 링크를 자동으로 생성합니다. 그러나 일부 예외 상황에서는 자동 생성된 앵커에 많은 사용자가 예상하는 것보다 적은 수의 대시(-) 문자가 포함됩니다. 예를 들어 ## Step - 1 헤딩이 있으면 대부분의 다른 Markdown 도구와 린터는 #step---1을 예상합니다. 하지만 GitLab은 연속된 대시를 하나로 압축해 #step-1이라는 앵커를 생성합니다.

GitLab 17.0에서는 연속된 대시를 더 이상 제거하지 않도록 자동 생성 앵커를 업계 표준에 맞춥니다. Markdown 문서에서 17.0에 여러 대시가 포함될 수 있는 헤딩으로 링크하고 있다면 이 예외 상황을 피하기 위해 헤딩을 수정해야 합니다. 위 예시에서는 ## Step - 1을 ## Step 1로 변경하면 페이지 내 링크가 계속 정상 작동합니다.

CiRunner.projects 기본 정렬이 id_desc로 변경#

CiRunner.projects 필드의 기본 정렬 순서 값이 id_asc에서 id_desc로 변경됩니다. 반환되는 프로젝트의 순서가 id_asc 인 것에 의존하고 있다면, 스크립트에서 이를 명시적으로 지정하도록 변경해야 합니다.

일반 설정의 컴플라이언스 프레임워크#

컴플라이언스 프레임워크 관리 기능을 컴플라이언스 센터(Compliance Center)의 프레임워크 및 프로젝트 보고서로 이동했습니다.

따라서 GitLab 17.0에서는 그룹 및 프로젝트의 General 설정 페이지에서 컴플라이언스 프레임워크 관리 기능을 제거합니다.

Swift 및 OSS 스토리지 드라이버에 대한 컨테이너 레지스트리 지원#

컨테이너 레지스트리는 다양한 오브젝트 스토리지 플랫폼과 연동하기 위해 스토리지 드라이버를 사용합니다. 각 드라이버의 코드는 비교적 독립적이지만 이들 드라이버의 유지 관리 부담은 큽니다. 각 드라이버 구현은 저마다 고유하며 드라이버를 변경하려면 해당 드라이버에 대한 높은 수준의 전문 지식이 필요합니다.

유지 관리 비용을 줄이기 위해 OSS(Object Storage Service)와 OpenStack Swift에 대한 지원을 폐기합니다. 두 드라이버 모두 업스트림 Docker Distribution에서 이미 제거되었습니다. 이를 통해 컨테이너 레지스트리를 오브젝트 스토리지 지원 측면에서 GitLab 제품 전반과 일치시킬 수 있습니다.

OSS는 S3 호환 모드를 제공하므로 지원되는 드라이버로 마이그레이션할 수 없다면 이를 사용하는 것을 고려합니다. Swift는 S3 스토리지 드라이버에도 필요한 S3 API 작업과 호환됩니다.

DAST ZAP 고급 설정 변수 폐기#

GitLab 15.7에서 새로운 브라우저 기반 DAST 분석기가 GA로 제공되면서, 향후 이를 기본 DAST 분석기로 만드는 작업을 진행하고 있습니다. 이를 준비하기 위해 다음 레거시 DAST 변수는 폐기되어 GitLab 17.0에서 제거될 예정입니다: DAST_ZAP_CLI_OPTIONS와 DAST_ZAP_LOG_CONFIGURATION. 이 변수들은 OWASP ZAP 기반의 레거시 DAST 분석기에 대한 고급 설정을 지원했습니다. 새로운 브라우저 기반 분석기는 ZAP의 동작 방식에 특화된 기능이었기 때문에 동일한 기능을 포함하지 않습니다.

이 세 변수는 GitLab 17.0에서 제거됩니다.

의존성 스캐닝의 잘못된 SBOM 메타데이터 속성#

GitLab 17.0에서는 CycloneDX SBOM 보고서의 다음 메타데이터 속성 지원을 제거합니다.

  • gitlab:dependency_scanning:input_file
  • gitlab:dependency_scanning:package_manager

이 속성들은 GitLab 15.7에서 의존성 스캐닝이 생성하는 SBOM에 추가되었습니다. 하지만 이 속성들은 잘못되었으며 GitLab CycloneDX 속성 분류 체계와 일치하지 않았습니다. 이를 해결하기 위해 GitLab 15.11에서 다음과 같이 올바른 속성이 추가되었습니다.

  • gitlab:dependency_scanning:input_file:path
  • gitlab:dependency_scanning:package_manager:name

잘못된 속성은 하위 호환성을 위해 유지되었습니다. 이제 이 속성은 폐기되었으며 17.0에서 제거됩니다.

sbt 1.0.X에 대한 의존성 스캐닝 지원#

매우 오래된 버전의 sbt를 지원하는 것은 유지 관리 비용을 늘리지 않으면서 이 패키지 관리자의 추가 사용 사례에 대한 지원을 개선하는 데 걸림돌이 되고 있습니다.

sbt 1.1.0 버전은 6 년 전에 출시되었으며, 1.0.x에서는 의존성 스캐닝이 더 이상 작동하지 않으므로 사용자는 업그레이드를 권장합니다.

임시 스토리지 증설 관련 GraphQL 필드 폐기#

  • GitLab 16.7에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL 필드 isTemporaryStorageIncreaseEnabled와 temporaryStorageIncreaseEndsOn 이 폐기되었습니다. 이 GraphQL 필드는 임시 스토리지 증설 프로젝트와 관련된 것입니다. 해당 프로젝트는 취소되었으며 이 필드들은 사용되지 않았습니다.

컨테이너 스캐닝용 Grype 스캐너 폐기#

GitLab 컨테이너 스캐닝 분석기에서 Grype 스캐너에 대한 지원은 GitLab 16.9에서 폐기되었습니다.

GitLab 17.0부터 Grype 분석기는 지원 성명(statement of support)에서 설명하는 제한적인 수정을 제외하고는 더 이상 유지 관리되지 않습니다.

사용자는 Trivy 스캐너를 사용하는 CS_ANALYZER_IMAGE의 기본 설정을 사용할 것을 권장합니다.

Grype 분석기 이미지의 현재 메이저 버전은 GitLab 19.0까지 최신 권고 데이터베이스와 운영체제 패키지로 계속 업데이트되며, 그 시점부터 분석기는 더 이상 작동하지 않습니다.

19.0 이후에도 Grype를 계속 사용하려면 GitLab과의 자체 통합을 만드는 방법을 알아보기 위해 보안 스캐너 통합 문서를 참고합니다.

License Scanning CI 템플릿 폐기#

GitLab 17.0에서는 다음 License Scanning CI 템플릿을 제거합니다.

위 템플릿 중 하나라도 포함된 CI 설정은 GitLab 17.0에서 더 이상 작동하지 않습니다.

사용자는 대신 CycloneDX 파일의 라이선스 스캐닝을 사용할 것을 권장합니다.

의존성 스캐닝 및 라이선스 스캐닝에서 Python 3.9 폐기#

GitLab 16.9부터 의존성 스캐닝 및 라이선스 스캐닝의 Python 3.9 지원이 폐기됩니다. GitLab 17.0에서는 Python 3.10 이 의존성 스캐닝 CI/CD 작업의 기본 버전입니다.

GitLab 17.0부터 의존성 스캐닝 및 라이선스 스캐닝 기능은 호환되는 lockfile 없이 Python 3.9를 요구하는 프로젝트를 지원하지 않습니다.

GitLab Runner에서 Windows CMD 폐기#

GitLab 11.11의 Windows Batch 실행자에서 CMD 셸은 PowerShell로 대체되며 GitLab Runner에서 폐기되었습니다. 그 이후에도 GitLab Runner는 CMD 셸을 계속 지원해 왔습니다. 하지만 이로 인해 엔지니어링 팀과 Windows에서 Runner를 사용하는 고객 모두에게 추가적인 복잡성이 발생했습니다. 17.0에서는 GitLab Runner에서 Windows CMD 지원을 완전히 제거할 계획입니다. 고객은 셸 실행자로 Windows에서 러너를 사용할 때 PowerShell을 사용하도록 계획해야 합니다. 고객은 제거 이슈인 이슈 29479에서 피드백을 제공하거나 질문할 수 있습니다.

CiRunnerManager와 중복되는 CiRunner GraphQL 필드 폐기#

이 필드들(architectureName, ipAddress, platformName, revision, version)은 러너 구성 내에서 그룹화되는 러너 매니저가 도입되며 중복되어 GraphQL CiRunner 타입에서 폐기되었습니다.

Terraform Module CI/CD 템플릿에서 fmt 작업 폐기#

Terraform Module CI/CD 템플릿의 fmt 작업은 폐기되었으며 GitLab 17.0에서 제거됩니다. 이는 다음 템플릿에 영향을 미칩니다.

  • Terraform-Module.gitlab-ci.yml
  • Terraform/Module-Base.gitlab-ci.yml

다음을 사용해 파이프라인에 Terraform fmt 작업을 수동으로 다시 추가할 수 있습니다.

fmt:
  image: hashicorp/terraform
  script: terraform fmt -chdir "$TF_ROOT" -check -diff -recursive

OpenTofu CI/CD 컴포넌트의 fmt 템플릿을 사용할 수도 있습니다.

취약점 관리 기능에서 message 필드 폐기#

이 MR은 VulnerabilityCreate GraphQL 뮤테이션의 message 필드와 취약점 내보내기의 AdditionalInfo 칼럼에 있는 message 필드를 폐기합니다. 이 message 필드는 GitLab 16.0에서 보안 보고서 스키마에서 제거되었으며 다른 곳에서도 더 이상 사용되지 않습니다.

GitLab Runner Kubernetes 실행자의 terminationGracePeriodSeconds 폐기#

  • GitLab 16.3에서 공지
  • GitLab 17.0에서 지원 종료
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab Runner Kubernetes 실행자 설정인 terminationGracePeriodSeconds는 폐기되었으며 GitLab 17.0에서 제거됩니다. Kubernetes에서 GitLab Runner 워커 파드의 정리 및 종료를 관리하려면 고객은 대신 cleanupGracePeriodSeconds와 podTerminationGracePeriodSeconds를 설정해야 합니다. cleanupGracePeriodSeconds와 podTerminationGracePeriodSeconds 사용 방법에 대한 자세한 내용은 GitLab Runner Executor 문서를 참고합니다.

기능 플래그 API의 version 필드 폐기#

기능 플래그 REST API의 version 필드는 폐기되었으며 GitLab 17.0에서 제거됩니다.

version 필드가 제거되면 레거시 기능 플래그를 생성할 방법이 없어집니다.

Developer 권한의 취약점 상태 변경 기능 폐기#

Developer가 취약점의 상태를 변경하는 기능은 이제 폐기됩니다. 다가오는 GitLab 17.0 릴리스에서 Developer 권한에서 이 기능을 제거하는 호환성이 깨지는 변경을 진행할 계획입니다. 개발자에게 이 권한을 계속 부여하고자 하는 사용자는 개발자를 위한 커스텀 역할을 생성하고 admin_vulnerability 권한을 추가해 이 접근 권한을 부여할 수 있습니다.

GitLab Self-Managed에서 그룹 Owner의 커스텀 역할 생성 폐기#

GitLab Self-Managed 17.0에서는 그룹 Owner의 커스텀 역할 생성 기능이 제거됩니다. 이 기능은 관리자만 사용할 수 있도록 인스턴스 수준으로 이동합니다. 그룹 Owner는 그룹 수준에서 커스텀 역할을 할당할 수 있습니다.

GitLab.com의 그룹 Owner는 계속해서 커스텀 역할을 관리하고 그룹 수준에서 할당할 수 있습니다.

GitLab Self-Managed에서 API로 커스텀 역할을 관리하는 경우, API 작업을 계속하려면 새로 추가된 인스턴스 엔드포인트가 필요합니다.

  • 인스턴스의 모든 멤버 역할 목록 조회 - GET /api/v4/member_roles
  • 인스턴스에 멤버 역할 추가 - POST /api/v4/member_roles
  • 인스턴스에서 멤버 역할 제거 - DELETE /api/v4/member_roles/:id

GraphQL VulnerabilityType의 hasSolutions 필드 폐기#

GraphQL 필드 Vulnerability.hasSolutions는 폐기되었으며 GitLab 17.0에서 제거됩니다. 대신 Vulnerability.hasRemediations를 사용합니다.

러너 셸 실행자의 레거시 셸 이스케이프 및 인용 방식 폐기#

  • GitLab 15.11에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

변수 확장을 처리하는 러너의 레거시 이스케이프 시퀀스 메커니즘은 Ansi-C 인용 방식을 최적화되지 않은 형태로 구현합니다. 이 방식에서는 러너가 큰따옴표 안에 포함된 인수를 확장하게 됩니다. 15.11부터 러너 셸 실행자의 레거시 이스케이프 및 인용 방식을 폐기합니다.

로그인 페이지 커스텀 텍스트 관련 파라미터 폐기#

설정 API의 sign_in_text와 help_text 파라미터가 폐기됩니다. 로그인 및 신규 사용자 계정 페이지에 커스텀 텍스트를 추가하려면 Appearance API의 description 필드를 사용합니다.

Windows Server 2019 폐기, Windows Server 2022로 대체#

최근 Windows 용 GitLab.com 러너(베타)에서 Windows Server 2022 릴리스를 공지했습니다. 이와 함께 GitLab 17.0에서 Windows 2019를 폐기합니다.

Windows 2022 사용으로 마이그레이션하는 방법에 대한 자세한 내용은 지금 제공되는 GitLab.com 러너용 Windows 2022 지원을 참고합니다.

DingTalk OmniAuth 제공자#

GitLab에 DingTalk OmniAuth 제공자를 제공하는 omniauth-dingtalk gem은 다음 메이저 릴리스인 GitLab 17.0에서 제거됩니다. 이 gem은 사용량이 매우 적으며 JiHu 에디션에 더 적합합니다.

Gitaly 설정의 중복 스토리지#

동일한 스토리지 경로를 가리키는 여러 Gitaly 스토리지를 설정하는 기능은 폐기되며 GitLab 17.0에서 제거됩니다. GitLab 17.0 이상에서는 이러한 유형의 설정이 오류를 일으킵니다.

이러한 유형의 설정은 백그라운드 리포지터리 유지 관리에 문제를 일으킬 수 있고 향후 Gitaly 스토리지 구현과 호환되지 않으므로 이 설정에 대한 지원을 제거합니다.

인스턴스 관리자는 각 스토리지가 고유한 경로로 설정되도록 gitlab.rb 설정 파일의 gitaly['configuration'] 섹션에 있는 storage 항목을 업데이트해야 합니다.

다운스트림 파이프라인의 파일 타입 변수 확장 수정#

이전에는 다른 CI/CD 변수에서 파일 타입 CI/CD 변수를 참조하려고 하면 해당 CI/CD 변수가 파일 내용을 담도록 확장되었습니다. 이 동작은 일반적인 셸 변수 확장 규칙을 따르지 않았기 때문에 잘못된 것이었습니다. CI/CD 변수 참조는 파일 내용이 아니라 파일 경로만 담도록 확장되어야 합니다. 이는 GitLab 15.7에서 대부분의 사용 사례에 대해 수정되었습니다. 안타깝게도 다운스트림 파이프라인에 CI/CD 변수를 전달하는 경우는 아직 수정되지 않은 예외 상황이었지만, 이제 GitLab 17.0에서 수정됩니다.

이 변경으로 .gitlab-ci.yml 파일에 설정된 변수가 파일 변수를 참조해 다운스트림 파이프라인으로 전달될 수 있으며, 해당 파일 변수도 다운스트림 파이프라인으로 함께 전달됩니다. 다운스트림 파이프라인은 변수 참조를 파일 내용이 아니라 파일 경로로 확장합니다.

이 호환성이 깨지는 변경은 다운스트림 파이프라인에서 파일 변수 확장에 의존하는 사용자 워크플로를 방해할 수 있습니다.

Geo: 디자인 및 프로젝트의 레거시 복제 상세 라우트 폐기#

레거시 데이터 타입을 Geo 셀프 서비스 프레임워크로 마이그레이션하는 작업의 일환으로 다음 복제 상세 라우트가 폐기됩니다.

  • 디자인 /admin/geo/replication/designs는 /admin/geo/sites//replication/design_management_repositories로 대체
  • 프로젝트 /admin/geo/replication/projects는 /admin/geo/sites//replication/projects로 대체

GitLab 16.4부터 17.0 까지는 레거시 라우트에 대한 조회가 새 라우트로 자동 리디렉션됩니다. 17.0에서는 이 리디렉션을 제거합니다. 레거시 라우트를 사용할 수 있는 북마크나 스크립트가 있다면 업데이트해야 합니다.

GitLab Helm 차트 값 gitlab.kas.privateApi.tls.* 폐기#

KAS와 Helm 차트 컴포넌트 간의 TLS 통신을 지원하기 위해 global.kas.tls.* Helm 값을 도입했습니다. 기존 값인 gitlab.kas.privateApi.tls.enabled와 gitlab.kas.privateApi.tls.secretName은 폐기되었으며 GitLab 17.0에서 제거될 예정입니다.

새 값은 KAS에 대한 TLS를 활성화하는 더 간소화되고 포괄적인 방법을 제공하므로 gitlab.kas.privateApi.tls.* 대신 global.kas.tls.*를 사용해야 합니다. gitlab.kas.privateApi.tls.* 자세한 내용은 다음을 참고합니다.

GitLab Runner 출처 메타데이터 SLSA v0.2 명세서#

러너는 출처 메타데이터를 생성하며 현재는 기본적으로 SLSA v0.2를 준수하는 명세서를 생성합니다. SLSA v1.0 이 출시되어 이제 GitLab에서 지원되므로 v0.2 명세서는 이제 폐기되며 GitLab 17.0에서 제거될 예정입니다. SLSA v1.0 명세서는 GitLab 17.0에서 새로운 기본 명세서 형식이 될 예정입니다.

지원되지 않는 방식을 통한 GraphQL API 접근#

GitLab 17.0부터 GraphQL 접근은 이미 문서화되어 지원되는 토큰 타입을 통해서만 제한됩니다.

문서화되어 지원되는 토큰 타입을 이미 사용하고 있는 고객에게는 호환성이 깨지는 변경이 없습니다.

GraphQL networkPolicies 리소스 폐기#

networkPolicies GraphQL 리소스는 폐기되었으며 GitLab 17.0에서 제거됩니다. GitLab 15.0부터 이 필드는 데이터를 반환하지 않았습니다.

노트의 GraphQL 필드 confidential 이 internal로 변경#

Note의 confidential 필드는 폐기되며 internal로 이름이 변경됩니다.

GraphQL 필드 registrySizeEstimated 폐기#

명확성을 위해 GraphQL 필드 registrySizeEstimated는 대응하는 필드와 맞추기 위해 containerRegistrySizeIsEstimated로 이름이 변경되었습니다. registrySizeEstimated는 GitLab 16.2에서 폐기되었으며 GitLab 17.0에서 제거됩니다. 대신 GitLab 16.2에서 도입된 containerRegistrySizeIsEstimated를 사용합니다.

GraphQL 필드 totalWeight 폐기#

GraphQL을 사용해 이슈 보드에 있는 이슈의 총 weight를 조회할 수 있습니다. 하지만 totalWeight 필드는 최대 크기가 2147483647로 제한됩니다. 이에 따라 totalWeight는 폐기되며 GitLab 17.0에서 제거됩니다.

대신 GitLab 16.2에서 도입된 totalIssueWeight를 사용합니다.

GraphQL 타입 RunnerMembershipFilter가 CiRunnerMembershipFilter로 이름 변경#

GraphQL 타입 RunnerMembershipFilter는 CiRunnerMembershipFilter로 이름이 변경되었습니다. GitLab 17.0에서는 RunnerMembershipFilter 타입에 대한 별칭이 제거됩니다.

GraphQL: SharedRunnersSetting enum의 DISABLED_WITH_OVERRIDE 값 폐기#

GitLab 17.0에서는 SharedRunnersSetting GraphQL enum 타입의 DISABLED_WITH_OVERRIDE 값이 제거됩니다. 대신 DISABLED_AND_OVERRIDABLE를 사용합니다.

GraphQL: canDestroy 및 canDelete 지원 폐기#

Package Registry 사용자 인터페이스는 GitLab GraphQL API에 의존합니다. 누구나 쉽게 기여할 수 있도록 하려면 프론트엔드가 모든 GitLab 제품 영역에서 일관되게 코딩되는 것이 중요합니다. 하지만 GitLab 16.6 이전에는 Package Registry UI가 제품의 다른 영역과 다르게 권한을 처리했습니다.

16.6에서는 Package Registry를 GitLab의 나머지 부분과 맞추기 위해 Types::PermissionTypes::Package 타입 아래에 새로운 UserPermissions 필드를 추가했습니다. 이 새 필드는 Package, PackageBase, PackageDetailsType 타입의 canDestroy 필드를 대체합니다. 또한 ContainerRepository, ContainerRepositoryDetails, ContainerRepositoryTag의 canDelete 필드도 대체합니다. GitLab 17.0에서는 canDestroy와 canDelete 필드가 제거됩니다.

이는 17.0에서 완료될 호환성이 깨지는 변경입니다.

HashiCorp Vault 통합, 기본적으로 CI_JOB_JWT CI/CD 잡 토큰을 더 이상 사용하지 않음#

JWT와 OIDC를 사용하는 CI 워크플로의 보안을 개선하려는 노력의 일환으로, GitLab 16.0에서는 네이티브 HashiCorp 통합도 업데이트됩니다. secrets:vault 키워드를 사용해 Vault에서 시크릿을 가져오는 프로젝트는 모두 ID 토큰을 사용하도록 구성해야 합니다. ID 토큰은 15.7에서 도입되었습니다.

이 변경에 대비하려면 새로운 id_tokens 키워드를 사용하고 aud 클레임을 구성합니다. 바운드 오디언스(bound audience)에는 https:// 접두사를 붙여야 합니다.

GitLab 15.9~15.11에서는 Limit JSON Web Token (JWT) access 설정을 활성화하여 기존 토큰이 어떤 잡에도 노출되지 않도록 막고 secrets:vault 키워드에 대한 ID 토큰 인증을 활성화할 수 있습니다.

GitLab 16.0 이상에서는 다음과 같이 동작합니다.

  • 이 설정은 제거됩니다.
  • id_tokens 키워드를 사용하는 CI/CD 잡은 secrets:vault와 함께 ID 토큰을 사용할 수 있으며, CI_JOB_JWT* 토큰은 사용할 수 없습니다.
  • id_tokens 키워드를 사용하지 않는 잡은 GitLab 17.0까지 계속 CI_JOB_JWT* 토큰을 사용할 수 있습니다.

Auto DevOps 빌드의 Heroku 이미지 업그레이드#

GitLab 17.0에서 auto-build-image 프로젝트는 heroku/builder:20 이미지에서 heroku/builder:22 이미지로 업그레이드됩니다.

새 이미지의 동작을 테스트하려면 CI/CD 변수 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:22로 설정합니다.

GitLab 17.0 이후에도 heroku/builder:20을 계속 사용하려면 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:20으로 설정합니다.

내부 컨테이너 레지스트리 API 태그 삭제 엔드포인트#

이후 OCI Distribution Spec으로 대체된 Docker Registry HTTP API V2 Spec에는 태그 삭제 작업이 포함되어 있지 않아, 동일한 목적을 달성하기 위해 안전하지 않고 느린 우회 방법(태그가 아니라 매니페스트를 삭제하는 방식)을 사용해야 했습니다.

태그 삭제는 중요한 기능이므로, GitLab 컨테이너 레지스트리에 태그 삭제 작업을 추가하여 V2 API를 Docker 및 OCI distribution spec의 범위 밖으로 확장했습니다.

이후 OCI Distribution Spec도 업데이트를 거쳐 DELETE /v2/<name>/manifests/<tag> 엔드포인트를 이용한 태그 삭제 작업을 갖추게 되었습니다.

그 결과 컨테이너 레지스트리에는 완전히 동일한 기능을 제공하는 엔드포인트가 두 개 남게 되었습니다. DELETE /v2/<name>/tags/reference/<tag>는 GitLab 커스텀 태그 삭제 엔드포인트이고, DELETE /v2/<name>/manifests/<tag>는 GitLab 16.4에서 도입된 OCI 준수 태그 삭제 엔드포인트입니다.

GitLab 커스텀 태그 삭제 엔드포인트에 대한 지원은 GitLab 16.4에서 지원 중단되며, GitLab 17.0에서 제거됩니다.

이 엔드포인트는 공개 GitLab 컨테이너 레지스트리 API가 아니라 내부 컨테이너 레지스트리 애플리케이션 API에서 사용됩니다. 대부분의 컨테이너 레지스트리 사용자는 별도 조치가 필요하지 않습니다. 태그 삭제와 관련된 모든 GitLab UI 및 API 기능은 새로운 OCI 준수 엔드포인트로 전환된 이후에도 그대로 유지됩니다.

내부 컨테이너 레지스트리 API에 접근하여 기존 태그 삭제 엔드포인트를 사용하고 있다면, 새 엔드포인트로 업데이트해야 합니다.

JWT /-/jwks 인스턴스 엔드포인트 지원 중단#

GitLab 17.0에서 구버전 JSON 웹 토큰이 지원 중단됨에 따라, /oauth/discovery/keys의 별칭인 관련 /-/jwks 엔드포인트도 더 이상 필요하지 않아 제거됩니다. 인증 설정에서 jwks_url을 지정해 왔다면 설정을 oauth/discovery/keys로 업데이트하고 엔드포인트에서 /-/jwks 사용을 모두 제거합니다. 인증 설정에서 이미 oauth_discovery_keys를 사용 중이고 엔드포인트에서 /-/jwks 별칭을 사용하고 있다면, 엔드포인트에서 /-/jwks를 제거합니다. 예를 들어 https://gitlab.example.com/-/jwks를 https://gitlab.example.com으로 변경합니다.

레거시 Geo Prometheus 메트릭#

프로젝트를 Geo self-service framework로 마이그레이션함에 따라 여러 Prometheus 메트릭이 지원 중단되었습니다. 다음 Geo 관련 Prometheus 메트릭은 지원 중단되었으며 17.0에서 제거됩니다. 아래 표는 지원 중단된 메트릭과 각각의 대체 메트릭을 정리한 것입니다. 대체 메트릭은 GitLab 16.3.0 이상에서 사용할 수 있습니다.

지원 중단된 메트릭 대체 메트릭
geo_repositories_synced geo_project_repositories_synced
geo_repositories_failed geo_project_repositories_failed
geo_repositories_checksummed geo_project_repositories_checksummed
geo_repositories_checksum_failed geo_project_repositories_checksum_failed
geo_repositories_verified geo_project_repositories_verified
geo_repositories_verification_failed geo_project_repositories_verification_failed
geo_repositories_checksum_mismatch 없음
geo_repositories_retrying_verification 없음

License List 지원 중단#

현재 GitLab에서는 프로젝트와 해당 컴포넌트가 사용하는 모든 라이선스 목록을 License List에서 확인할 수 있습니다. 16.8부터 License List는 지원 중단되었으며 17.0에서 브레이킹 체인지으로 제거될 예정입니다. 이제는 의존성 목록에서 프로젝트나 그룹이 사용하는 모든 라이선스를 확인할 수 있으며, 라이선스별로 필터링도 가능합니다.

sbt 1.0.x에 대한 License Scanning 지원 중단#

GitLab 17.0에서는 sbt 1.0.x에 대한 License Scanning 지원이 제거됩니다.

3.8.8 이상 버전으로 업그레이드할 것을 권장합니다.

Ubuntu 18.04 용 Linux 패키지#

  • GitLab 16.8에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 중단 이슈를 참고합니다.

Ubuntu 18.04에 대한 표준 지원은 2023년 6월에 종료되었습니다.

GitLab 17.0 부터는 Ubuntu 18.04 용 Linux 패키지를 제공하지 않습니다.

GitLab 17.0 이상을 준비하려면 다음과 같이 진행합니다.

  1. GitLab 인스턴스를 실행 중인 서버를 Ubuntu 18.04에서 Ubuntu 20.04 또는 Ubuntu 22.04로 이전합니다.
  2. 현재 사용 중인 Ubuntu 버전에 맞는 Linux 패키지로 GitLab 인스턴스를 업그레이드합니다.

리포지터리 디렉터리 목록 조회 Rake 태스크#

gitlab-rake gitlab:list_repos Rake 태스크는 정상 동작하지 않으며 GitLab 17.0에서 제거됩니다. GitLab을 마이그레이션하는 경우 백업 및 복원을 대신 사용합니다.

GraphQL API로 Package 설정을 변경할 수 있는 Maintainer 권한#

Maintainer 권한을 가진 사용자가 GraphQL API를 사용해 그룹의 Packages and registries 설정을 변경할 수 있는 기능은 GitLab 15.8에서 지원 중단되었으며 GitLab 17.0에서 제거됩니다. 이 설정에는 다음이 포함됩니다.

GitLab 17.0 이상에서는 그룹의 Packages and registries 설정을 GitLab UI 또는 GraphQL API로 변경하려면 그룹에 대한 Owner 권한이 있어야 합니다.

dependency scanning 및 license scanning의 Maven 3.8.8 미만 버전 지원#

GitLab 17.0에서는 dependency scanning 및 license scanning에서 Maven 3.8.8 미만 버전 지원이 제거됩니다.

3.8.8 이상 버전으로 업그레이드할 것을 권장합니다.

Sidekiq 옵션의 min concurrency 및 max concurrency#

Linux 패키지(Omnibus) 설치의 경우, sidekiq['min_concurrency'] 및 sidekiq['max_concurrency'] 설정은 GitLab 16.9에서 지원 중단되며 GitLab 17.0에서 제거됩니다.

GitLab 16.9 이상에서는 sidekiq['concurrency']를 사용해 각 프로세스의 스레드 수를 명시적으로 설정할 수 있습니다.

위 변경 사항은 Linux 패키지(Omnibus) 설치에만 적용됩니다.

GitLab Helm 차트 설치의 경우, sidekiq 서브차트에 extraEnv로 SIDEKIQ_CONCURRENCY_MIN 및/또는 SIDEKIQ_CONCURRENCY_MAX를 전달하는 방식은 GitLab 16.10에서 지원 중단되며 GitLab 17.0에서 제거됩니다.

concurrency 옵션을 사용해 각 프로세스의 스레드 수를 명시적으로 설정할 수 있습니다.

/users REST API 엔드포인트의 오프셋 페이지네이션 지원 중단#

/users REST API의 오프셋 페이지네이션은 GitLab 16.5에서 지원 중단되었으며, GitLab 17.0에서 제거됩니다. 대신 키셋 페이지네이션을 사용합니다.

구버전 JSON 웹 토큰 지원 중단#

OIDC를 지원하는 ID 토큰은 GitLab 15.7에서 도입되었습니다. 이 토큰은 기존 JSON 웹 토큰(JWT)보다 구성 가능한 옵션이 많고 OIDC를 준수하며, ID 토큰이 명시적으로 구성된 CI/CD 잡에서만 사용할 수 있습니다. ID 토큰은 모든 잡에 노출되는 기존 CI_JOB_JWT* JSON 웹 토큰보다 안전하며, 그 결과 다음과 같은 기존 JSON 웹 토큰은 지원 중단됩니다.

  • CI_JOB_JWT
  • CI_JOB_JWT_V1
  • CI_JOB_JWT_V2

이 변경에 대비하려면 파이프라인이 지원 중단된 토큰 대신 ID 토큰을 사용하도록 구성합니다. OIDC 준수를 위해 iss 클레임은 이제 정규화된 도메인 이름(예: https://example.com)을 사용하며, 이는 이전에 CI_JOB_JWT_V2 토큰과 함께 도입되었습니다.

GitLab 15.9~15.11에서는 Limit JSON Web Token (JWT) access 설정을 활성화하여 기존 토큰이 어떤 잡에도 노출되지 않도록 막고 secrets:vault 키워드에 대한 ID 토큰 인증을 활성화할 수 있습니다.

GitLab 16.0 이상에서는 다음과 같이 동작합니다.

  • 이 설정은 제거됩니다.
  • id_tokens 키워드를 사용하는 CI/CD 잡은 secrets:vault와 함께 ID 토큰을 사용할 수 있으며, CI_JOB_JWT* 토큰은 사용할 수 없습니다.
  • id_tokens 키워드를 사용하지 않는 잡은 GitLab 17.0까지 계속 CI_JOB_JWT* 토큰을 사용할 수 있습니다.

GitLab 17.0에서는 지원 중단된 토큰이 완전히 제거되어 CI/CD 잡에서 더 이상 사용할 수 없습니다.

OmniAuth Facebook 지원 중단#

OmniAuth Facebook 지원은 GitLab 17.0에서 제거됩니다. 마지막 gem 릴리스는 2021년이었으며 현재 유지 관리되지 않고 있습니다. 현재 사용률은 0.1% 미만입니다. OmniAuth Facebook을 사용 중이라면 지원 종료 전에 지원되는 다른 제공자로 전환합니다.

API 페이로드의 패키지 파이프라인 페이지네이션 적용#

/api/v4/projects/:id/packages에 대한 API 요청은 페이지네이션된 패키지 목록을 반환합니다. 각 패키지는 이 응답에서 연결된 모든 파이프라인을 나열합니다. 이는 성능에 영향을 줄 수 있는데, 패키지 하나에 수백 또는 수천 개의 파이프라인이 연결될 수 있기 때문입니다.

17.0 마일스톤에서는 API 응답에서 pipelines 속성을 제거합니다.

PostgreSQL 13 지원 종료#

GitLab은 PostgreSQL에 대한 연간 업그레이드 주기를 따릅니다.

PostgreSQL 13 지원은 GitLab 17.0에서 제거될 예정입니다. GitLab 17.0에서는 PostgreSQL 14가 최소 요구 버전이 됩니다.

PostgreSQL 13은 GitLab 16 릴리스 주기 동안 계속 지원됩니다. GitLab 17.0 이전에 미리 업그레이드하려는 인스턴스를 위해 PostgreSQL 14도 지원됩니다. Omnibus Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면, 16.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 수 있는 충분한 디스크 공간을 확보합니다. 자세한 내용은 Omnibus 데이터베이스 문서를 참고합니다.

Proxy 기반 DAST 지원 중단#

GitLab 17.0 부터는 Proxy 기반 DAST가 지원되지 않습니다. 동적 분석을 통한 보안 취약점 탐지를 계속 진행하려면 Browser 기반 DAST로 마이그레이션합니다. Proxy 기반 DAST 위에 구축된 인큐베이팅 기능인 Breach and Attack Simulation도 이번 지원 중단에 포함되며 17.0 이후에는 지원되지 않습니다.

Sidekiq 실행 시 큐 선택기(queue selector) 지원 중단#

  • GitLab 15.9에서 공지
  • GitLab 16.0에서 지원 종료
  • GitLab 17.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 중단 이슈를 참고합니다.

큐 선택기(queue selector)를 사용해 Sidekiq를 실행하는 방식(여러 프로세스가 특정 큐 집합을 리스닝하도록 하는 방식)과 negate 설정은 지원 중단되며 17.0에서 완전히 제거됩니다.

큐 선택기 대신 모든 프로세스가 모든 큐를 리스닝하도록 마이그레이션할 수 있습니다. 예를 들어 Sidekiq가 현재 4개 프로세스(/etc/gitlab/gitlab.rb의 sidekiq['queue_groups']에 4개 요소로 표시)로 큐 선택기(sidekiq['queue_selector'] = true)를 사용해 실행 중이라면, Sidekiq가 4개 프로세스 모두에서 모든 큐를 리스닝하도록 변경할 수 있습니다. 예를 들어 sidekiq['queue_groups'] = ['*'] * 4와 같이 설정합니다. 이 방식은 Reference Architecture에서도 권장됩니다. 단, Sidekiq는 머신의 CPU 개수만큼 프로세스를 효과적으로 실행할 수 있다는 점에 유의합니다.

대부분의 인스턴스에는 위 방식을 권장하지만, GitLab.com에서도 사용 중인 라우팅 규칙(routing rules)을 사용해 Sidekiq를 실행할 수도 있습니다. 큐 선택기에서 라우팅 규칙으로 마이그레이션하는 가이드를 참고합니다. 잡이 완전히 유실되지 않도록 마이그레이션 시 주의가 필요합니다.

Linux 용 GitLab.com 소형 러너의 태그 제거#

역사적인 이유로, Linux 용 GitLab.com 소형 러너는 레이블처럼 사용되던 태그가 많이 붙어 있었습니다. 저희는 태그를 saas-linux-small-amd64 하나로 단순화하여 모든 GitLab.com 러너에서 일관되게 사용하고자 합니다.

다음 태그를 지원 중단합니다: docker, east-c, gce, git-annex, linux, mongo, mysql, postgres, ruby, shared.

자세한 내용은 Removing tags from our small SaaS runner on Linux를 참고합니다.

Required Pipeline Configuration 지원 중단#

Required pipeline configuration은 GitLab 17.0에서 제거됩니다. 이는 Ultimate 티어의 GitLab Self-Managed 사용자에게 영향을 미칩니다.

Required pipeline configuration은 다음 중 하나로 대체해야 합니다.

이러한 대안은 필수 파이프라인을 특정 컴플라이언스 프레임워크 레이블에 할당할 수 있어 더 큰 유연성을 제공하므로 권장됩니다.

컴플라이언스 파이프라인은 향후 지원 중단되어 보안 정책으로 마이그레이션될 예정입니다. 자세한 내용은 마이그레이션 및 지원 중단 에픽을 참고합니다.

GitLab 17.0에서 SAST 분석기 커버리지 변경#

GitLab SAST에서 기본으로 사용되는 분석기 수를 줄이고 있습니다. 이는 다양한 프로그래밍 언어에서 더 빠르고 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환입니다.

GitLab 17.0에서는 다음과 같이 변경됩니다.

  1. SAST CI/CD 템플릿에서 일부 언어별 분석기를 제거하고, 해당 커버리지를 Semgrep 기반 분석기의 GitLab 지원 탐지 규칙으로 대체합니다. 다음 분석기는 지원 중단되었으며 GitLab 17.0에서 지원 종료됩니다.
    1. Brakeman (Ruby, Ruby on Rails)
    2. Flawfinder (C, C++)
    3. MobSF (Android, iOS)
    4. NodeJS Scan (Node.js)
    5. PHPCS Security Audit (PHP)
  2. SAST CI/CD 템플릿을 변경하여 Kotlin 및 Scala 코드에 대한 SpotBugs 기반 분석기 실행을 중단합니다. 이 언어들은 대신 Semgrep 기반 분석기의 GitLab 지원 탐지 규칙으로 스캔됩니다.

지원 중단된 분석기는 즉시 보안 업데이트만 제공되며, 그 외 일반적인 개선이나 업데이트는 보장되지 않습니다. 분석기가 GitLab 17.0에서 지원 종료된 이후에는 더 이상 업데이트가 제공되지 않습니다. 다만 이 분석기들에 대해 기존에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 잡 정의를 통해 실행하는 기능을 제거하지는 않습니다.

취약점 관리 시스템은 기존 결과 대부분을 새로운 탐지 규칙과 매칭하도록 업데이트합니다. 새 분석기로 마이그레이션되지 않은 결과는 자동으로 해결 처리됩니다. 자세한 내용은 취약점 변환 문서를 참고합니다.

제거되는 분석기에 커스터마이징을 적용했거나, 현재 파이프라인에서 Semgrep 기반 분석기를 비활성화하고 있다면 이 변경에 대한 지원 중단 이슈에 설명된 대로 조치를 취해야 합니다.

_EXCLUDED_ANALYZERS 변수를 사용하는 스캔 실행 정책의 프로젝트 변수 재정의#

SEP 변수를 최고 우선순위로 적용하는 기능을 제공하고 검증하는 과정에서, 파이프라인 설정에서 _EXCLUDED_PATHS는 설정할 수 있지만 정책과 파이프라인 설정 양쪽 모두에서 _EXCLUDED_ANALYZERS는 설정할 수 없게 되는 의도치 않은 동작을 발견했습니다.

스캔 실행 변수가 올바르게 적용되도록, GitLab 스캔 액션을 사용하는 스캔 실행 정책에 _EXCLUDED_ANALYZERS 또는 _EXCLUDED_PATHS 변수가 지정되면 이제 이 변수가 제외 분석기에 대해 정의된 모든 프로젝트 변수를 재정의합니다.

사용자는 17.0 이전에 기능 플래그를 활성화하여 이 동작을 강제할 수 있습니다. 17.0에서는 _EXCLUDED_ANALYZERS/_EXCLUDED_PATHS 변수를 사용하는 프로젝트 중 해당 변수를 정의한 스캔 실행 정책이 있는 경우 기본적으로 재정의됩니다.

Secure 분석기 주 버전 업데이트#

Secure 스테이지는 GitLab 17.0 릴리스에 맞춰 분석기의 주 버전을 올릴 예정입니다.

기본으로 포함된 템플릿을 사용하지 않거나 분석기 버전을 고정해 둔 경우, 고정된 버전을 제거하거나 최신 주 버전으로 업데이트하도록 CI/CD 잡 정의를 업데이트해야 합니다.

GitLab 16.0~16.11 사용자는 GitLab 17.0 릴리스 전까지는 평소와 같이 분석기 업데이트를 계속 받으며, 이후로는 새로 수정된 버그와 새 기능이 새 주 버전의 분석기에서만 릴리스됩니다.

유지 관리 정책에 따라 지원 중단된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최근 3개 마이너 릴리스 이내에서 백포트됩니다.

구체적으로 다음 분석기는 지원 중단되며 GitLab 17.0 릴리스 이후로는 더 이상 업데이트되지 않습니다.

  • Container scanning: 버전 6
  • Dependency scanning: 버전 4
  • DAST: 버전 4
  • DAST API: 버전 3
  • Fuzz API: 버전 3
  • IaC scanning: 버전 4
  • Secret detection: 버전 5
  • Static application security testing (SAST): 모든 분석기의 버전 4
    • brakeman
    • flawfinder
    • kubesec
    • mobsf
    • nodejs-scan
    • phpcs-security-audit
    • pmd-apex
    • semgrep
    • sobelow
    • spotbugs

보안 정책 필드 match_on_inclusion 지원 중단#

스캔 결과 정책에 대한 추가 필터 지원에서, newly_detected 필드를 new_needs_triage와 new_dismissed 두 옵션으로 분리했습니다. 보안 정책 YAML에 두 옵션을 모두 포함하면 기존 newly_detected 필드와 동일한 결과를 얻을 수 있습니다. 다만 이제는 new_needs_triage만 사용해 이미 기각(dismiss)된 결과를 제외하도록 필터를 좁힐 수 있습니다. 에픽 10203의 논의에 따라, YAML 정의를 더 명확히 하기 위해 match_on_inclusion 필드의 이름을 match_on_inclusion_license로 변경했습니다.

보안 정책 필드 newly_detected 지원 중단#

스캔 결과 정책에 대한 추가 필터 지원에서, newly_detected 필드를 new_needs_triage와 new_dismissed 두 옵션으로 분리했습니다. 보안 정책 YAML에 두 옵션을 모두 포함하면 기존 newly_detected 필드와 동일한 결과를 얻을 수 있습니다. 다만 이제는 new_needs_triage만 사용해 이미 기각(dismiss)된 결과를 제외하도록 필터를 좁힐 수 있습니다.

셀프 호스팅 Sentry 21.4.1 이하 버전 지원#

셀프 호스팅 Sentry 21.4.1 이하 버전 지원은 지원 중단되었으며 GitLab 17.0에서 제거됩니다.

셀프 호스팅 Sentry 버전이 21.4.1 이하라면, GitLab 17.0 이상으로 업그레이드한 이후 GitLab 인스턴스에서 오류를 수집하지 못할 수 있습니다. GitLab 인스턴스에서 Sentry 인스턴스로 계속 오류를 전송하려면 Sentry를 21.5.0 이상으로 업그레이드합니다. 자세한 내용은 Sentry 문서를 참고합니다.

Note

이 지원 중단은 관리자를 위한 GitLab 인스턴스 오류 추적 기능에 해당합니다. 이 지원 중단은 개발자가 직접 배포한 애플리케이션을 위한 GitLab 오류 추적과는 관련이 없습니다.

백업용 커스텀 스키마 설정 지원 중단#

Linux 패키지 설치의 경우 /etc/gitlab/gitlab.rb에서 gitlab_rails['backup_pg_schema'] = '<schema_name>'을 설정하여, 셀프 컴파일 설치의 경우 config/gitlab.yml을 편집하여 백업에 커스텀 스키마를 사용하도록 GitLab을 구성할 수 있었습니다.

이 설정은 존재했지만 실제로는 아무런 효과가 없었고 의도한 목적을 수행하지 못했습니다. 이 설정은 GitLab 17.0에서 제거됩니다.

GitHub 임포터 Rake 태스크#

GitLab 16.6에서 GitHub 임포터 Rake 태스크는 지원 중단되었습니다. 이 Rake 태스크는 API가 지원하는 여러 기능이 빠져 있으며 적극적으로 유지 관리되지 않습니다.

GitLab 17.0에서 이 Rake 태스크는 제거됩니다.

대신 API 또는 UI를 사용해 GitHub 리포지터리를 임포트할 수 있습니다.

Visual Reviews 도구 지원 중단#

제한적인 고객 사용률과 기능으로 인해, Review Apps 용 Visual Reviews 기능은 지원 중단되며 제거될 예정입니다. 별도의 대체 기능은 계획되어 있지 않으며, 사용자는 GitLab 17.0 이전에 Visual Reviews 사용을 중단해야 합니다.

gitlab-runner exec 명령 지원 중단#

gitlab-runner exec 명령은 지원 중단되었으며 GitLab Runner 16.0에서 완전히 제거됩니다. gitlab-runner exec 기능은 원래 GitLab 인스턴스에 변경 사항을 커밋하지 않고도 로컬 시스템에서 GitLab CI 파이프라인을 검증할 수 있도록 개발되었습니다. 하지만 GitLab CI가 계속 발전하면서 모든 GitLab CI 기능을 gitlab-runner exec에 그대로 복제하는 것은 더 이상 현실적이지 않았습니다. 파이프라인 문법과 검증 시뮬레이션은 GitLab 파이프라인 에디터에서 사용할 수 있습니다.

Kubernetes 용 GitLab 에이전트의 풀 기반 배포 기능 지원 중단#

Flux 및 관련 통합을 우선하여 Kubernetes 용 GitLab 에이전트에 내장된 풀 기반 배포 기능을 지원 중단합니다.

Kubernetes 용 GitLab 에이전트 자체는 지원 중단되지 않습니다. 이번 변경은 에이전트의 풀 기반 기능에만 영향을 미칩니다. 그 외 모든 기능은 그대로 유지되며, GitLab은 Kubernetes 용 에이전트를 계속 지원합니다.

풀 기반 배포에 에이전트를 사용 중이라면 Flux로 마이그레이션해야 합니다. Flux는 GitOps를 위한 성숙한 CNCF 프로젝트이므로, 저희는 2023년 2월 Flux를 GitLab과 통합하기로 결정했습니다.

GitLab Self-Managed의 Twitter OmniAuth 로그인 옵션 지원 중단#

Twitter OAuth 1.0a OmniAuth는 사용률이 낮고 gem 지원이 부족하여 GitLab Self-Managed에서 지원 중단되며 GitLab 17.0에서 제거됩니다. 대신 지원되는 다른 OmniAuth 제공자를 사용합니다.

통합 승인 규칙 지원 종료#

통합 승인 규칙은 더 많은 유연성을 제공하는 다중 승인 규칙으로 대체되어 지원이 종료됩니다. 브레이킹 체인지 없이는 통합 승인 규칙을 다중 승인 규칙으로 마이그레이션하지 못할 수 있습니다. 수동 마이그레이션을 돕기 위해 마이그레이션 문서를 도입했습니다.

통합 승인 규칙이 제거되기 전에 수동으로 마이그레이션하지 않으면 GitLab 이 설정을 자동으로 마이그레이션합니다. 다중 승인 규칙은 더 세밀한 승인 규칙 설정을 허용하므로, 마이그레이션을 GitLab에 맡기면 자동 마이그레이션 결과가 원하는 것보다 더 제한적인 규칙이 될 수 있습니다. 예상보다 더 많은 승인이 필요한 문제가 있다면 마이그레이션 규칙을 확인합니다.

GitLab 15.11에서 통합 승인 규칙에 대한 UI 지원이 제거되었습니다. API 로는 여전히 통합 승인 규칙에 접근할 수 있습니다.

Linux 용 GitLab.com 러너의 운영체제 버전 업그레이드#

GitLab은 Linux 용 GitLab.com 러너의 작업 실행에 사용되는 임시 VM의 컨테이너 최적화 운영체제(COS)를 업그레이드합니다. 이 COS 업그레이드에는 Docker Engine을 19.03.15 버전에서 23.0.5 버전으로 업그레이드하는 작업이 포함되며, 알려진 호환성 문제가 발생합니다.

20.10 버전 이전의 Docker-in-Docker 또는 v1.9.0 이전의 Kaniko 이미지는 컨테이너 런타임을 감지하지 못하고 실패합니다.

자세한 내용은 Linux 용 SaaS 러너의 운영체제 버전 업그레이드를 참고합니다.

취약점 confidence 필드#

GitLab 15.3에서 버전 15 미만의 보안 리포트 스키마 지원이 종료되었습니다. 취약점 발견 항목의 confidence 속성은 15-0-0 이전 스키마 버전에만 존재하며, GitLab 15.4가 15-0-0 스키마 버전을 지원하므로 사실상 지원이 종료된 상태입니다. 리포트와 공개 API 간 일관성을 유지하기 위해, GraphQL API의 취약점 관련 컴포넌트에 있는 confidence 속성은 이제 지원이 종료되며 17.0에서 제거됩니다.

after_script 키워드가 취소된 작업에서도 실행됨#

after_script CI/CD 키워드는 작업의 메인 script 섹션 이후에 추가 명령을 실행하는 데 사용됩니다. 이는 작업에서 사용한 환경이나 기타 리소스를 정리하는 용도로 흔히 쓰입니다. 많은 사용자에게 작업이 취소되면 after_script 명령이 실행되지 않는다는 점은 예상치 못한 바람직하지 않은 동작이었습니다. 17.0에서는 작업이 취소된 이후에도 명령을 실행하도록 이 키워드가 업데이트됩니다. after_script 키워드를 사용하는 CI/CD 설정이 취소된 작업에서도 실행되는 상황을 처리할 수 있는지 확인합니다.

dependency_files 지원 종료#

현재 GitLab에서 프로젝트의 의존성 목록은 의존성 스캐닝 리포트의 dependency_files 콘텐츠를 사용해 생성됩니다. 그러나 그룹 의존성 목록과의 일관성을 유지하기 위해, GitLab 17.0부터 프로젝트 의존성 목록은 PostgreSQL 데이터베이스에 저장된 CycloneDX SBOM 리포트 아티팩트를 사용합니다. 이에 따라 의존성 스캐닝 리포트 스키마의 dependency_files 속성은 지원이 종료되며 17.0에서 제거됩니다.

이 지원 종료의 일환으로 dependency_path 역시 지원이 종료되어 17.0에서 제거됩니다. GitLab은 유사한 정보를 제공하기 위해 CycloneDX 사양을 사용하는 의존성 그래프 구현을 진행합니다.

또한 운영체제 컴포넌트 목록을 제공하던 컨테이너 스캐닝 CI 작업은 CycloneDX SBOM 리포트로 대체되어 더 이상 의존성 스캐닝 리포트를 생성하지 않습니다. 컨테이너 스캐닝용 CS_DISABLE_DEPENDENCY_LIST 환경 변수는 더 이상 사용되지 않으며 17.0에서 함께 제거됩니다.

DORA API의 metric 필터와 value 필드#

이제 새로운 metrics 필드를 사용해 여러 DORA 지표를 동시에 조회할 수 있습니다. GraphQL DORA API의 metric 필터와 value 필드는 GitLab 17.0에서 제거됩니다.

omniauth-azure-oauth2 gem 지원 종료#

GitLab 사용자는 omniauth-azure-oauth2 gem을 사용해 GitLab에 인증할 수 있습니다. 17.0에서는 이 gem 이 omniauth_openid_connect gem으로 대체됩니다. 새 gem은 기존 gem과 동일한 기능을 모두 포함하면서도 업스트림 유지 관리를 받고 있어 보안과 중앙 집중식 관리 측면에서 더 낫습니다.

이 변경으로 인해 사용자는 마이그레이션 시점에 OAuth 2.0 공급자에 다시 연결해야 합니다. 문제를 방지하려면 17.0 이전 언제든 omniauth_openid_connect를 새 공급자로 추가합니다. 사용자에게는 새 로그인 버튼이 표시되며 자격 증명을 수동으로 다시 연결해야 합니다. 17.0 이전에 omniauth_openid_connect gem을 적용하지 않으면 사용자는 Azure 로그인 버튼으로 더 이상 로그인할 수 없으며, 관리자가 올바른 gem을 적용할 때까지 사용자 이름과 비밀번호로 로그인해야 합니다.

omnibus_gitconfig 설정 항목 지원 종료#

omnibus_gitconfig['system'] 설정 항목은 지원이 종료되었습니다. Gitaly 용 커스텀 Git 설정을 지정하는 데 omnibus_gitconfig['system']을 사용하고 있다면, GitLab 17.0으로 업그레이드하기 전에 Gitaly 설정을 통해 Git을 직접 구성해야 합니다. 설정 키는 gitaly[:configuration][:git][:config] 아래에 지정합니다.

예:

  gitaly[:configuration][:git][:config] = [
    {
      key: 'fetch.fsckObjects',
      value: 'true',
    },
    # ...
  ]

설정 키의 형식은 CLI 플래그 git -c <configuration>을 통해 git에 전달되는 형식과 일치해야 합니다.

기존 키를 예상되는 형식으로 변환하는 데 어려움이 있다면, 올바른 형식의 기존 키를 Gitaly의 Linux 패키지 생성 설정 파일에서 확인합니다. 기본적으로 이 설정 파일은 /var/opt/gitlab/gitaly/config.toml에 있습니다.

Gitaly가 관리하는 다음 설정 옵션은 제거해야 합니다. 이 키들은 Gitaly로 마이그레이션할 필요가 없습니다.

  • pack.threads=1
  • receive.advertisePushOptions=true
  • receive.fsckObjects=true
  • repack.writeBitmaps=true
  • transfer.hideRefs=^refs/tmp/
  • transfer.hideRefs=^refs/keep-around/
  • transfer.hideRefs=^refs/remotes/
  • core.alternateRefsCommand="exit 0 #"
  • core.fsyncObjectFiles=true
  • fetch.writeCommitGraph=true

postgres_exporter['per_table_stats'] 설정 항목#

Linux 패키지는 번들로 제공되는 PostgreSQL exporter 용 커스텀 쿼리를 제공하며, 여기에는 per_table_stats 쿼리가 포함되어 있었고 이는 postgres_exporter['per_table_stats'] 설정 항목으로 제어되었습니다.

PostgreSQL exporter는 이제 동일한 지표를 제공하는 stat_user_tables 컬렉터를 제공합니다. postgres_exporter['per_table_stats']를 활성화해 두었다면 대신 postgres_exporter['flags']['collector.stat_user_tables']를 활성화합니다.

projectFingerprint GraphQL 필드#

취약점 발견 항목의 project_fingerprint 속성은 지원이 종료되고 uuid 속성으로 대체됩니다. 발견 항목을 식별하는 데 UUIDv5 값을 사용하면 관련 엔터티를 발견 항목과 쉽게 연결할 수 있습니다. project_fingerprint 속성은 더 이상 발견 항목을 추적하는 데 사용되지 않으며 GitLab 17.0에서 제거됩니다. 16.1부터 project_fingerprint의 출력값은 uuid 필드와 동일한 값을 반환합니다.

공개 프로젝트의 repository_download_operation 감사 이벤트 유형#

감사 이벤트 유형 repository_download_operation은 현재 공개 프로젝트와 비공개 프로젝트를 포함한 모든 프로젝트 다운로드에 대해 데이터베이스에 저장됩니다. 공개 프로젝트의 경우 인증되지 않은 사용자도 이 이벤트를 트리거할 수 있으므로 감사 목적으로는 그다지 유용하지 않습니다.

GitLab 17.0부터 repository_download_operation 감사 이벤트 유형은 비공개 또는 내부 프로젝트에서만 트리거됩니다. 새 감사 이벤트 유형인 public_repository_download_operation을 공개 프로젝트 다운로드용으로 추가하며, 이 새 이벤트 유형은 스트리밍 전용입니다.

npm 패키지 업로드가 이제 비동기로 처리됨#

GitLab 패키지 레지스트리는 npm과 Yarn을 지원합니다. npm 또는 Yarn 패키지를 업로드하면 이 업로드는 동기 방식으로 처리됩니다. 그러나 동기 업로드에는 알려진 문제가 있습니다. 예를 들어 GitLab은 오버라이드 같은 기능을 지원하지 않습니다.

17.0부터 npm과 Yarn 패키지는 비동기로 업로드됩니다. 패키지가 게시되는 즉시 사용 가능할 것으로 기대하는 파이프라인이 있을 수 있으므로 이는 브레이킹 체인지입니다.

우회 방법으로 패키지 API를 사용해 패키지를 확인해야 합니다.

GitLab 16.9#

lfs_check 기능 플래그 지원 종료#

  • GitLab 16.6에서 발표
  • GitLab 16.9에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

GitLab 16.9에서 lfs_check 기능 플래그를 제거합니다. 이 기능 플래그는 4 년 전에 도입되었으며 LFS 무결성 검사 활성화 여부를 제어합니다. 이 기능 플래그는 기본적으로 활성화되어 있지만, 일부 고객은 LFS 무결성 검사에서 성능 문제를 겪어 명시적으로 비활성화했습니다.

LFS 무결성 검사의 성능을 대폭 개선한 후, 이제 이 기능 플래그를 제거할 준비가 되었습니다. 플래그가 제거되면 현재 비활성화되어 있는 모든 환경에서 이 기능이 자동으로 켜집니다.

해당 환경에서 이 기능 플래그가 비활성화되어 있고 성능 문제가 우려된다면, 16.9에서 제거되기 전에 미리 활성화하여 성능을 모니터링합니다. 활성화 후 성능 문제가 발견되면 이 피드백 이슈에 알려주길 바랍니다.

GitLab 16.8#

openSUSE Leap 15.4 패키지#

  • GitLab 16.5에서 발표
  • GitLab 16.8에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

openSUSE Leap 15.4에 대한 지원 및 보안 업데이트는 2023 년 11 월 종료됩니다.

GitLab 15.4는 openSUSE Leap 15.5 용 패키지를 제공했습니다. GitLab 15.8 이후 버전은 openSUSE Leap 15.4 용 패키지를 제공하지 않습니다.

GitLab 15.8 이후 버전을 준비하려면 다음을 수행해야 합니다.

  1. 인스턴스를 openSUSE Leap 15.4에서 openSUSE Leap 15.5로 이전합니다.
  2. openSUSE Leap 15.4 용 GitLab 제공 패키지에서 openSUSE Leap 15.5 용 GitLab 제공 패키지로 전환합니다.

GitLab 16.7#

Shimo 통합#

Shimo Workspace 통합은 지원이 종료되었으며 JiHu GitLab 코드베이스로 이전됩니다.

user_email_lookup_limit API 필드#

user_email_lookup_limit API 필드는 GitLab 14.9에서 지원이 종료되고 GitLab 16.7에서 제거됩니다. 이 기능이 제거되기 전까지 user_email_lookup_limit은 search_rate_limit의 별칭으로 처리되어 기존 워크플로는 계속 동작합니다.

user_email_lookup_limit의 속도 제한을 변경하는 API 호출은 모두 search_rate_limit을 대신 사용해야 합니다.

GitLab 16.6#

작업 토큰 허용 목록이 공개 및 내부 프로젝트까지 적용됨#

16.6부터 이 프로젝트에 대한 접근 제한이 활성화되어 있으면, 공개(public) 또는 내부(internal) 프로젝트는 프로젝트의 허용 목록에 없는 프로젝트의 작업 토큰 요청을 더 이상 승인하지 않습니다.

이 프로젝트에 대한 접근 제한 설정이 활성화된 공개 또는 내부 프로젝트가 있다면, 계속 승인을 받으려면 작업 토큰 요청을 보내는 모든 프로젝트를 해당 프로젝트의 허용 목록에 추가해야 합니다.

GitLab 16.5#

잠긴 LDAP 그룹에 LDAP 미동기화 멤버 추가 지원 종료#

  • GitLab 16.0에서 발표
  • GitLab 16.5에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

ldap_settings_unlock_groups_by_owners 기능 플래그를 활성화하면 LDAP과 동기화되지 않은 사용자를 잠긴 LDAP 그룹에 추가할 수 있었습니다. 이 기능은 항상 기본적으로 비활성화되어 있었고 기능 플래그 뒤에 있었습니다. SAML 통합과의 일관성을 유지하기 위해, 그리고 동기화되지 않은 그룹 멤버를 허용하는 것이 디렉터리 서비스 사용의 "단일 진실 공급원" 원칙에 어긋나기 때문에 이 기능을 제거합니다. 이 기능이 제거되면 LDAP과 동기화되지 않은 모든 LDAP 그룹 멤버는 해당 그룹에 대한 접근 권한을 잃습니다.

Geo: Housekeeping Rake 작업#

복제와 검증을 Geo 셀프 서비스 프레임워크(SSF)로 마이그레이션하는 작업의 일환으로, 프로젝트 리포지터리용 레거시 복제 기능이 제거되었습니다. 그 결과 레거시 코드에 의존하던 다음 Rake 작업도 함께 제거되었습니다. 이 Rake 작업이 수행하던 작업은 이제 주기적으로, 또는 트리거 이벤트 기반으로 자동 실행됩니다.

Rake 작업 대체 방법
geo:git:housekeeping:full_repack UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.
geo:git:housekeeping:gc 새 리포지터리에서는 항상 실행되며, 이후에는 필요할 때 실행됩니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:git:housekeeping:incremental_repack 필요할 때 실행됩니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:run_orphaned_project_registry_cleaner 고아 레지스트리를 제거하는 레지스트리 일관성 워커가 정기적으로 실행합니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:verification:repository:reset UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.
geo:verification:wiki:reset UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.

GitLab 16.3#

번들 Grafana 지원 종료 및 비활성화#

Omnibus GitLab에 번들로 제공되는 Grafana 버전은 16.0에서 지원이 종료되고 비활성화되며 16.3에서 제거됩니다. 번들 Grafana를 사용 중이라면 다음 중 하나로 마이그레이션해야 합니다.

현재 제공되는 Grafana 버전은 더 이상 지원되는 버전이 아닙니다.

GitLab 16.0 ~ 16.2 버전에서는 여전히 번들 Grafana를 다시 활성화할 수 있습니다. 그러나 GitLab 16.3 부터는 번들 Grafana 활성화가 더 이상 동작하지 않습니다.

RSA 키 크기 제한#

Go 1.20.7 이상 버전에는 RSA 키를 최대 8192 비트로 제한하는 maxRSAKeySize 상수가 추가되었습니다. 그 결과 8192 비트보다 큰 RSA 키는 GitLab에서 더 이상 동작하지 않습니다. 8192 비트보다 큰 RSA 키는 더 작은 크기로 다시 생성해야 합니다.

로그에 tls: server sent certificate containing RSA key larger than 8192 bits와 같은 오류가 포함되어 있으면 이 문제를 알아챌 수 있습니다. 키 길이를 확인하려면 다음 명령을 사용합니다: openssl rsa -in <your-key-file> -text -noout | grep "Key:".

GitLab.com에서 Twitter OmniAuth 로그인 옵션 제거#

Twitter OAuth 1.0a OmniAuth는 낮은 사용률, gem 지원 부족, 그리고 이 기능의 로그인 옵션이 제대로 동작하지 않는다는 이유로 GitLab 16.3에서 GitLab.com에서 지원이 종료되어 제거됩니다. Twitter로 GitLab.com에 로그인하고 있었다면, 비밀번호나 다른 지원되는 OmniAuth 공급자로 로그인할 수 있습니다.

라이선스 준수 CI 템플릿#

업데이트: 이전에는 기존 라이선스 준수 CI/CD 템플릿을 GitLab 16.0에서 제거하겠다고 발표했습니다. 그러나 CycloneDX 파일의 라이선스 스캐닝에 성능 문제가 있어 대신 16.3에서 제거합니다.

GitLab 라이선스 준수 CI/CD 템플릿은 이제 지원이 종료되었으며 GitLab 16.3 릴리스에서 제거될 예정입니다.

라이선스 준수를 위해 계속 GitLab을 사용하려면, CI/CD 파이프라인에서 라이선스 준수 템플릿을 제거하고 의존성 스캐닝 템플릿을 추가합니다. 의존성 스캐닝 템플릿은 이제 필요한 라이선스 정보를 수집할 수 있으므로, 별도의 라이선스 준수 작업을 실행할 필요가 없습니다.

라이선스 준수 CI/CD 템플릿을 제거하기 전에, 인스턴스가 새로운 라이선스 스캐닝 방식을 지원하는 버전으로 업그레이드되었는지 확인합니다.

Dependency Scanner를 대규모로 빠르게 사용하려면, 그룹 레벨에서 스캔 실행 정책을 설정하여 그룹 내 모든 프로젝트에 SBOM 기반 라이선스 스캔을 강제할 수 있습니다. 그런 다음 CI/CD 설정에서 Jobs/License-Scanning.gitlab-ci.yml 템플릿 포함을 제거할 수 있습니다.

레거시 라이선스 준수 기능을 계속 사용하려면 LICENSE_MANAGEMENT_VERSION CI 변수를 4로 설정하면 됩니다. 이 변수는 프로젝트, 그룹, 또는 인스턴스 레벨에서 설정할 수 있습니다. 이 설정을 변경하면 새로운 방식을 도입하지 않고도 기존 버전의 라이선스 준수 기능을 계속 사용할 수 있습니다.

이 레거시 분석기의 버그와 취약점은 더 이상 수정되지 않습니다.

CI 파이프라인 포함 항목 GitLab <= 15.8 15.9 <= GitLab < 16.3 GitLab >= 16.3
DS·LS 템플릿 모두 포함 LS 작업의 라이선스 데이터 사용 LS 작업의 라이선스 데이터 사용 DS 작업의 라이선스 데이터 사용
DS 템플릿만 포함(LS 템플릿 미포함) 라이선스 데이터 없음 DS 작업의 라이선스 데이터 사용 DS 작업의 라이선스 데이터 사용
LS 템플릿만 포함(DS 템플릿 미포함) LS 작업의 라이선스 데이터 사용 LS 작업의 라이선스 데이터 사용 라이선스 데이터 없음

GitLab 16.1#

Alpine 3.12, 3.13, 3.14 기반 GitLab Runner 이미지#

  • GitLab 15.11에서 발표
  • GitLab 16.1에서 지원 종료(EOS)
  • GitLab 16.1에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

다음의 수명 종료(EOL) Alpine 버전을 기반으로 하는 러너 이미지 게시를 중단합니다.

  • Alpine 3.12
  • Alpine 3.13
  • Alpine 3.14(2023-05-23 수명 종료)

GitLab 16.0#

Auto DevOps가 더 이상 기본적으로 PostgreSQL 데이터베이스를 프로비저닝하지 않음#

현재 Auto DevOps는 기본적으로 클러스터 내 PostgreSQL 데이터베이스를 프로비저닝합니다. GitLab 16.0에서는 옵트인한 사용자에 대해서만 데이터베이스가 프로비저닝됩니다. 이 변경 사항은 더 견고한 데이터베이스 관리가 필요한 프로덕션 배포를 지원합니다.

Auto DevOps가 클러스터 내 데이터베이스를 프로비저닝하도록 하려면 POSTGRES_ENABLED CI/CD 변수를 true로 설정합니다.

Azure Storage 드라이버가 올바른 루트 프리픽스로 기본 설정됨#

컨테이너 레지스트리의 Azure Storage 드라이버는 기본 루트 디렉터리로 //에 씁니다. 이 기본 루트 디렉터리는 Azure UI 일부 위치에서 /<no-name>/으로 표시됩니다. 이 스토리지 드라이버를 사용하는 이전 배포를 지원하기 위해 이 레거시 동작을 유지해 왔습니다. 그러나 다른 스토리지 드라이버에서 Azure로 이전할 때는, trimlegacyrootprefix: true를 설정하여 앞에 불필요한 슬래시가 없는 루트 경로를 만들도록 스토리지 드라이버를 구성하기 전까지 이 동작으로 인해 모든 데이터가 숨겨집니다.

스토리지 드라이버의 새 기본 설정은 trimlegacyrootprefix: true로 설정되며, /가 기본 루트 디렉터리가 됩니다. 문제를 방지하려면 현재 설정에 trimlegacyrootprefix: false를 추가할 수 있습니다.

이 브레이킹 체인지은 GitLab 16.0에서 발생합니다.

번들 Grafana Helm 차트 지원 종료#

GitLab Helm 차트에 번들로 제공되는 Grafana Helm 차트는 지원이 종료되며 GitLab Helm 차트 7.0 릴리스(GitLab 16.0과 함께 릴리스)에서 제거됩니다.

번들 Grafana Helm 차트는 GitLab Helm 차트의 Prometheus 지표에 연결된 Grafana UI를 제공하기 위해 켤 수 있는 선택적 서비스입니다.

GitLab Helm 차트가 현재 제공하는 Grafana 버전은 더 이상 지원되는 Grafana 버전이 아닙니다. 번들 Grafana를 사용 중이라면 Grafana Labs의 최신 차트 버전으로 전환하거나 신뢰할 수 있는 공급자의 Grafana Operator로 전환해야 합니다.

새 Grafana 인스턴스에서 GitLab 이 제공하는 Prometheus를 데이터 소스로 구성하고 Grafana를 GitLab UI에 연결할 수 있습니다.

CAS OmniAuth 공급자#

GitLab에 CAS OmniAuth 공급자를 제공하는 omniauth-cas3 gem은 다음 메이저 릴리스인 GitLab 16.0에서 제거됩니다. 이 gem은 사용률이 매우 낮고 업스트림 유지 관리가 부족하여 GitLab 이 OmniAuth 2.0으로 업그레이드하는 데 걸림돌이 되고 있습니다.

HashiCorp Vault에서 시크릿이 반환되지 않으면 CI/CD 작업이 실패함#

네이티브 HashiCorp Vault 통합을 사용할 때, Vault에서 시크릿이 반환되지 않으면 CI/CD 작업이 실패합니다. GitLab 16.0 이전에 설정이 항상 시크릿을 반환하도록 하거나, 이 변경 사항을 처리하도록 파이프라인을 업데이트해야 합니다.

다중 모듈 Android 프로젝트에서 MobSF 기반 SAST 분석기 동작 변경#

업데이트: 이전에는 MobSF 기반 GitLab SAST 분석기가 다중 모듈 Android 프로젝트를 스캔하는 방식을 변경하겠다고 발표했습니다. 이 변경 사항은 취소되었으며, 별도의 조치가 필요하지 않습니다.

스캔할 단일 모듈을 변경하는 대신, 다중 모듈 지원을 개선했습니다.

/approvals API 엔드포인트로 머지 리퀘스트 승인 변경#

머지 리퀘스트에 필요한 승인 수를 변경하려면, GitLab 14.0에서 지원이 종료된 /approvals API 엔드포인트를 더 이상 사용하지 않아야 합니다.

대신 /approval_rules 엔드포인트를 사용해 머지 리퀘스트의 승인 규칙을 생성하거나 업데이트합니다.

Conan 프로젝트 레벨 검색 엔드포인트가 프로젝트별 결과를 반환함#

GitLab Conan 리포지터리는 프로젝트 레벨 또는 인스턴스 레벨 엔드포인트로 사용할 수 있습니다. 각 레벨은 Conan 검색 명령을 지원합니다. 그러나 프로젝트 레벨 검색 엔드포인트는 대상 프로젝트 밖의 패키지도 함께 반환하고 있습니다.

이 의도하지 않은 동작은 GitLab 15.8에서 지원이 종료되고 GitLab 16.0에서 제거됩니다. 프로젝트 레벨 검색 엔드포인트는 대상 프로젝트의 패키지만 반환합니다.

GitLab Runner Helm 차트의 설정 필드#

GitLab 13.6부터 사용자는 GitLab Runner Helm 차트에서 러너 설정을 자유롭게 지정할 수 있습니다. 이 기능을 구현하면서 GitLab Runner에 특화된 GitLab Helm 차트 설정값의 지원을 종료했습니다. 지원이 종료된 값은 GitLab 16.0에서 제거됩니다.

환경 변수를 사용한 Redis 설정 파일 경로 지정 지원 종료#

더 이상 GITLAB_REDIS_CACHE_CONFIG_FILE 이나 GITLAB_REDIS_QUEUES_CONFIG_FILE 같은 환경 변수를 사용해 Redis 설정 파일 위치를 지정할 수 없습니다. 기본 설정 파일 위치를 대신 사용합니다. 예를 들어 config/redis.cache.yml 이나 config/redis.queues.yml 입니다.

컨테이너 레지스트리 pull-through 캐시#

컨테이너 레지스트리 pull-through 캐시는 GitLab 15.8에서 지원이 종료되고 GitLab 16.0에서 제거됩니다. pull-through 캐시는 업스트림 Docker Distribution 프로젝트의 일부입니다. 그러나 Docker Hub의 컨테이너 이미지를 프록시하고 캐시할 수 있는 GitLab Dependency Proxy로 대체하기 위해 pull-through 캐시를 제거합니다. pull-through 캐시를 제거하면 기능 손실 없이 업스트림 클라이언트 코드도 함께 제거할 수 있습니다.

Docker를 참조하는 컨테이너 스캐닝 변수#

변수 이름이 DOCKER_로 시작하는 모든 컨테이너 스캐닝 변수는 지원이 종료됩니다. 여기에는 DOCKER_IMAGE, DOCKER_PASSWORD, DOCKER_USER, DOCKERFILE_PATH 변수가 포함됩니다. 이 변수에 대한 지원은 GitLab 16.0 릴리스에서 제거됩니다. 지원이 종료된 이름 대신 새 변수 이름인 CS_IMAGE, CS_REGISTRY_PASSWORD, CS_REGISTRY_USER, CS_DOCKERFILE_PATH를 사용합니다.

GitLab for Jira Cloud 앱의 쿠키 인증#

GitLab for Jira Cloud 앱의 쿠키 인증은 이제 지원이 종료되고 OAuth 인증으로 대체됩니다. GitLab Self-Managed에서는 GitLab for Jira Cloud 앱을 계속 사용하려면 OAuth 인증을 설정해야 합니다. OAuth 없이는 연결된 네임스페이스를 관리할 수 없습니다.

DAST 템플릿을 사용한 DAST API 스캔 지원 종료#

DAST API 스캔을 위한 새 DAST API 분석기와 DAST-API.gitlab-ci.yml 템플릿으로 전환하면서, DAST 분석기로 API를 스캔하는 기능은 제거됩니다. API 스캔에 DAST.gitlab-ci.yml 또는 DAST-latest.gitlab-ci.yml 템플릿을 사용하는 방식은 GitLab 15.7부터 지원이 종료되었으며 GitLab 16.0에서는 더 이상 동작하지 않습니다. DAST-API.gitlab-ci.yml 템플릿을 사용하고, 설정 관련 세부 정보는 DAST API 분석기 문서를 참고합니다.

DAST API variables#

GitLab 15.6에서 새로운 DAST API 분석기로 전환되면서 기존 DAST API 변수 두 개가 폐기됩니다. DAST_API_HOST_OVERRIDE 변수와 DAST_API_SPECIFICATION 변수는 더 이상 DAST API 스캔에 사용되지 않습니다.

DAST_API_HOST_OVERRIDE는 폐기되었으며, 대신 DAST_API_TARGET_URL을 사용해 OpenAPI 스펙의 호스트를 자동으로 재정의합니다.

DAST_API_SPECIFICATION은 폐기되었으며 DAST_API_OPENAPI로 대체됩니다. OpenAPI 스펙을 계속 테스트 기준으로 사용하려면 DAST_API_SPECIFICATION 변수를 DAST_API_OPENAPI 변수로 교체해야 합니다. 값은 그대로 유지할 수 있지만 변수명은 반드시 교체해야 합니다.

이 두 변수는 GitLab 16.0에서 제거됩니다.

DAST report variables deprecation#

GitLab 15.7에서 브라우저 기반 DAST 분석기가 정식 출시(GA)되면서, 향후 이를 기본 DAST 분석기로 전환하는 작업을 진행하고 있습니다. 이를 준비하는 과정에서 다음 기존 DAST 변수가 폐기되며 GitLab 16.0에서 제거될 예정입니다: DAST_HTML_REPORT, DAST_XML_REPORT, DAST_MARKDOWN_REPORT. 이 리포트들은 기존 DAST 분석기에 의존하며, 새 브라우저 기반 분석기에는 구현할 계획이 없습니다. GitLab 16.0부터 이 리포트 아티팩트는 더 이상 생성되지 않습니다.

이 세 변수는 GitLab 16.0에서 제거됩니다.

Dependency scanning support for Java 13, 14, 15, and 16#

GitLab은 Java 13, 14, 15, 16 버전에 대한 의존성 스캐닝 지원을 폐기했으며, 다가오는 GitLab 16.0 릴리스에서 해당 지원을 제거할 계획입니다. 이는 해당 버전에 대한 Oracle Premier 및 Extended Support가 종료됨에 따라 Oracle 지원 정책과 일치합니다. 이를 통해 GitLab은 향후 의존성 스캐닝의 Java 지원을 LTS 버전에 집중할 수 있습니다.

Deployment API returns error when updated_at and updated_at are not used together#

이제 Deployment API는 updated_at 필터링과 updated_at 정렬을 함께 사용하지 않으면 오류를 반환합니다. 일부 사용자는 updated_at 정렬 없이 updated_at 필터링만으로 "최신" 배포를 가져오고 있었는데, 이는 잘못된 결과를 낳을 수 있습니다. 두 가지를 함께 사용하거나, finished_at 필터링과 finished_at 정렬로 마이그레이션하면 일관된 방식으로 "최신 배포"를 가져올 수 있습니다.

Deprecate legacy Gitaly configuration methods#

Gitaly 설정에 환경 변수 GIT_CONFIG_SYSTEM과 GIT_CONFIG_GLOBAL을 사용하는 방식은 폐기되었습니다. 이 변수들은 표준 config.toml Gitaly 설정으로 대체됩니다.

GIT_CONFIG_SYSTEM과 GIT_CONFIG_GLOBAL로 Gitaly를 설정하는 GitLab 인스턴스는 다음을 사용하는 설정 방식으로 전환해야 합니다 config.toml.

Deprecated Consul http metrics#

Linux 패키지에 포함된 Consul은 GitLab 16.0부터 기존에 폐기된 Consul 메트릭을 더 이상 제공하지 않습니다.

GitLab 14.0에서 Consul이 1.9.6으로 업데이트되면서 consul.http 경로에 있던 일부 텔레메트리 메트릭이 폐기되었습니다. GitLab 16.0에서는 consul.http 경로가 제거됩니다.

Consul 메트릭을 사용하는 모니터링이 있다면 consul.http 대신 consul.api.http를 사용하도록 업데이트합니다. 자세한 내용은 Consul 1.9.0 폐기 노트를 참고합니다.

Deprecation and planned removal for CI_PRE_CLONE_SCRIPT variable on GitLab.com#

GitLab.com Runner에서 지원하는 CI_PRE_CLONE_SCRIPT 변수는 GitLab 15.9부터 폐기되었으며 16.0에서 제거됩니다. CI_PRE_CLONE_SCRIPT 변수를 사용하면 러너가 Git init과 get fetch를 실행하기 전에 CI/CD job에서 명령을 실행할 수 있습니다. 이 기능의 동작 방식에 대한 자세한 내용은 사전 클론 스크립트를 참고합니다. 대안으로 pre_get_sources_script를 사용할 수 있습니다.

Developer role providing the ability to import projects to a group#

그룹에 대해 Developer 권한을 가진 사용자가 해당 그룹에 프로젝트를 임포트할 수 있는 기능은 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다. GitLab 16.0부터는 그룹에 대해 Maintainer 또는 Owner 권한을 가진 사용자만 해당 그룹에 프로젝트를 임포트할 수 있습니다.

Development dependencies reported for PHP and Python#

GitLab 16.0부터 GitLab 의존성 스캐닝 분석기는 Python/pipenv와 PHP/composer 프로젝트 모두에서 개발 의존성을 보고하기 시작합니다. 개발 의존성이 보고되지 않기를 원하는 사용자는 CI/CD 파일에 DS_INCLUDE_DEV_DEPENDENCIES: false를 설정해야 합니다.

Embedding Grafana panels in Markdown is deprecated#

GitLab Flavored Markdown에 Grafana 패널을 추가하는 기능은 15.9에서 폐기되었으며 16.0에서 제거됩니다. 이 기능은 GitLab Observability UI로 차트를 임베드하는 기능으로 대체할 예정입니다.

Enforced validation of CI/CD parameter character lengths#

CI/CD job 이름은 255자로 엄격히 제한되어 있지만, 다른 CI/CD 파라미터는 아직 이 제한을 강제하는 유효성 검사가 없습니다.

GitLab 16.0에서는 다음 항목도 255자로 엄격히 제한하는 유효성 검사가 추가됩니다.

  • stage 키워드
  • 파이프라인의 Git 브랜치 또는 태그 이름인 ref
  • 외부 CI/CD 통합에서 사용하는 description 및 target_url 파라미터

GitLab Self-Managed 사용자는 255자를 초과하는 파라미터를 사용하지 않도록 파이프라인을 업데이트해야 합니다. GitLab.com 사용자는 데이터베이스에서 이미 제한되어 있으므로 별도로 변경할 필요가 없습니다.

Environment search query requires at least three characters#

GitLab 16.0부터 API로 환경을 검색할 때는 최소 세 글자를 사용해야 합니다. 이 변경은 검색 작업의 확장성을 보장하기 위한 것입니다.

GraphQL API에서 ReleaseAssetLink 타입의 external 필드는 릴리스 링크가 GitLab 인스턴스 내부 링크인지 외부 링크인지를 나타내는 데 사용되었습니다. GitLab 15.9부터는 모든 릴리스 링크를 외부 링크로 취급하므로, 이 필드는 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 워크플로에 지장이 없도록 external 필드 사용을 중단합니다. 이 필드는 제거되며 대체되지 않습니다.

Releases API와 Release Links API에서 external 필드는 릴리스 링크가 GitLab 인스턴스 내부 링크인지 외부 링크인지를 나타내는 데 사용되었습니다. GitLab 15.9부터는 모든 릴리스 링크를 외부 링크로 취급하므로, 이 필드는 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 워크플로에 지장이 없도록 external 필드 사용을 중단합니다. 이 필드는 제거되며 대체되지 않습니다.

Geo: Project repository redownload is deprecated#

  • GitLab 15.11에서 발표
  • GitLab 16.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보조 Geo 사이트에서 프로젝트 리포지터리를 "재다운로드"하는 버튼은 폐기되었습니다. 재다운로드 로직에는 발생 시 해결하기 어려운 데이터 일관성 문제가 내재되어 있습니다. 이 버튼은 GitLab 16.0에서 제거됩니다.

GitLab administrators must have permission to modify protected branches or tags#

GitLab 관리자는 명시적으로 권한을 부여받지 않는 한 보호된 브랜치나 태그에 대한 작업을 더 이상 수행할 수 없습니다. 이러한 작업에는 보호된 브랜치에 대한 푸시와 머지, 브랜치 보호 해제, 보호된 태그 생성이 포함됩니다.

GitLab self-monitoring project#

GitLab 자체 모니터링은 인스턴스 관리자에게 인스턴스 상태를 모니터링할 수 있는 도구를 제공합니다. 이 기능은 GitLab 14.9에서 폐기되었으며 16.0에서 제거될 예정입니다.

GitLab.com importer#

  • GitLab 15.8에서 발표
  • GitLab 16.0에서 제거 예정

GitLab.com 임포터는 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다.

GitLab.com 임포터는 UI를 통해 GitLab.com의 프로젝트를 GitLab Self-Managed 인스턴스로 임포트하기 위해 2015년에 도입되었습니다. 이 기능은 GitLab Self-Managed에서만 사용할 수 있습니다. 직접 전송을 통한 GitLab 그룹 및 프로젝트 마이그레이션이 GitLab.com 임포터를 대체하며 더 통합된 임포트 기능을 제공합니다.

개요는 마이그레이션된 그룹 항목과 마이그레이션된 프로젝트 항목을 참고합니다.

GraphQL API Runner status will not return paused#

GitLab Runner GraphQL API 엔드포인트는 GitLab 16.0에서 상태로 paused 또는 active를 반환하지 않습니다. 향후 REST API v5에서도 GitLab Runner 엔드포인트는 paused 또는 active를 반환하지 않습니다.

러너의 상태는 다음과 같은 러너 연결 상태와만 관련됩니다. online, offline, not_connected. paused 또는 active 상태는 더 이상 표시되지 않습니다.

러너가 paused 상태인지 확인하려면 API 사용자는 대신 불리언 속성 paused가 true인지 확인해야 합니다. 러너가 active 상태인지 확인하려면 paused가 false인지 확인합니다.

Jira DVCS connector for Jira Cloud#

Jira Cloud용 Jira DVCS 커넥터는 폐기되었으며 GitLab 16.0에서 제거됩니다. Jira Cloud와 함께 Jira DVCS 커넥터를 사용 중이라면 GitLab for Jira Cloud 앱으로 마이그레이션합니다.

Jira DVCS 커넥터는 Jira 8.13 이하 버전에서도 폐기됩니다. Jira 8.14 이상에서는 Jira Server 또는 Jira Data Center에서만 Jira DVCS 커넥터를 사용할 수 있습니다.

KAS Metrics Port in GitLab Helm Chart#

gitlab.kas.metrics.port는 폐기되었으며, GitLab Helm Chart의 새로운 gitlab.kas.observability.port 설정 필드로 대체됩니다. 이 포트는 메트릭 용도 이외에도 훨씬 더 많이 사용되므로, 설정상의 혼동을 피하기 위해 이 변경이 이루어졌습니다.

Legacy Gitaly configuration method#

Omnibus GitLab 내 Gitaly 설정이 업데이트되어, Gitaly 관련 설정 키가 모두 표준 Gitaly 설정과 일치하는 단일 설정 구조 안에 있게 되었습니다. 이에 따라 이전 설정 구조는 폐기됩니다.

단일 설정 구조는 GitLab 15.10부터 사용할 수 있으며, 이전 방식과의 호환성은 유지됩니다. 제거된 이후에는 Gitaly를 반드시 단일 설정 구조로 설정해야 합니다. 가능한 한 빨리 Gitaly 설정을 업데이트합니다.

이 변경은 Omnibus GitLab과 소스 설치 간의 일관성을 높이며, 두 방식 모두에 대해 더 나은 문서와 도구를 제공할 수 있게 합니다.

가능한 한 빨리 다음 자료를 참고해 새 설정 구조로 업데이트합니다. 업그레이드 안내.

Legacy Praefect configuration method#

이전에는 Praefect 설정 키가 설정 파일 전체에 흩어져 있었습니다. 이제는 Praefect 설정과 일치하는 단일 설정 구조 안에 모여 있으므로 기존 설정 방식은 폐기됩니다.

단일 설정 구조는 GitLab 15.9부터 사용할 수 있으며, 이전 방식과의 호환성은 유지됩니다. 제거된 이후에는 Praefect를 반드시 단일 설정 구조로 설정해야 합니다. 가능한 한 빨리 다음 자료를 참고해 Praefect 설정을 업데이트합니다. 업그레이드 안내.

이 변경으로 Omnibus GitLab의 Praefect 설정이 Praefect 자체의 설정 구조와 일치하게 됩니다. 이전에는 계층 구조와 설정 키가 서로 일치하지 않았습니다. 이 변경은 Omnibus GitLab과 소스 설치 간의 일관성을 높이며, 두 방식 모두에 대해 더 나은 문서와 도구를 제공할 수 있게 합니다.

Legacy URLs replaced or removed#

GitLab 16.0에서는 GitLab 애플리케이션에서 기존 URL이 제거됩니다.

GitLab 9.0에서 하위 그룹이 도입되면서, 그룹 경로의 끝을 나타내기 위해 URL에 /-/ 구분자가 추가되었습니다. 이제 모든 GitLab URL은 프로젝트, 그룹, 인스턴스 수준 기능에 이 구분자를 사용합니다.

/-/ 구분자를 사용하지 않는 URL은 GitLab 16.0에서 제거될 예정입니다. 이러한 URL의 전체 목록과 대체 URL은 이슈 28848을 참고합니다.

기존 URL을 참조하는 스크립트나 북마크는 업데이트합니다. 이 변경은 GitLab API에는 영향을 주지 않습니다.

License-Check and the Policies tab on the license compliance page#

License-Check 기능은 현재 폐기되었으며 GitLab 16.0에서 제거될 예정입니다. 또한 라이선스 컴플라이언스 페이지의 policies 탭과 License-Check 기능과 관련된 모든 API도 폐기되어 GitLab 16.0에서 제거될 예정입니다. 감지된 라이선스를 기준으로 승인을 계속 강제하려는 사용자는 대신 새로운 라이선스 승인 정책을 생성하는 것이 좋습니다.

Limit personal access token and deploy token's access with external authorization#

외부 인가가 활성화된 경우, 개인 액세스 토큰(PAT)과 배포 토큰은 더 이상 컨테이너 레지스트리나 패키지 레지스트리에 접근할 수 없어야 합니다. 이 심층 방어 보안 조치는 16.0에 배포됩니다. PAT와 배포 토큰으로 이러한 레지스트리에 접근하는 사용자에게는 이 조치로 인해 토큰 사용이 중단됩니다. 컨테이너 레지스트리나 패키지 레지스트리에 토큰을 사용하려면 외부 인가를 비활성화합니다.

Major bundled Helm Chart updates for the GitLab Helm Chart#

GitLab 16.0에 맞춰 GitLab Helm Chart는 메이저 버전 7.0을 릴리스합니다. 다음과 같은 주요 번들 차트 업데이트가 포함됩니다.

GitLab Helm Chart 7.0의 전체 업그레이드 절차는 업그레이드 문서에서 확인할 수 있습니다.

Managed Licenses API#

Managed Licenses API는 현재 폐기되었으며 GitLab 16.0에서 제거될 예정입니다.

Maximum number of active pipelines per project limit (ci_active_pipelines)#

  • GitLab 15.3에서 발표
  • GitLab 16.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

프로젝트당 활성 파이프라인 최대 개수 제한은 기본적으로 활성화된 적이 없으며 GitLab 16.0에서 제거됩니다. 이 제한은 Rails 콘솔의 ci_active_pipelines 항목에서도 설정할 수 있습니다. 대신 유사한 보호 기능을 제공하는 다른 권장 속도 제한을 사용합니다.

Monitor performance metrics through Prometheus#

GitLab은 Prometheus 인스턴스에 저장된 데이터를 표시해 사용자가 성능 메트릭을 확인할 수 있게 합니다. GitLab은 또한 이러한 메트릭의 시각화를 대시보드에 표시합니다. 사용자는 사전에 설정된 외부 Prometheus 인스턴스에 연결하거나, Prometheus를 GitLab Managed App으로 설정할 수 있습니다. 하지만 Kubernetes 클러스터와의 인증서 기반 통합이 GitLab에서 폐기됨에 따라, Prometheus에 의존하는 GitLab의 메트릭 기능도 폐기됩니다. 여기에는 대시보드의 메트릭 시각화도 포함됩니다. GitLab은 Opstrace를 기반으로 한 단일한 사용자 경험을 개발하고 있습니다. Opstrace 통합 작업을 계속 확인하려면 관련 이슈를 참고합니다.

Non-expiring access tokens#

기존 프로젝트 액세스 토큰에 만료일이 자동으로 적용되는지 여부는 사용 중인 GitLab 제품과 GitLab 16.0 이상으로 업그레이드한 시점에 따라 달라집니다.

  • GitLab.com에서는 16.0 마일스톤 기간 중 만료일이 없는 기존 프로젝트 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다.
  • GitLab Self-Managed에서 GitLab 15.11 이하 버전에서 GitLab 16.0 이상으로 업그레이드한 경우:
    • 2024년 7월 23일 이전에는 만료일이 없는 기존 프로젝트 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다. 이 변경은 호환성이 깨지는 변경입니다.
    • 2024년 7월 24일 이후에는 만료일이 없는 기존 프로젝트 액세스 토큰에 만료일이 설정되지 않았습니다.

GitLab Self-Managed에서 다음 GitLab 버전 중 하나를 새로 설치하는 경우, 기존 프로젝트 액세스 토큰에는 만료일이 자동으로 적용되지 않습니다.

  • 16.0.9
  • 16.1.7
  • 16.2.10
  • 16.3.8
  • 16.4.6
  • 16.5.9
  • 16.6.9
  • 16.7.9
  • 16.8.9
  • 16.9.10
  • 16.10.9
  • 16.11.7
  • 17.0.5
  • 17.1.3
  • 17.2.1

만료일이 없는 액세스 토큰은 무기한 유효하며, 이는 액세스 토큰이 유출될 경우 보안 위험이 됩니다. 만료일이 있는 액세스 토큰이 더 안전하므로, GitLab 15.3부터 기본 만료일을 자동으로 설정합니다.

GitLab 16.0에서는 만료일이 없는 개인, 프로젝트, 또는 그룹 액세스 토큰에 자동으로 1년의 만료일이 설정됩니다.

기본값이 적용되기 전에 회사의 보안 정책에 맞춰 액세스 토큰에 만료일을 설정하는 것을 권장합니다.

  • GitLab.com에서는 16.0 마일스톤 기간 중
  • GitLab Self-Managed에서는 16.0으로 업그레이드될 때

Non-standard default Redis ports are deprecated#

Redis 설정 파일이 없는 상태로 GitLab이 시작되면 GitLab은 localhost:6380, localhost:6381, localhost:6382 세 개의 Redis 서버에 연결할 수 있다고 가정합니다. 이 동작을 변경하여 GitLab이 localhost:6379에 있는 하나의 Redis 서버만 있다고 가정하도록 합니다.

세 개의 서버를 계속 사용하려는 관리자는 config/redis.cache.yml, config/redis.queues.yml, config/redis.shared_state.yml 파일을 수정해 Redis URL을 설정해야 합니다.

Option to delete projects immediately is deprecated from deletion protection settings#

Admin 영역의 그룹 및 프로젝트 삭제 보호 설정에는 그룹과 프로젝트를 즉시 삭제하는 옵션이 있었습니다. 16.0부터는 이 옵션을 더 이상 사용할 수 없으며, 그룹과 프로젝트를 지연 삭제하는 방식이 기본 동작이 됩니다.

이 옵션은 더 이상 그룹 설정으로 표시되지 않습니다. GitLab Self-Managed 사용자는 여전히 삭제 지연 기간을 정의하는 옵션을 사용할 수 있으며, GitLab.com 사용자는 조정할 수 없는 기본 보존 기간인 7일이 적용됩니다. 사용자는 프로젝트 설정에서 프로젝트를, 그룹 설정에서 그룹을 여전히 즉시 삭제할 수 있습니다.

그룹과 프로젝트를 기본적으로 즉시 삭제하는 옵션은 사용자가 실수로 이 작업을 수행해 그룹과 프로젝트를 영구적으로 잃는 것을 방지하기 위해 폐기되었습니다.

PostgreSQL 12 deprecated#

PostgreSQL 12 지원은 GitLab 16.0에서 제거될 예정입니다. GitLab 16.0에서는 PostgreSQL 13이 최소 요구 PostgreSQL 버전이 됩니다.

PostgreSQL 12는 GitLab 15 릴리스 주기 전체에서 지원됩니다. GitLab 16.0 이전에 업그레이드하려는 인스턴스를 위해 PostgreSQL 13도 지원됩니다.

PostgreSQL 13에 대한 지원은 GitLab 15.2에서 Geo에 추가되었습니다.

Projects API field operations_access_level is deprecated#

Projects API의 operations_access_level 필드를 폐기합니다. 이 필드는 특정 기능을 제어하는 필드인 releases_access_level, environments_access_level, feature_flags_access_level, infrastructure_access_level, monitor_access_level로 대체되었습니다.

Rake task for importing bare repositories#

  • GitLab 15.8에서 발표
  • GitLab 16.0에서 제거 예정

bare 리포지터리를 임포트하는 Rake 태스크(gitlab:import:repos)는 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다.

이 Rake 태스크는 디렉터리 트리 구조의 리포지터리를 GitLab 인스턴스로 임포트합니다. 이 리포지터리는 이전에 GitLab에서 관리되었어야 합니다. 이 Rake 태스크가 동작하려면 특정 디렉터리 구조나 특정 커스텀 Git 설정(gitlab.fullpath)에 의존하기 때문입니다.

이 Rake 태스크로 리포지터리를 임포트하는 데는 제한 사항이 있습니다. 이 Rake 태스크는 다음과 같습니다.

  • 프로젝트와 프로젝트 위키 리포지터리만 인식하며, 디자인, 그룹 위키, 스니펫용 리포지터리는 지원하지 않습니다.
  • 지원되지 않음에도 불구하고 해시되지 않은 스토리지 프로젝트의 임포트를 허용합니다.
  • Git 설정 gitlab.fullpath가 설정되어 있는 것에 의존합니다. 에픽 8953에서는 이 설정에 대한 지원 제거를 제안합니다.

gitlab:import:repos Rake 태스크의 대안은 다음과 같습니다.

Redis 5 deprecated#

  • GitLab 15.3에서 발표
  • GitLab 15.6에서 지원 종료
  • GitLab 16.0에서 제거 예정(호환성이 깨지는 변경)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 13.9의 Omnibus GitLab 패키지와 GitLab Helm chart 4.9에서 Redis 버전이 Redis 6으로 업데이트되었습니다. Redis 5는 2022년 4월 수명 종료(EOL)에 도달했으며 GitLab 15.6부터 더 이상 지원되지 않습니다. 자체 Redis 5.0 인스턴스를 사용 중이라면 GitLab 16.0 이상으로 업그레이드하기 전에 Redis 6.0 이상으로 업그레이드해야 합니다.

Remove job_age parameter from POST /jobs/request Runner endpoint#

GitLab Runner와의 통신에 사용되는 POST /jobs/request API 엔드포인트에서 반환되는 job_age 파라미터는 어떤 GitLab이나 Runner 기능에서도 사용된 적이 없습니다. 이 파라미터는 GitLab 16.0에서 제거됩니다.

이 엔드포인트가 이 파라미터를 반환하는 것에 의존해 자체 러너를 개발한 경우, 이는 호환성이 깨지는 변경일 수 있습니다. GitLab.com의 퍼블릭 공유 러너를 포함해 공식 릴리스된 GitLab Runner 버전을 사용하는 경우에는 호환성이 깨지는 변경이 아닙니다.

SAST analyzer coverage changing in GitLab 16.0#

GitLab SAST는 다양한 분석기를 사용해 코드에서 취약점을 스캔합니다.

GitLab SAST에서 기본으로 사용되는 지원 분석기의 개수를 줄이고 있습니다. 이는 여러 프로그래밍 언어에 걸쳐 더 빠르고 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환입니다.

GitLab 16.0부터 GitLab SAST CI/CD 템플릿은 .NET용 Security Code Scan 기반 분석기를 더 이상 사용하지 않으며, 이 분석기는 지원 종료(End of Support) 상태가 됩니다. 이 분석기는 SAST CI/CD 템플릿에서 제거되며, Semgrep 기반 분석기의 GitLab 지원 C# 탐지 규칙으로 대체됩니다.

지금 이 순간부터 이 분석기는 보안 업데이트만 제공받으며, 그 밖의 일반적인 개선이나 업데이트는 보장되지 않습니다. 이 분석기가 GitLab 16.0에서 지원 종료에 도달한 이후에는 추가 업데이트가 제공되지 않습니다. 다만 이 분석기용으로 이전에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 job으로 이 분석기를 실행하는 기능을 제거하지는 않습니다.

폐기된 분석기에서 발견한 취약점을 이미 기각(dismiss)한 경우, 대체 분석기는 이전의 기각 상태를 최대한 유지하려고 시도합니다. 시스템 동작은 다음에 따라 달라집니다.

  • 이전에 Semgrep 기반 분석기의 실행을 제외했는지 여부
  • 프로젝트의 취약점 리포트에 표시된 취약점을 처음 발견한 분석기가 무엇인지

자세한 내용은 취약점 변환(translation) 문서를 참고합니다.

영향을 받는 분석기에 커스터마이징을 적용했거나, 현재 파이프라인에서 Semgrep 기반 분석기를 비활성화한 상태라면 이 변경 사항에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

업데이트: 이 변경 사항의 범위를 축소했습니다. GitLab 16.0에서는 다음 변경을 더 이상 적용하지 않습니다.

  1. PHPCS Security Audit 기반 분석기 지원을 제거하고 Semgrep 기반 분석기의 GitLab 관리 탐지 규칙으로 대체
  2. SpotBugs 기반 분석기의 대상 범위에서 Scala를 제거하고 Semgrep 기반 분석기의 GitLab 관리 탐지 규칙으로 대체

PHPCS Security Audit 기반 분석기를 대체하는 작업은 이슈 364060에서, Scala 스캔을 Semgrep 기반 분석기로 마이그레이션하는 작업은 이슈 362958에서 추적합니다.

Secure 분석기 메이저 버전 업데이트#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Secure 스테이지는 GitLab 16.0 릴리스와 함께 분석기의 메이저 버전을 올릴 예정입니다. 이 업데이트를 통해 다음 기준으로 분석기를 명확히 구분할 수 있습니다.

  • 2023년 5월 22일 이전에 릴리스된 것
  • 2023년 5월 22일 이후에 릴리스된 것

기본 제공 템플릿을 사용하지 않거나 분석기 버전을 고정(pin)해 사용 중이라면, CI/CD job 정의에서 고정된 버전을 제거하거나 최신 메이저 버전으로 업데이트해야 합니다. GitLab 13.0~15.10 사용자는 GitLab 16.0이 릴리스되기 전까지는 평소와 동일하게 분석기 업데이트를 계속 받습니다. GitLab 16.0 릴리스 이후에는 새로 수정된 버그와 새 기능이 분석기의 새 메이저 버전에서만 릴리스됩니다. 유지 관리 정책에 따라 폐기된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최신 3개 마이너 릴리스 내에서 백포트됩니다. 구체적으로 다음 항목이 폐기되며 GitLab 16.0 릴리스 이후 더 이상 업데이트되지 않습니다.

  • API 퍼징: 버전 2
  • 컨테이너 스캐닝: 버전 5
  • 커버리지 기반 퍼즈 테스트: 버전 3
  • 의존성 스캐닝: 버전 3
  • Dynamic Application Security Testing(DAST): 버전 3
  • DAST API: 버전 2
  • IaC 스캐닝: 버전 3
  • 라이선스 스캐닝: 버전 4
  • 시크릿 탐지: 버전 4
  • Static Application Security Testing(SAST): 모든 분석기의 버전 3
    • brakeman: 버전 3
    • flawfinder: 버전 3
    • kubesec: 버전 3
    • mobsf: 버전 3
    • nodejs-scan: 버전 3
    • phpcs-security-audit: 버전 3
    • pmd-apex: 버전 3
    • security-code-scan: 버전 3
    • semgrep: 버전 3
    • sobelow: 버전 3
    • spotbugs: 버전 3

Secure 스캐닝 CI/CD 템플릿이 새로운 job rules를 사용합니다#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보안 스캐닝용 GitLab 관리 CI/CD 템플릿이 GitLab 16.0 릴리스에서 업데이트됩니다. 이번 업데이트에는 CI/CD 템플릿의 Latest 버전에서 이미 릴리스된 개선 사항이 포함됩니다. 이 변경 사항은 커스터마이즈된 CI/CD 파이프라인 구성을 손상시킬 가능성이 있어 Latest 템플릿 버전에서 먼저 릴리스했습니다.

업데이트된 모든 템플릿에서 SAST_DISABLED, DEPENDENCY_SCANNING_DISABLED 같은 변수의 정의를 변경해, 값이 "true"인 경우에만 스캐닝을 비활성화하도록 합니다. 이전에는 값이 "false"여도 스캐닝이 비활성화되었습니다.

다음 템플릿이 업데이트됩니다.

위에 나열된 템플릿 중 하나를 사용하면서 _DISABLED 변수에 "true"가 아닌 값을 설정한 경우, 16.0 릴리스 전에 파이프라인을 테스트할 것을 권장합니다.

업데이트: 이전에는 영향을 받는 템플릿의 rules를 업데이트해 기본적으로 머지 리퀘스트 파이프라인에서 실행되도록 한다고 발표했습니다. 하지만 폐기 이슈에서 논의된 호환성 문제로 인해, GitLab 16.0에서는 이 변경을 더 이상 적용하지 않습니다. 위에서 설명한 _DISABLED 변수 관련 변경 사항은 그대로 릴리스합니다.

보안 리포트 스키마 버전 14.x.x#

  • GitLab 15.3에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

버전 14.x.x 보안 리포트 스키마는 폐기되었습니다.

GitLab 15.8부터 스키마 버전 14.x.x를 사용하는 보안 리포트 스캐너 연동은 파이프라인의 Security 탭에 폐기 경고를 표시합니다.

GitLab 16.0부터 이 기능이 제거됩니다. 스키마 버전 14.x.x를 사용하는 보안 리포트는 파이프라인의 Security 탭에서 오류를 발생시킵니다.

자세한 내용은 보안 리포트 검증을 참고합니다.

Kubernetes 용 GitLab 에이전트 설정의 Starboard 지시어#

  • GitLab 15.4에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 컨테이너 스캐닝 기능은 더 이상 starboard 설치를 필요로 하지 않습니다. 따라서 Kubernetes 용 GitLab 에이전트 설정 파일의 starboard: 지시어 사용은 이제 폐기되었으며 GitLab 16.0에서 제거될 예정입니다. 설정 파일을 container_scanning: 지시어를 사용하도록 업데이트합니다.

Windows Server 2004 및 20H2 기반 GitLab Runner 이미지 게시 중단#

  • GitLab 16.0에서 발표됨
  • GitLab 16.0에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 16.0부터 Windows Server 2004 및 20H2는 수명 종료(EOL)되었으므로 이를 기반으로 한 GitLab Runner 이미지는 제공되지 않습니다.

Praefect 커스텀 메트릭 엔드포인트 설정 지원#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

prometheus_exclude_database_from_default_metrics 설정 값 사용 지원은 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 이 설정 값은 성능에 부정적인 영향을 주기 때문에 제거합니다. 이 변경으로 인해 다음 메트릭을 /metrics에서 더 이상 사용할 수 없게 됩니다.

  • gitaly_praefect_unavailable_repositories.
  • gitaly_praefect_verification_queue_depth.
  • gitaly_praefect_replication_queue_depth.

이로 인해 메트릭 수집 대상이 /db_metrics도 함께 스크랩하도록 업데이트해야 할 수 있습니다.

Terraform 상태(state) 이름의 마침표(.) 지원으로 기존 상태가 깨질 수 있습니다#

  • GitLab 15.7에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에는 마침표가 포함된 Terraform 상태 이름을 지원하지 않았습니다. 다만 우회 방법을 사용하면 마침표가 포함된 상태 이름을 사용할 수 있었습니다.

GitLab 15.7은 마침표가 포함된 상태 이름을 완전히 지원합니다. 이런 상태 이름을 처리하기 위해 우회 방법을 사용했다면, job이 실패하거나 Terraform을 처음 실행한 것처럼 보일 수 있습니다.

이 문제를 해결하려면 다음과 같이 합니다.

  1. 상태 파일에 대한 참조에서 마침표와 그 뒤에 오는 문자를 제외하도록 변경합니다.
    • 예를 들어 상태 이름이 state.name이라면 모든 참조를 state로 변경합니다.
  2. Terraform 명령을 실행합니다.

마침표를 포함한 전체 상태 이름을 사용하려면 전체 상태 파일로 마이그레이션합니다.

API가 Kubernetes 용 에이전트의 폐기된 토큰을 더 이상 반환하지 않습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

현재 클러스터 에이전트 API의 엔드포인트에 대한 GET 요청은 폐기된 토큰을 반환할 수 있습니다. GitLab 16.0에서는 GET 요청이 폐기된 토큰을 반환하지 않습니다.

이 엔드포인트에 대한 호출을 검토해 폐기된 토큰을 사용하지 않는지 확인합니다.

이 변경 사항은 다음 REST 및 GraphQL API 엔드포인트에 영향을 줍니다.

Phabricator 작업 가져오기 도구가 폐기되었습니다#

Phabricator 작업 가져오기 도구가 폐기됩니다. Phabricator 프로젝트 자체가 2021년 6월 1일부터 더 이상 활발히 유지 관리되지 않고 있습니다. 이 도구를 사용한 가져오기 사례는 관찰되지 않았습니다. GitLab의 관련 열린 이슈에서도 별다른 활동이 없었습니다.

최신(latest) Terraform 템플릿이 현재 stable 템플릿을 덮어씁니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab의 메이저 버전이 나올 때마다 stable Terraform 템플릿을 현재의 latest 템플릿으로 업데이트합니다. 이 변경은 quickstart 및 기본 템플릿에 영향을 줍니다.

새 템플릿에는 기본 rules가 포함되어 있으므로, 이번 업데이트로 Terraform 파이프라인이 깨질 수 있습니다. 예를 들어 Terraform job이 다운스트림 파이프라인으로 트리거되는 경우, GitLab 16.0에서는 해당 rules가 job을 트리거하지 않습니다.

이 변경 사항에 대응하려면 .gitlab-ci.yml 파일의 rules를 조정해야 할 수 있습니다.

머지 리퀘스트의 /draft 퀵 액션 토글 동작#

  • GitLab 15.4에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

퀵 액션을 통해 머지 리퀘스트의 Draft 상태를 토글하는 동작을 더 명확하게 만들기 위해, /draft 퀵 액션의 토글 동작을 폐기하고 제거합니다. GitLab 16.0 릴리스부터 /draft는 머지 리퀘스트를 Draft 상태로 설정하는 용도로만 사용되며, Draft 상태를 해제하려면 새로운 /ready 퀵 액션을 사용합니다.

vulnerabilityFindingDismiss 뮤테이션에서의 id 필드 사용#

  • GitLab 15.3에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

vulnerabilityFindingDismiss GraphQL 뮤테이션을 사용하면 취약점 파인딩(finding)의 상태를 Dismissed로 설정할 수 있습니다. 이전에는 이 뮤테이션이 파인딩을 고유하게 식별하기 위해 id 필드를 사용했습니다. 하지만 이 방식은 파이프라인 Security 탭에서 파인딩을 dismiss하는 데는 동작하지 않았습니다. 따라서 식별자로 id 필드를 사용하는 방식을 없애고 uuid 필드를 사용하도록 변경했습니다. 식별자로 uuid 필드를 사용하면 파이프라인 Security 탭에서도 파인딩을 dismiss할 수 있습니다.

서드파티 컨테이너 레지스트리 사용이 폐기되었습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab을 인증 엔드포인트로 사용하는 서드파티 컨테이너 레지스트리 사용은 GitLab 15.8에서 폐기되었으며, 지원 종료는 GitLab 16.0으로 예정되어 있습니다. 이는 컨테이너 이미지를 찾고 보고 삭제하기 위해 외부 레지스트리를 GitLab 사용자 인터페이스에 연결한 GitLab Self-Managed 사용자에게 영향을 줍니다.

GitLab 컨테이너 레지스트리와 서드파티 컨테이너 레지스트리를 함께 지원하는 것은 유지 관리, 코드 품질, 하위 호환성 측면에서 어려움이 있으며 효율성을 유지하는 데도 걸림돌이 됩니다. 이에 따라 앞으로는 이 기능을 지원하지 않습니다.

이 변경 사항은 파이프라인을 사용해 외부 레지스트리에 컨테이너 이미지를 pull·push하는 기능에는 영향을 주지 않습니다.

GitLab.com용 새 GitLab 컨테이너 레지스트리 버전을 릴리스한 이후, 서드파티 컨테이너 레지스트리에서는 제공되지 않는 추가 기능을 구현하기 시작했습니다. 이런 새 기능 덕분에 정리 정책(cleanup policies)과 같은 상당한 성능 개선을 이뤄낼 수 있었습니다. 현재는 새 기능을 제공하는 데 집중하고 있으며, 이 기능 대부분은 GitLab 컨테이너 레지스트리에서만 제공되는 기능을 필요로 합니다. 이번 폐기를 통해 더 견고하고 통합된 레지스트리 경험과 기능 세트를 제공하는 데 집중함으로써, 장기적으로 기능 분산과 사용자 불편을 줄일 수 있습니다.

앞으로도 GitLab 컨테이너 레지스트리에서만 제공되는 새 기능을 개발하고 릴리스하는 데 계속 투자할 예정입니다.

경로 끝에 글로벌 ID를 사용하는 작업 항목(work item) 경로가 폐기되었습니다#

  • GitLab 15.10에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

작업 항목 URL에서 글로벌 ID를 사용하는 방식은 폐기되었습니다. 앞으로는 내부 ID(IID)만 지원됩니다.

GitLab은 여러 작업 항목 유형을 지원하기 때문에, https://gitlab.com/gitlab-org/gitlab/-/work_items/<global_id>와 같은 경로는 예를 들어 작업(task)이나 OKR을 표시할 수 있습니다.

GitLab 15.10에서는 경로 끝에 쿼리 파라미터를 추가해 (iid_path) 해당 경로에서 내부 ID(IID)를 사용할 수 있도록 지원을 추가했습니다. 형식은 다음과 같습니다. https://gitlab.com/gitlab-org/gitlab/-/work_items/<iid>?iid_path=true

GitLab 16.0에서는 작업 항목 경로에 글로벌 ID를 사용하는 기능을 제거합니다. 경로 끝의 숫자는 쿼리 파라미터를 추가하지 않아도 내부 ID(IID)로 간주됩니다. 다음 형식만 지원됩니다. https://gitlab.com/gitlab-org/gitlab/-/work_items/<iid>

CI_BUILD_* 사전 정의 변수#

  • GitLab 14.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

CI_BUILD_*로 시작하는 사전 정의 CI/CD 변수는 GitLab 9.0에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 이 변수를 아직 사용 중이라면, 기능적으로 동일한 대체 사전 정의 변수로 반드시 변경합니다.

제거된 변수 대체 변수
CI_BUILD_BEFORE_SHA CI_COMMIT_BEFORE_SHA
CI_BUILD_ID CI_JOB_ID
CI_BUILD_MANUAL CI_JOB_MANUAL
CI_BUILD_NAME CI_JOB_NAME
CI_BUILD_REF CI_COMMIT_SHA
CI_BUILD_REF_NAME CI_COMMIT_REF_NAME
CI_BUILD_REF_SLUG CI_COMMIT_REF_SLUG
CI_BUILD_REPO CI_REPOSITORY_URL
CI_BUILD_STAGE CI_JOB_STAGE
CI_BUILD_TAG CI_COMMIT_TAG
CI_BUILD_TOKEN CI_JOB_TOKEN
CI_BUILD_TRIGGERED CI_PIPELINE_TRIGGERED

POST ci/lint API 엔드포인트 폐기#

  • GitLab 15.7에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

POST ci/lint API 엔드포인트는 15.7에서 폐기되었으며 16.0에서 제거됩니다. 이 엔드포인트는 CI/CD 설정 옵션 전체 범위를 검증하지 않습니다. 대신 CI/CD 설정을 올바르게 검증하는 POST /projects/:id/ci/lint를 사용합니다.

DORA API의 environment_tier 파라미터#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

혼란과 중복을 피하기 위해 environment_tier 파라미터는 폐기되고 environment_tiers 파라미터로 대체됩니다. 새로운 environment_tiers 파라미터를 사용하면 DORA API가 여러 티어의 데이터를 동시에 집계해 반환할 수 있습니다. environment_tier 파라미터는 GitLab 16.0에서 제거됩니다.

PipelineSecurityReportFinding GraphQL 타입의 name 필드#

  • GitLab 15.1에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에 PipelineSecurityReportFinding GraphQL 타입이 업데이트되어 새로운 title 필드가 추가되었습니다. 이 필드는 기존 name 필드의 별칭(alias)으로, 상대적으로 명확하지 않은 name 필드를 중복되게 만듭니다. name 필드는 GitLab 16.0에서 PipelineSecurityReportFinding 타입에서 제거됩니다.

started 이터레이션 상태#

  • GitLab 14.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이터레이션 GraphQL API 및 이터레이션 REST API의 started 이터레이션 상태는 폐기되었습니다.

GraphQL API 버전은 GitLab 16.0에서 제거됩니다. 이 상태는 마일스톤 등 다른 시간 기반 엔티티의 명명 방식과 맞추기 위해 이미 제공 중인 current 상태로 대체됩니다.

REST API 버전에서는 다음 v5 REST API 버전이 나오기 전까지 started 상태를 계속 지원할 계획입니다.

vulnerabilityFindingDismiss GraphQL 뮤테이션#

  • GitLab 15.5에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

VulnerabilityFindingDismiss GraphQL 뮤테이션은 폐기되며 GitLab 16.0에서 제거됩니다. 이 뮤테이션은 취약점 파인딩 ID를 사용자가 사용할 수 없었기 때문에(이 필드는 15.3에서 폐기됨) 자주 사용되지 않았습니다. 사용자는 대신 Vulnerability Report에서 취약점을 dismiss할 때는 VulnerabilityDismiss를, CI Pipeline Security 탭의 보안 파인딩에는 SecurityFindingDismiss를 사용해야 합니다.

GitLab 15.11#

openSUSE Leap 15.3 패키지#

  • GitLab 15.8에서 발표됨
  • GitLab 15.11에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

openSUSE Leap 15.3의 배포판 지원 및 보안 업데이트는 2022년 12월에 종료되었습니다.

GitLab 15.7부터 openSUSE Leap 15.4용 패키지 제공을 시작했으며, 15.11 마일스톤에서 openSUSE Leap 15.3용 패키지 제공을 중단합니다.

  • openSUSE Leap 15.3 패키지에서 제공되는 15.4 패키지로 전환합니다.

GitLab 15.10#

OpenStack Swift 및 Rackspace API를 사용한 자동 백업 업로드#

  • GitLab 15.8에서 발표됨
  • GitLab 15.10에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

OpenStack Swift 및 Rackspace API를 사용한 원격 스토리지로의 백업 업로드 지원을 폐기합니다. 이 API에 대한 지원은 더 이상 활발히 유지 관리되지 않고 Ruby 3용으로 업데이트되지 않은 서드파티 라이브러리에 의존하고 있습니다. GitLab은 보안 패치를 최신 상태로 유지하기 위해 Ruby 2의 EOL 전에 Ruby 3으로 전환합니다.

  • OpenStack을 사용 중이라면 Swift 대신 S3 API를 사용하도록 설정을 변경해야 합니다.
  • Rackspace 스토리지를 사용 중이라면 다른 공급자로 전환하거나, 백업 작업이 완료된 후 백업 파일을 수동으로 업로드해야 합니다.

GitLab 15.9#

Web IDE에서 Live Preview를 더 이상 사용할 수 없습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 15.9에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Web IDE의 Live Preview 기능은 정적 웹 애플리케이션의 클라이언트 측 미리보기를 제공하기 위한 것이었습니다. 하지만 복잡한 설정 단계와 좁은 지원 프로젝트 유형 범위로 인해 활용도가 제한적이었습니다. GitLab 15.7에서 Web IDE Beta가 도입되면서 이제 완전한 서버 측 런타임 환경에 연결할 수 있게 되었습니다. 앞으로 Web IDE에 확장 프로그램 설치 지원이 추가되면 Live Preview보다 더 고급 워크플로도 지원할 예정입니다. GitLab 15.9부터 Web IDE에서 Live Preview를 더 이상 사용할 수 없습니다.

omniauth-authentiq gem을 더 이상 사용할 수 없습니다#

  • GitLab 15.9에서 발표됨
  • GitLab 15.9에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

omniauth-authentiq는 GitLab에 포함되어 있던 OmniAuth 전략(strategy) gem입니다. 인증 서비스를 제공하던 회사인 Authentiq가 문을 닫았습니다. 이에 따라 이 gem을 제거합니다.

GitLab 15.7#

.gitlab-ci.yml의 File 타입 변수 확장#

  • GitLab 15.5에서 발표됨
  • GitLab 15.7에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에는 별칭(alias) 파일 변수를 참조하거나 적용하는 변수가 File 타입 변수의 값(예: 파일 내용)으로 확장되었습니다. 이 동작은 일반적인 셸 변수 확장 규칙을 따르지 않아 잘못된 것이었습니다. 사용자는 File 타입 변수를 입력 파라미터로 전달해 echo 명령을 실행함으로써 여기에 저장된 시크릿이나 민감한 정보를 유출할 수 있었습니다.

이번 브레이킹 체인지는 이 문제를 해결하지만, 기존 동작을 우회해 사용하던 사용자 워크플로를 손상시킬 수 있습니다. 이 변경으로 별칭 파일 변수를 참조하거나 적용하는 job 변수 확장은, 파일 내용 같은 값 대신 File 타입 변수의 파일 이름이나 경로로 확장됩니다.

Flowdock 연동#

  • GitLab 15.7에서 발표됨
  • GitLab 15.7에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

2022년 12월 22일부로 Flowdock 연동을 제거합니다. 이는 해당 서비스가 2022년 8월 15일에 종료되었기 때문입니다.

GitLab 15.6#

Git 리포지터리 스토리지용 NFS#

  • GitLab 14.0에서 발표됨
  • GitLab 15.6에서 제거됨

Gitaly Cluster의 정식 출시(GitLab 13.0에서 도입)에 따라, GitLab 14.0에서 Git 리포지터리 스토리지용 NFS에 대한 개발(버그 수정, 성능 개선 등)을 폐기했습니다. 14.x 버전 동안에는 Git 리포지터리용 NFS에 대한 기술 지원을 계속 제공하지만, 2022년 11월 22일에 NFS에 대한 모든 지원을 제거합니다. 이는 원래 2022년 5월 22일로 예정되어 있었지만, Gitaly Cluster가 더 성숙할 수 있는 시간을 확보하기 위해 지원 폐기 일정을 연장하기로 했습니다. 자세한 내용은 공식 지원 정책(Statement of Support)을 참고합니다.

Gitaly Cluster는 고객에게 다음과 같은 상당한 이점을 제공합니다.

현재 Git 리포지터리에 NFS를 사용 중인 고객은 Gitaly Cluster로 마이그레이션 문서를 참고해 마이그레이션을 계획할 것을 권장합니다.

GitLab 15.4#

번들 Grafana 폐기#

  • GitLab 15.3에서 발표됨
  • GitLab 15.4에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 15.4에서 번들 Grafana를 GitLab이 유지 관리하는 Grafana 포크로 교체합니다.

Grafana에서 확인된 CVE가 있었으며, 이 보안 취약점을 완화하려면 자체 포크로 전환해야 합니다. 기존에 번들하던 구버전 Grafana가 더 이상 장기 지원을 받지 않기 때문입니다.

이 변경으로 이전 버전 Grafana와의 호환성 문제가 발생할 것으로 예상되지 않습니다. 번들 버전을 사용하는 경우든 외부 Grafana 인스턴스를 사용하는 경우든 마찬가지입니다.

SAST 분석기 통합 및 CI/CD 템플릿 변경#

  • GitLab 14.8에서 발표됨
  • GitLab 15.4에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab SAST는 코드의 취약점을 스캔하기 위해 다양한 분석기를 사용합니다.

더 나은 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환으로 GitLab SAST에서 사용하는 분석기 수를 줄이고 있습니다. 분석기 구성을 정리하면 더 빠른 반복 작업, 더 나은 결과, 더 높은 효율성(대부분의 경우 CI 러너 사용량 감소 포함)도 가능해집니다.

GitLab 15.4에서 GitLab SAST는 더 이상 다음 분석기를 사용하지 않습니다.

Note

이 변경은 원래 GitLab 15.0으로 계획되었으나 GitLab 15.4로 연기되었습니다.

이 분석기들은 GitLab 관리 SAST CI/CD 템플릿에서 제거되고 Semgrep 기반 분석기로 대체됩니다. 즉시 시행되며, 이후에는 보안 업데이트만 제공되고 일반적인 개선이나 업데이트는 보장되지 않습니다. 이 분석기들이 지원 종료(End of Support)에 도달한 이후에는 더 이상 업데이트가 제공되지 않습니다. 이 분석기들에 대해 이전에 게시된 컨테이너 이미지는 삭제하지 않습니다. 이런 변경이 있을 경우 폐기, 제거 또는 브레이킹 체인지 공지를 통해 안내합니다.

또한 SpotBugs 분석기의 범위에서 Java를 제거하고 Semgrep 기반 분석기로 대체합니다. 이 변경으로 Java 코드 스캔이 더 간단해지며, 더 이상 컴파일이 필요하지 않습니다. 이 변경은 GitLab 관리 SAST CI/CD 템플릿의 자동 언어 감지 부분에 반영됩니다. SpotBugs 기반 분석기는 Groovy, Kotlin, Scala는 계속 지원한다는 점에 유의합니다.

폐기된 분석기 중 하나에서 이미 취약점 파인딩을 dismiss했다면, 대체 분석기는 이전의 dismiss 상태를 최대한 유지하려고 시도합니다. 시스템 동작은 다음 사항에 따라 달라집니다.

  • 이전에 Semgrep 기반 분석기를 실행 대상에서 제외한 적이 있는지 여부
  • 프로젝트의 Vulnerability Report에 표시된 취약점을 처음 발견한 분석기가 무엇인지

자세한 내용은 취약점 변환(Vulnerability translation) 문서를 참고합니다.

영향을 받는 분석기 중 하나라도 커스터마이즈를 적용했거나, 파이프라인에서 현재 Semgrep 분석기를 비활성화하고 있다면 이 변경에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

GitLab 15.3#

Vulnerability Report의 State 기준 정렬#

  • GitLab 15.0에서 발표됨
  • GitLab 15.3에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Vulnerability Report를 State 열 기준으로 정렬하는 기능은 기반 데이터 모델의 리팩터링으로 인해 GitLab 14.10에서 비활성화되어 기능 플래그 뒤에 놓였습니다. 이 값 기준 정렬이 성능을 유지하려면 추가 리팩터링이 필요해 기능 플래그는 기본적으로 꺼진 상태로 유지되었습니다. State 열을 정렬 기준으로 사용하는 빈도가 매우 낮아, 코드베이스를 단순화하고 원치 않는 성능 저하를 방지하기 위해 이 기능 플래그를 대신 제거합니다.

Vulnerability Report의 Tool 기준 정렬#

  • GitLab 15.1에서 발표됨
  • GitLab 15.3에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Vulnerability Report를 Tool 열(스캔 유형) 기준으로 정렬하는 기능은 기반 데이터 모델의 리팩터링으로 인해 GitLab 14.10에서 비활성화되어 기능 플래그 뒤에 놓였습니다. 이 값 기준 정렬이 성능을 유지하려면 추가 리팩터링이 필요해 기능 플래그는 기본적으로 꺼진 상태로 유지되었습니다. Tool 열을 정렬 기준으로 사용하는 빈도가 매우 낮아, 이 기능 플래그는 대신 GitLab 15.3에서 제거되어 코드베이스를 단순화하고 원치 않는 성능 저하를 방지합니다.

GitLab 15.1#

Debian 9 지원 폐기#

  • GitLab 14.9에서 발표됨
  • GitLab 15.1에서 제거됨

Debian 9 Stretch의 장기 서비스 및 지원(LTSS)은 2022년 7월에 종료됩니다. 따라서 GitLab 패키지에서 Debian 9 배포판을 더 이상 지원하지 않습니다. 사용자는 Debian 10 또는 Debian 11로 업그레이드할 수 있습니다.

GitLab 15.0#

리포지터리 푸시 이벤트용 감사 이벤트#

  • GitLab 14.3에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

리포지터리 이벤트용 감사 이벤트는 이제 폐기되었으며 GitLab 15.0에서 제거됩니다.

이 이벤트들은 항상 기본적으로 비활성화되어 있었으며 기능 플래그로 수동으로 활성화해야 했습니다. 이를 활성화하면 너무 많은 이벤트가 생성되어 GitLab 인스턴스 속도를 크게 저하시킬 수 있습니다. 이런 이유로 이 이벤트들을 제거합니다.

오브젝트 스토리지용 백그라운드 업로드#

  • GitLab 14.9에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

오브젝트 스토리지 기능의 전반적인 복잡성과 유지 관리 부담을 줄이기 위해, 파일 업로드에 background_upload를 사용하는 방식은 폐기되었으며 GitLab 15.0에서 완전히 제거됩니다. 오브젝트 스토리지의 제거된 백그라운드 업로드 설정에 대해서는 15.0 관련 변경 사항을 참고합니다.

이는 일부 오브젝트 스토리지 공급자에 영향을 줍니다.

  • OpenStack OpenStack을 사용하는 고객은 Swift 대신 S3 API를 사용하도록 설정을 변경해야 합니다.
  • RackSpace RackSpace 기반 오브젝트 스토리지를 사용하는 고객은 다른 공급자로 데이터를 마이그레이션해야 합니다.

GitLab은 영향을 받는 고객의 마이그레이션을 돕기 위해 추가 안내를 게시할 예정입니다.

CI/CD job 이름 길이 제한#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 15.0에서는 CI/CD job 이름의 문자 수를 255자로 제한합니다. 255자 제한을 초과하는 job 이름을 가진 파이프라인은 15.0 릴리스 이후 동작을 멈춥니다.

인스턴스(공유) 러너를 프로젝트(전용) 러너로 변경#

GitLab 15.0에서는 인스턴스(공유) 러너를 프로젝트(전용) 러너로 더 이상 변경할 수 없습니다.

사용자가 인스턴스 러너를 프로젝트 러너로 실수로 변경한 후 다시 되돌리지 못하는 경우가 자주 발생합니다. GitLab은 보안상의 영향 때문에 프로젝트 러너를 공유 러너로 변경하는 것을 허용하지 않습니다. 한 프로젝트용으로 만들어진 러너가 인스턴스 전체의 작업을 실행하도록 설정될 수 있기 때문입니다.

여러 프로젝트에 러너를 추가해야 하는 관리자는 한 프로젝트에 러너를 등록한 다음, 관리자 화면으로 이동해 추가 프로젝트를 선택할 수 있습니다.

Container Network and Host Security#

GitLab 14.8에서 GitLab Container Network Security 및 Container Host Security 카테고리와 관련된 모든 기능이 폐기되었으며 GitLab 15.0에서 제거될 예정입니다. 이 기능의 대체제가 필요한 사용자는 GitLab 외부에서 설치하고 관리할 수 있는 잠재적 솔루션으로 다음 오픈소스 프로젝트를 검토할 것을 권장합니다. AppArmor, Cilium, Falco, FluentD, Pod Security Admission.

이러한 기술을 GitLab에 통합하려면, 원하는 Helm 차트를 다음 문서의 Cluster Management Project Template 사본에 추가합니다. 이러한 Helm 차트를 프로덕션에 배포하려면 GitLab CI/CD를 통해 명령을 호출합니다.

이 변경 사항의 일환으로 GitLab 내 다음 특정 기능이 폐기되었으며 GitLab 15.0에서 제거될 예정입니다.

  • Security & Compliance > Threat Monitoring 페이지.
  • Security & Compliance > Policies 페이지에 있는 Network Policy 보안 정책 유형.
  • GitLab을 통해 AppArmor, Cilium, Falco, FluentD, Pod Security Policies와의 통합을 관리하는 기능.
  • 위 기능과 관련된 모든 API.

이 변경 사항에 대한 추가 맥락을 얻거나 피드백을 제공하려면 공개된 폐기 이슈를 참고합니다.

14.0.0 미만 컨테이너 스캐닝 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

컨테이너 스캐닝 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 컨테이너 스캐닝 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

14.0.0 미만 커버리지 유도 퍼징 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

커버리지 유도 퍼징 리포트 스키마 14.0.0 미만 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 커버리지 유도 퍼징 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

14.0.0 미만 DAST 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

DAST 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 DAST 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 표시됩니다, 취약점 리포트에서.

의존성 스캐닝 Python 3.9 및 3.6 이미지 폐기#

Python 프로젝트에 의존성 스캐닝을 사용하는 사용자를 위해, Python 3.6을 사용하는 기본 gemnasium-python:2 이미지와 Python 3.9를 사용하는 커스텀 gemnasium-python:2-python-3.9 이미지를 폐기합니다. GitLab 15.0부터 새로운 기본 이미지는 지원되는 버전인 Python 3.9 용이 되며, 3.6은 더 이상 지원되지 않습니다.

Python 3.9 또는 3.9 호환 프로젝트를 사용하는 사용자는 별도 조치를 취할 필요가 없으며 GitLab 15.0에서 의존성 스캐닝이 정상 동작하기 시작합니다. 지금 새 컨테이너를 테스트하려면 프로젝트에서 이 컨테이너(15.0에서 제거될 예정)로 테스트 파이프라인을 실행합니다. Python 3.9 이미지를 사용합니다.

gemnasium-python-dependency_scanning:
  image:
    name: registry.gitlab.com/gitlab-org/security-products/analyzers/gemnasium-python:2-python-3.9

Python 3.6을 사용하는 사용자는 GitLab 15.0부터 의존성 스캐닝의 기본 템플릿을 더 이상 사용할 수 없습니다. 폐기된 gemnasium-python:2 분석기 이미지로 전환해야 합니다. 이 변경의 영향을 받는 경우 이 이슈에 댓글을 남기면, 필요 시 제거 일정을 연장할 수 있습니다.

3.9 특별 예외 이미지를 사용하는 사용자는 대신 기본값을 사용해야 하며 더 이상 컨테이너를 재정의하지 않아야 합니다. 3.9 특별 예외 이미지를 사용 중인지 확인하려면 .gitlab-ci.yml 파일에서 다음 참조가 있는지 확인합니다.

gemnasium-python-dependency_scanning:
  image:
    name: registry.gitlab.com/gitlab-org/security-products/analyzers/gemnasium-python:2-python-3.9

의존성 스캐닝 기본 Java 버전이 17로 변경#

GitLab 15.0에서는 의존성 스캐닝에서 스캐너가 기대하는 기본 Java 버전이 11에서 17로 업데이트됩니다. Java 17은 가장 최신의 장기 지원(Long Term Support, LTS) 버전입니다. 의존성 스캐닝은 계속해서 동일한 버전 범위(8, 11, 13, 14, 15, 16, 17)를 지원하며, 기본 버전만 변경됩니다. 프로젝트에서 이전 기본값인 Java 11을 사용한다면 DS_Java_Version 변수를 맞게 설정합니다.

14.0.0 미만 의존성 스캐닝 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

의존성 스캐닝 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 의존성 스캐닝 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 표시됩니다, 취약점 리포트에서.

Geo 관리자 UI 경로 폐기#

  • GitLab 14.8에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 13.0에서 Geo 관리자 UI에 새로운 프로젝트 및 디자인 복제 상세 경로를 도입했습니다. 이 경로는 /admin/geo/replication/projects와 /admin/geo/replication/designs 입니다. 이전 경로는 유지하며 새 경로로 리다이렉트했습니다. GitLab 15.0에서는 이전 경로인 /admin/geo/projects와 /admin/geo/designs에 대한 지원을 제거합니다. 이전 경로를 사용하는 북마크나 스크립트가 있다면 업데이트합니다.

커스텀 Geo:db:* Rake 작업 폐기#

  • GitLab 14.8에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.8에서는 Geo 추적 데이터베이스가 Rails 6의 다중 데이터베이스 지원을 사용하도록 전환한 이후 가능해진 방식으로 geo:db:* Rake 작업을 내장 작업으로 교체합니다. 다음 geo:db:* 작업은 해당하는 db:*:geo 작업으로 교체됩니다.

  • geo:db:drop -> db:drop:geo
  • geo:db:create -> db:create:geo
  • geo:db:setup -> db:setup:geo
  • geo:db:migrate -> db:migrate:geo
  • geo:db:rollback -> db:rollback:geo
  • geo:db:version -> db:version:geo
  • geo:db:reset -> db:reset:geo
  • geo:db:seed -> db:seed:geo
  • geo:schema:load:geo -> db:schema:load:geo
  • geo:db:schema:dump -> db:schema:dump:geo
  • geo:db:migrate:up -> db:migrate:up:geo
  • geo:db:migrate:down -> db:migrate:down:geo
  • geo:db:migrate:redo -> db:migrate:redo:geo
  • geo:db:migrate:status -> db:migrate:status:geo
  • geo:db:test:prepare -> db:test:prepare:geo
  • geo:db:test:load -> db:test:load:geo
  • geo:db:test:purge -> db:test:purge:geo

기능 플래그 PUSH_RULES_SUPERSEDE_CODE_OWNERS 폐기#

기능 플래그 PUSH_RULES_SUPERSEDE_CODE_OWNERS는 GitLab 15.0에서 제거됩니다. 제거되면 푸시 규칙이 코드 소유자보다 우선하게 됩니다. 코드 소유자 승인이 필요한 경우에도, 특정 사용자의 코드 푸시를 명시적으로 허용하는 푸시 규칙이 코드 소유자 설정보다 우선합니다.

Elasticsearch 6.8#

Elasticsearch 6.8은 GitLab 14.8에서 폐기되었으며 GitLab 15.0에서 제거될 예정입니다. Elasticsearch 6.8을 사용하는 고객은 GitLab 15.0으로 업그레이드하기 전에 Elasticsearch 버전을 7.x로 업그레이드해야 합니다. Elasticsearch의 모든 개선 사항을 활용할 수 있도록 최신 버전의 Elasticsearch 7 사용을 권장합니다.

Elasticsearch 6.8은 GitLab 15.0에서 지원 예정인 Amazon OpenSearch 와도 호환되지 않습니다.

보안 리포트 스키마 검증 강제화#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보안 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 보안 리포트를 출력하여 GitLab과 통합하는 보안 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

외부 상태 확인 API 브레이킹 체인지#

외부 상태 확인 API는 원래 상태 확인을 통과 상태로 표시하는 기본 통과 요청을 지원하기 위해 구현되었습니다. 이제 기본 통과 요청은 폐기됩니다. 구체적으로 다음이 폐기됩니다.

  • status 필드를 포함하지 않는 요청.
  • status 필드가 approved로 설정된 요청.

GitLab 15.0부터 상태 확인은 status 필드가 존재하고 passed로 설정된 경우에만 통과 상태로 업데이트됩니다. 다음 요청은:

  • status 필드를 포함하지 않으면 422 오류로 거부됩니다. 자세한 내용은 관련 이슈를 참고합니다.
  • passed 이외의 값을 포함하면 상태 확인이 실패합니다. 자세한 내용은 관련 이슈를 참고합니다.

이 변경 사항에 맞추어, 외부 상태 확인을 나열하는 API 호출도 통과한 상태 확인에 대해 approved 대신 passed 값을 반환합니다.

데몬으로 실행되는 GitLab Pages#

  • GitLab 14.9에서 공지
  • GitLab 15.0에서 제거

GitLab 15.0에서 GitLab Pages의 데몬 모드 지원이 제거됩니다.

GitLab Serverless#

GitLab Serverless는 자동 배포 및 모니터링과 함께 Knative 기반 서버리스 개발을 지원하는 기능 세트입니다.

GitLab Serverless 기능이 사용자에게 실질적인 공감을 얻지 못해 제거하기로 결정했습니다. 또한 Kubernetes와 Knative가 계속 발전하면서, 현재 구현은 최신 버전에서 제대로 동작하지도 않습니다.

라이선스 준수에서 Godep 지원#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Go 용 Godep 의존성 관리자는 2020 년 Go에 의해 폐기되었으며 Go 모듈로 대체되었습니다. 유지보수 비용을 줄이기 위해 14.7부터 Godep 프로젝트의 라이선스 준수 기능을 폐기하며 GitLab 15.0에서 제거할 예정입니다.

GraphQL ID 및 GlobalID 호환성#

하위 호환성을 위해 추가했던 GraphQL 프로세서의 비표준 확장을 제거합니다. 이 확장은 GraphQL 쿼리의 검증 방식을 수정하여, 평소라면 거부될 인자에 ID 타입을 사용할 수 있게 했습니다. 일부 인자는 원래 ID 타입이었습니다. 이들은 특정 종류의 ID로 변경되었습니다. 다음 경우에 해당하면 이 변경 사항이 브레이킹 체인지이 될 수 있습니다.

  • GraphQL을 사용하는 경우.
  • 쿼리 시그니처의 인자에 ID 타입을 사용하는 경우.

일부 필드 인자는 여전히 ID 타입을 갖습니다. 이는 일반적으로 IID 값이나 네임스페이스 경로에 해당합니다. 예를 들어 Query.project(fullPath: ID!)가 있습니다.

영향을 받는 필드 인자와 받지 않는 필드 인자의 목록은 폐기 이슈를 참고합니다.

GitLab 서버에서 가져온 스키마 데이터를 사용해 쿼리를 로컬에서 검증하면 이 변경 사항이 자신에게 영향을 미치는지 테스트할 수 있습니다. 해당 GitLab 인스턴스의 GraphQL 탐색기 도구를 사용하면 이를 수행할 수 있습니다. 예: https://gitlab.com/-/graphql-explorer.

예를 들어 다음 쿼리는 이 브레이킹 체인지을 보여줍니다.

# a query using the deprecated type of Query.issue(id:)
# WARNING: This will not work after GitLab 15.0
query($id: ID!) {
  deprecated: issue(id: $id) {
    title, description
  }
}

위 쿼리는 GitLab 15.0 출시 이후 동작하지 않습니다. Query.issue(id:)의 타입이 실제로는 IssueID! 이기 때문입니다.

대신 다음 두 가지 형식 중 하나를 사용해야 합니다.

# This will continue to work
query($id: IssueID!) {
  a: issue(id: $id) {
    title, description
  }
  b: issue(id: "gid://gitlab/Issue/12345") {
    title, description
  }
}

이 쿼리는 현재 동작하며 GitLab 15.0 이후에도 계속 동작합니다. 시그니처에서 ID를 명명된 타입으로 사용하는 첫 번째 형식의 쿼리는, 시그니처에서 올바른 타입을 사용하거나 인라인 인자 표현식을 사용하는 나머지 두 형식 중 하나로 변환해야 합니다.

Package 설정에 대한 GraphQL 권한 변경#

GitLab Package 단계는 GitLab을 사용해 모든 의존성을 관리할 수 있도록 Package Registry, 컨테이너 레지스트리, Dependency Proxy를 제공합니다. 이들 각 제품 카테고리에는 API로 조정할 수 있는 다양한 설정이 있습니다.

GraphQL의 권한 모델이 업데이트됩니다. 15.0 이후, Guest, Reporter, Developer 권한을 가진 사용자는 다음 설정을 더 이상 업데이트할 수 없습니다.

GitLab Runner SSH 실행자에 Known Host 필요#

GitLab 14.3에서 GitLab Runner config.toml 파일에 설정 항목을 추가했습니다. 이 설정인 [runners.ssh.disable_strict_host_key_checking]는 SSH 실행자에서 엄격한 호스트 키 확인을 사용할지 여부를 제어합니다.

GitLab 15.0 이상에서는 이 설정 항목의 기본값이 true에서 false로 변경됩니다. 이는 GitLab Runner SSH 실행자를 사용할 때 엄격한 호스트 키 확인이 강제된다는 것을 의미합니다.

라이선스 준수 API의 이전 승인 상태 이름#

managed_licenses API에서 라이선스 정책의 승인 상태에 대한 이전 이름(blacklisted, approved)을 폐기했지만, API 쿼리와 응답에서는 여전히 사용되고 있습니다. 이는 15.0에서 제거됩니다.

라이선스 준수 API를 사용 중이라면 approved 및 blacklisted 쿼리 매개변수 사용을 중단해야 합니다. 이제는 allowed와 denied를 사용합니다. 15.0에서는 응답에서도 approved와 blacklisted 사용이 중단되므로, 15.0 릴리스에서 문제가 발생하지 않도록 커스텀 도구가 기존 값과 새 값을 모두 사용하도록 조정해야 합니다.

이전 데이터베이스 설정#

database.yml에 위치한 GitLab 데이터베이스 설정 문법이 변경되며 이전 형식은 폐기됩니다. 이전 형식은 단일 PostgreSQL 어댑터 사용을 지원했지만, 새 형식은 다중 데이터베이스를 지원하도록 변경됩니다. main: 데이터베이스를 첫 번째 설정 항목으로 정의해야 합니다.

이 폐기는 Omnibus가 이 설정을 자동으로 처리하기 때문에 주로 소스에서 GitLab을 컴파일하는 사용자에게 영향을 미칩니다.

GitLab의 로깅#

GitLab의 로깅 기능을 사용하면 애플리케이션 로그를 수집하고 관리하기 위해 ELK 스택(Elasticsearch, Logstash, Kibana)을 설치할 수 있습니다. 사용자는 GitLab에서 관련 로그를 검색할 수 있습니다. 그러나 Kubernetes 클러스터 및 GitLab Managed Apps와의 인증서 기반 통합을 폐기한 이후로는 GitLab 내 로깅에 대한 권장 솔루션이 없습니다. 자세한 내용은 GitLab과 Opstrace 통합 이슈를 참고합니다.

custom_hooks_dir 설정을 GitLab Shell에서 Gitaly로 이동#

  • GitLab 14.9에서 공지
  • GitLab 15.0에서 제거

custom_hooks_dir 설정은 이제 Gitaly에서 구성하며, GitLab 15.0에서 GitLab Shell 로부터 제거됩니다.

OAuth 암시적 부여(implicit grant)#

OAuth 암시적 부여 인가 흐름은 다음 주요 릴리스인 GitLab 15.0에서 제거됩니다. OAuth 암시적 부여를 사용하는 애플리케이션은 대체 가능한 지원되는 OAuth 흐름으로 전환해야 합니다.

만료되지 않는 OAuth 토큰#

기본적으로 모든 신규 애플리케이션은 액세스 토큰이 2 시간 후 만료됩니다. GitLab 14.2 이하 버전에서는 OAuth 액세스 토큰에 만료 기한이 없었습니다. GitLab 15.0에서는 만료 기한이 없는 기존 토큰에 대해 자동으로 만료 기한이 생성됩니다.

GitLab 15.0 출시 전에 토큰 만료를 옵트인해야 합니다.

  1. 애플리케이션을 편집합니다.
  2. Expire access tokens를 선택해 활성화합니다. 토큰은 폐기하지 않으면 만료되지 않습니다.

OmniAuth Kerberos gem#

omniauth-kerberos gem은 다음 주요 릴리스인 GitLab 15.0에서 제거됩니다.

이 gem은 유지 관리되지 않고 있으며 사용량도 매우 적습니다. 따라서 이 인증 방식에 대한 지원을 제거할 계획이며 대신 Kerberos SPNEGO 통합 사용을 권장합니다. omniauth-kerberos 통합에서 지원되는 통합으로 업그레이드하려면 업그레이드 안내를 참고합니다.

Kerberos SPNEGO 통합은 폐기하지 않으며, 이전의 비밀번호 기반 Kerberos 통합만 폐기한다는 점에 유의합니다.

PAT 만료 강제 적용의 선택적 사용#

PAT 만료 강제 적용을 비활성화하는 기능은 보안 관점에서 이례적입니다. 이 이례적인 기능이 사용자에게 예상치 못한 동작을 일으킬 수 있다는 우려가 있습니다. 보안 기능에서의 예상치 못한 동작은 본질적으로 위험하므로, 이 기능을 제거하기로 결정했습니다.

SSH 만료 강제 적용의 선택적 사용#

SSH 만료 강제 적용을 비활성화하는 기능은 보안 관점에서 이례적입니다. 이 이례적인 기능이 사용자에게 예상치 못한 동작을 일으킬 수 있다는 우려가 있습니다. 보안 기능에서의 예상치 못한 동작은 본질적으로 위험하므로, 이 기능을 제거하기로 결정했습니다.

Java 8에 대한 기본 제공 SAST 지원#

GitLab SAST SpotBugs 분석기는 보안 취약점을 찾기 위해 Java, Scala, Groovy, Kotlin 코드를 스캔합니다. 기술적인 이유로, 분석기는 스캔에 앞서 먼저 코드를 컴파일해야 합니다. 사전 컴파일 전략을 사용하지 않는 한, 분석기는 프로젝트의 코드를 자동으로 컴파일하려고 시도합니다.

15.0 이전 버전의 GitLab에서는 컴파일을 돕기 위해 분석기 이미지에 Java 8 및 Java 11 런타임이 포함되어 있습니다.

GitLab 15.0에서는 다음과 같이 변경됩니다.

  • 이미지 크기를 줄이기 위해 분석기 이미지에서 Java 8을 제거합니다.
  • Java 17로 더 쉽게 컴파일할 수 있도록 분석기 이미지에 Java 17을 추가합니다.

분석기 환경에 Java 8 이 있어야 하는 경우, 이 변경에 대한 폐기 이슈에 자세히 설명된 대로 조치해야 합니다.

고급 검색 마이그레이션의 오래된 인덱스#

고급 검색 마이그레이션은 보통 오랜 기간 여러 코드 경로를 지원해야 하므로, 안전하게 정리할 수 있을 때 정리하는 것이 중요합니다. 완전히 마이그레이션되지 않은 인덱스에 대한 하위 호환성을 제거하는 안전한 시점으로 GitLab 주요 버전 업그레이드를 활용합니다. 자세한 내용은 업그레이드 문서를 참고합니다.

Pseudonymizer#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Pseudonymizer 기능은 일반적으로 사용되지 않으며, 대규모 데이터베이스에서 프로덕션 문제를 일으킬 수 있고, 오브젝트 스토리지 개발을 방해할 수 있습니다. 이제 폐기된 것으로 간주되며, GitLab 15.0에서 제거됩니다.

instanceStatisticsMeasurements GraphQL 노드를 통한 사용 추이 조회#

instanceStatisticsMeasurements GraphQL 노드는 13.10에서 usageTrendsMeasurements로 이름이 변경되었으며 이전 필드 이름은 폐기된 것으로 표시되었습니다. 기존 GraphQL 쿼리를 수정하려면 instanceStatisticsMeasurements를 usageTrendsMeasurements로 교체합니다.

요청 프로파일링#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

요청 프로파일링은 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다.

현재 프로파일링 도구를 통합하여 더 쉽게 접근할 수 있도록 작업하고 있습니다. 이 기능의 사용 현황을 평가한 결과, 널리 사용되지 않는다는 것을 확인했습니다. 또한 더 이상 활발히 유지 관리되지 않거나 최신 버전의 Ruby에 맞게 업데이트되지 않았거나, 부하가 큰 페이지 로드를 프로파일링할 때 자주 충돌하는 일부 서드파티 gem에 의존하고 있습니다.

자세한 내용은 폐기 이슈의 요약 섹션을 확인합니다.

Premium 티어의 필수 파이프라인 구성#

필수 파이프라인 구성 기능은 Premium 고객을 대상으로 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다. 이 기능은 GitLab Ultimate 고객에게는 폐기되지 않습니다.

이 기능을 GitLab Ultimate 티어로 이전하는 이번 변경은, 이 기능에 대한 수요가 주로 경영진에서 발생한다는 점을 고려해 기능을 가격 정책 철학에 더 잘 맞추기 위한 것입니다.

또한 이번 변경은 다음과 같은 관련 Ultimate 티어 기능들과 티어 전략의 일관성을 유지하는 데 도움이 됩니다.

보안 정책 및 컴플라이언스 프레임워크 파이프라인입니다.

Retire-JS 의존성 스캐닝 도구#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

14.8부터 retire.js job은 의존성 스캐닝에서 폐기됩니다. 폐기 기간 동안에도 CI/CD 템플릿에는 계속 포함됩니다. GitLab 15.0에서는 2022년 5월 22일에 의존성 스캐닝에서 retire.js를 제거합니다. JavaScript 스캐닝 기능은 여전히 Gemnasium이 담당하므로 영향을 받지 않습니다.

DS_EXCLUDED_ANALYZERS를 사용해 retire.js를 명시적으로 제외한 경우, 15.0에서 해당 참조를 정리(제거)해야 합니다. retire-js-dependency_scanning job과 관련해 파이프라인의 의존성 스캐닝 구성을 커스터마이징한 경우, 파이프라인이 실패하지 않도록 15.0에서 제거되기 전에 gemnasium-dependency_scanning으로 전환해야 합니다. DS_EXCLUDED_ANALYZERS로 retire.js를 참조하지 않았거나 retire.js에 특화된 템플릿 커스터마이징을 하지 않았다면 별도 조치가 필요하지 않습니다.

14.0.0 미만 버전의 SAST 스키마#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정

SAST 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대해 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

SAST 보안 리포트를 파이프라인 job 아티팩트로 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 준수하도록 해야 합니다. 버전이 더 낮거나 선언된 스키마 버전에 대한 검증에 실패하는 리포트는 처리되지 않으며, 취약점 검출 결과가 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

.NET 2.1에 대한 SAST 지원#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab SAST Security Code Scan 분석기는 .NET 코드의 보안 취약점을 스캔합니다. 기술적인 이유로, 이 분석기는 코드를 스캔하기 전에 먼저 빌드해야 합니다.

GitLab 15.0 이전 버전에서는 기본 분석기 이미지(버전 2)가 다음을 지원합니다.

  • .NET 2.1
  • .NET 3.0 및 .NET Core 3.0
  • .NET Core 3.1
  • .NET 5.0

GitLab 15.0에서는 이 분석기의 기본 메이저 버전을 버전 2에서 버전 3으로 변경합니다. 이 변경 사항은 다음과 같습니다.

버전 3은 GitLab 14.6에서 발표되었으며 선택적 업그레이드로 제공되었습니다.

분석기 이미지에 기본으로 .NET 2.1 지원이 포함되어 있다는 점에 의존하고 있다면, 이 변경 사항에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

시크릿 탐지 구성 변수 폐기#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 시크릿 탐지를 커스터마이징하는 과정을 더 간단하고 안정적으로 만들기 위해, 기존에 CI/CD 구성에서 설정할 수 있었던 일부 변수를 폐기합니다.

다음 변수들은 현재 기록 스캔(historical scanning) 옵션을 커스터마이징할 수 있게 해주지만, GitLab 관리형 CI/CD 템플릿과 잘 맞지 않아 이번에 폐기됩니다.

  • SECRET_DETECTION_COMMIT_FROM
  • SECRET_DETECTION_COMMIT_TO
  • SECRET_DETECTION_COMMITS
  • SECRET_DETECTION_COMMITS_FILE

SECRET_DETECTION_ENTROPY_LEVEL은 이전에는 코드베이스의 문자열 엔트로피 수준만 고려하는 규칙을 구성할 수 있게 해주었으나, 이번에 폐기됩니다. 이 엔트로피 전용 규칙은 허용할 수 없을 만큼 많은 잘못된 결과(오탐)를 발생시켰으며, 더 이상 지원되지 않습니다.

GitLab 15.0에서는 시크릿 탐지 분석기가 이 폐기된 옵션들을 무시하도록 업데이트합니다. 커밋 기록에 대한 기록 스캔은 SECRET_DETECTION_HISTORIC_SCAN CI/CD 변수를 설정하여 계속 구성할 수 있습니다.

자세한 내용은 이 변경 사항에 대한 폐기 이슈를 참고합니다.

14.0.0 미만 버전의 시크릿 탐지 스키마#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정

시크릿 탐지 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대해 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

시크릿 탐지 보안 리포트를 파이프라인 job 아티팩트로 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 준수하도록 해야 합니다. 버전이 더 낮거나 선언된 스키마 버전에 대한 검증에 실패하는 리포트는 처리되지 않으며, 취약점 검출 결과가 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

Secure 및 Protect 분석기 이미지의 새 위치 게시#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab은 다양한 분석기를 사용해 보안 취약점을 스캔합니다. 각 분석기는 컨테이너 이미지 형태로 배포됩니다.

GitLab 14.8부터 GitLab Secure 및 Protect 분석기의 새 버전은 registry.gitlab.com/security-products 하위의 새 레지스트리 위치에 게시됩니다.

이 변경 사항을 반영하도록 GitLab 관리형 CI/CD 템플릿의 기본값을 업데이트할 예정입니다.

  • 컨테이너 스캐닝을 제외한 모든 분석기의 경우, SECURE_ANALYZERS_PREFIX 변수를 새 이미지 레지스트리 위치로 업데이트합니다.
  • 컨테이너 스캐닝의 경우 기본 이미지 주소가 이미 업데이트되어 있습니다. 컨테이너 스캐닝에는 SECURE_ANALYZERS_PREFIX 변수가 없습니다.

향후 릴리스에서는 registry.gitlab.com/gitlab-org/security-products/analyzers로의 이미지 게시를 중단합니다. 이렇게 되면, 이미지를 수동으로 pull하여 별도의 레지스트리에 push하는 경우 조치를 취해야 합니다. 이는 오프라인 배포에서 흔히 해당되는 경우입니다. 그렇지 않으면 이후 업데이트를 받을 수 없습니다.

자세한 내용은 폐기 이슈를 참고합니다.

Secure 및 Protect 분석기 메이저 버전 업데이트#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Secure 및 Protect Stage는 GitLab 15.0 릴리스와 함께 분석기의 메이저 버전을 올립니다. 이 메이저 버전 업그레이드를 통해 분석기를 다음과 같이 명확하게 구분할 수 있습니다.

  • 2022년 5월 22일 이전에 릴리스되어, 엄격한 스키마 검증 대상이 아닌 리포트를 생성하는 분석기
  • 2022년 5월 22일 이후에 릴리스되어, 엄격한 스키마 검증 대상_인_ 리포트를 생성하는 분석기

기본 include 템플릿을 사용하지 않거나 분석기 버전을 고정(pin)해두었다면, 고정된 버전을 제거하거나 최신 메이저 버전으로 업데이트하도록 CI/CD job 정의를 수정해야 합니다. GitLab 12.0~14.10 사용자는 GitLab 15.0 릴리스 전까지는 평소와 같이 분석기 업데이트를 계속 받습니다. 이후에는 유지 관리 정책에 따라 버그와 새 기능을 백포트하지 않으므로, 분석기 새 메이저 버전에서 새로 수정된 버그와 새로 출시된 기능을 폐기된 버전에서는 사용할 수 없습니다. 필요한 보안 패치는 최신 3개의 마이너 릴리스 내에서 백포트됩니다. 구체적으로 다음 항목들이 폐기되며, GitLab 15.0 릴리스 이후로는 더 이상 업데이트되지 않습니다.

  • API security: 버전 1
  • Container scanning: 버전 4
  • Coverage-guided fuzz testing: 버전 2
  • Dependency scanning: 버전 2
  • Dynamic application security testing (DAST): 버전 2
  • Infrastructure as Code (IaC) scanning: 버전 1
  • License scanning: 버전 3
  • Secret detection: 버전 3
  • Static application security testing (SAST): 모든 분석기의 버전 2, 단 현재 버전 3인 gosec은 제외
    • bandit: 버전 2
    • brakeman: 버전 2
    • eslint: 버전 2
    • flawfinder: 버전 2
    • gosec: 버전 3
    • kubesec: 버전 2
    • mobsf: 버전 2
    • nodejs-scan: 버전 2
    • phpcs-security-audit: 버전 2
    • pmd-apex: 버전 2
    • security-code-scan: 버전 2
    • semgrep: 버전 2
    • sobelow: 버전 2
    • spotbugs: 버전 2

Sidekiq 메트릭 및 헬스 체크 구성#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

단일 프로세스와 포트를 사용해 Sidekiq 메트릭과 헬스 체크를 내보내는 방식은 폐기됩니다. 지원은 15.0에서 제거됩니다.

안정성과 가용성을 개선하고 예외 상황에서의 데이터 손실을 방지하기 위해, 메트릭과 헬스 체크를 두 개의 별도 프로세스에서 내보내도록 Sidekiq를 업데이트했습니다. 이 둘은 별도의 서버이므로, 15.0에서는 메트릭과 헬스 체크에 대해 별도의 포트를 명시적으로 설정하도록 구성 변경이 필요합니다. 새로 도입된 sidekiq['health_checks_*'] 설정은 항상 gitlab.rb에 설정해야 합니다. 자세한 내용은 Sidekiq 구성 문서를 확인합니다.

이 변경 사항이 제대로 동작하려면 Prometheus가 새 엔드포인트를 스크랩하도록 업데이트하거나, k8s 헬스 체크가 새 헬스 체크 포트를 대상으로 하도록 업데이트해야 합니다. 그렇지 않으면 메트릭이나 헬스 체크 중 하나가 사라집니다.

폐기 기간 동안에는 이 설정들이 선택 사항이며, GitLab은 Sidekiq 헬스 체크 포트를 기본적으로 sidekiq_exporter와 동일한 포트로 설정하여 서버 하나만 실행합니다(현재 동작 방식은 변경되지 않습니다). 두 설정이 모두 지정되고 서로 다른 포트가 제공된 경우에만, Sidekiq 메트릭을 제공하기 위한 별도의 메트릭 서버가 기동되며, 이는 15.0에서 Sidekiq가 동작하는 방식과 유사합니다.

Static Site Editor#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Static Site Editor는 GitLab 15.0부터 더 이상 사용할 수 없습니다. GitLab 전반의 Markdown 편집 경험 개선을 통해 유사한 이점을 더 넓은 범위로 제공할 예정입니다. Static Site Editor로 들어오는 요청은 Web IDE로 리디렉션됩니다.

Static Site Editor를 현재 사용 중인 사용자는 기존 프로젝트에서 구성 파일을 제거하는 방법 등 자세한 내용을 문서에서 확인할 수 있습니다.

SLES 12 SP2 지원#

SUSE Linux Enterprise Server(SLES) 12 SP2의 장기 서비스 및 지원(LTSS)은 2021년 3월 31일에 종료되었습니다. SP2의 CA 인증서에는 만료된 DST 루트 인증서가 포함되어 있으며, 새로운 CA 인증서 패키지 업데이트를 받지 못하고 있습니다. 일부 우회 방법을 구현했지만, 빌드가 계속 정상적으로 동작하도록 유지할 수는 없습니다.

Gitaly와 나머지 GitLab 사이에 배포된 gRPC 인식 프록시 지원#

권장되지도 문서화되지도 않았지만, Gitaly와 나머지 GitLab 사이에 gRPC 인식 프록시(예: NGINX, Envoy)를 배포하는 것이 가능했습니다. gRPC 인식 프록시를 배포하는 기능은 폐기됩니다. 현재 Gitaly 연결에 gRPC 인식 프록시를 사용하고 있다면, 대신 TCP 또는 TLS 프록시(OSI 레이어 4)를 사용하도록 프록시 구성을 변경해야 합니다.

Gitaly Cluster는 GitLab 13.12에서 gRPC 인식 프록시와 호환되지 않게 되었습니다. 이제는 Gitaly Cluster를 사용하지 않아도 모든 GitLab 설치본이 gRPC 인식 프록시와 호환되지 않습니다.

일부 내부 RPC 트래픽을 gRPC 대신 커스텀 프로토콜로 전송함으로써 처리량을 늘리고 Go 가비지 컬렉션 지연 시간을 줄입니다. 자세한 내용은 관련 에픽을 참고합니다.

테스트 커버리지 프로젝트 CI/CD 설정#

테스트 커버리지 패턴 설정을 단순화하기 위해, GitLab 15.0에서는 테스트 커버리지 파싱을 위한 프로젝트 설정이 제거됩니다.

대신 프로젝트의 .gitlab-ci.yml에서 coverage 키워드에 정규 표현식을 지정해 머지 리퀘스트에 테스트 커버리지 결과를 설정합니다.

GitLab의 트레이싱#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab의 트레이싱은 오픈소스 엔드투엔드 분산 트레이싱 시스템인 Jaeger와의 통합 기능입니다. GitLab 사용자는 Jaeger 인스턴스로 이동해 배포된 애플리케이션의 성능에 대한 인사이트를 얻고, 주어진 요청을 처리하는 각 함수 또는 마이크로서비스를 추적할 수 있습니다. GitLab의 트레이싱은 GitLab 14.7에서 폐기되며 15.0에서 제거될 예정입니다. 가능한 대체 기능에 대한 작업을 추적하려면 GitLab과 Opstrace 통합 이슈를 참고합니다.

컨테이너 레지스트리 그룹 레벨 API 업데이트#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

마일스톤 15.0에서는, 그룹에서 레지스트리 리포지터리를 가져오는 컨테이너 레지스트리 API에서 tags 및 tags_count 매개변수 지원이 제거됩니다.

GET /groups/:id/registry/repositories 엔드포인트는 그대로 유지되지만 태그에 대한 정보는 반환하지 않습니다. 태그에 대한 정보를 얻으려면 기존의 GET /registry/repositories/:id 엔드포인트를 사용할 수 있으며, 이 엔드포인트는 현재와 마찬가지로 tags 및 tag_count 옵션을 계속 지원합니다. 이 엔드포인트는 이미지 리포지터리마다 한 번씩 호출해야 합니다.

Value Stream Analytics 필터링 계산 방식 변경#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Value Stream Analytics에서 날짜 필터가 동작하는 방식을 변경합니다. 이슈나 머지 리퀘스트가 생성된 시점을 기준으로 필터링하는 대신, 날짜 필터는 해당 스테이지의 종료 이벤트 시점을 기준으로 필터링합니다. 이 변경 사항이 적용되면 이전과 완전히 다른 수치가 나타납니다.

Value Stream Analytics 메트릭을 모니터링하면서 날짜 필터에 의존하고 있다면, 데이터 손실을 방지하기 위해 이번 변경 사항이 적용되기 전에 데이터를 저장해야 합니다.

Vulnerability Check#

Vulnerability Check 기능은 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다. 대신 새로운 보안 승인 기능으로 마이그레이션할 것을 권장합니다. Security & Compliance > Policies로 이동해 새 Scan Result Policy를 생성하면 마이그레이션할 수 있습니다.

새로운 보안 승인 기능은 Vulnerability Check와 유사합니다. 예를 들어 둘 다 보안 취약점이 포함된 머지 리퀘스트에 대해 승인을 요구할 수 있습니다. 다만 보안 승인은 다음과 같은 여러 측면에서 기존 경험을 개선합니다.

  • 보안 승인 규칙을 편집할 수 있는 사용자를 선택할 수 있습니다. 따라서 독립적인 보안 또는 컴플라이언스 팀이 개발 프로젝트 관리자가 규칙을 수정하지 못하도록 규칙을 관리할 수 있습니다.
  • 여러 규칙을 만들어 서로 연결함으로써 스캐너 유형별로 서로 다른 심각도 임계값을 기준으로 필터링할 수 있습니다.
  • 보안 승인 규칙에 대한 원하는 변경 사항에 2단계 승인 프로세스를 적용할 수 있습니다.
  • 단일 중앙 집중형 규칙 세트를 유지 관리하기 쉽도록, 하나의 보안 정책 세트를 여러 개발 프로젝트에 적용할 수 있습니다.

기본 PackageType의 Versions#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Package Registry GraphQL API를 만드는 작업의 일환으로, Package 그룹은 기본 PackageType 타입의 Version 타입을 폐기하고 이를 PackageDetailsType으로 옮겼습니다.

마일스톤 15.0에서는 PackageType에서 Version을 완전히 제거합니다.

apiFuzzingCiConfigurationCreate GraphQL mutation#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

API 퍼징 구성 스니펫은 이제 클라이언트 측에서 생성되며 더 이상 API 요청이 필요하지 않습니다. 따라서 더 이상 GitLab에서 사용되지 않는 apiFuzzingCiConfigurationCreate mutation을 폐기합니다.

artifacts:reports:cobertura 키워드#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

현재 GitLab의 테스트 커버리지 시각화는 Cobertura 리포트만 지원합니다. 15.0부터는 artifacts:reports:cobertura 키워드가 artifacts:reports:coverage_report로 대체됩니다. 15.0에서는 Cobertura가 유일하게 지원되는 리포트 파일이지만, 이는 GitLab이 다른 리포트 유형을 지원하기 위한 첫걸음입니다.

defaultMergeCommitMessageWithDescription GraphQL API 필드#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL API 필드 defaultMergeCommitMessageWithDescription은 폐기되었으며 GitLab 15.0에서 제거됩니다. 커밋 메시지 템플릿이 설정된 프로젝트의 경우, 이 필드는 템플릿을 무시합니다.

dependency_proxy_for_private_groups 기능 플래그#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab-#11582에서 public 그룹이 Dependency Proxy를 사용하는 방식이 변경됨에 따라 기능 플래그를 추가했습니다. 이 변경 이전에는 인증 없이 Dependency Proxy를 사용할 수 있었습니다. 이 변경으로 인해 Dependency Proxy를 사용하려면 인증이 필요합니다.

마일스톤 15.0에서는 이 기능 플래그를 완전히 제거합니다. 이후로는 Dependency Proxy를 사용할 때 반드시 인증해야 합니다.

컨테이너 레지스트리를 위한 htpasswd 인증#

컨테이너 레지스트리는 htpasswd를 사용한 인증을 지원합니다. 이는 Apache htpasswd 파일을 기반으로 하며, 비밀번호는 bcrypt로 해시됩니다.

GitLab(제품) 컨텍스트에서는 사용되지 않으므로, htpasswd 인증은 GitLab 14.9에서 폐기되고 GitLab 15.0에서 제거됩니다.

version 필드의 pipelines 필드#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL에는 패키지 버전에 대한 파이프라인을 가져오기 위해 PackageDetailsType에서 사용할 수 있는 pipelines 필드가 두 개 있습니다.

  • versions 필드의 pipelines 필드입니다. 이 필드는 패키지의 모든 버전과 연관된 모든 파이프라인을 반환하며, 메모리에 제한 없는 수의 객체를 불러올 수 있어 성능 문제를 일으킬 수 있습니다.
  • 특정 version의 pipelines 필드입니다. 이 필드는 해당 단일 패키지 버전과 연관된 파이프라인만 반환합니다.

발생 가능한 성능 문제를 완화하기 위해, 마일스톤 15.0에서 versions 필드의 pipelines 필드를 제거합니다. 패키지의 모든 버전에 대한 모든 파이프라인을 가져올 수는 없게 되지만, 남아 있는 해당 버전의 pipelines 필드를 통해 단일 버전의 파이프라인은 계속 가져올 수 있습니다.

PipelineSecurityReportFinding GraphQL의 projectFingerprint#

PipelineSecurityReportFinding GraphQL 객체의 projectFingerprint 필드가 폐기됩니다. 이 필드에는 고유성을 판단하는 데 사용되는 보안 발견 사항의 "핑거프린트"가 담겨 있습니다. 핑거프린트를 계산하는 방식이 변경되어 값이 달라집니다. 앞으로 새 값은 UUID 필드에 노출됩니다. 기존에 projectFingerprint 필드에서 제공되던 데이터는 결국 완전히 제거됩니다.

gitlab-ctl의 promote-db 명령#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.5에서는 장애 조치(failover) 중 Geo 보조 노드를 프라이머리로 승격시키는 gitlab-ctl promote 명령을 도입했습니다. 이 명령은 다중 노드 Geo 보조 사이트에서 데이터베이스 노드를 승격시키는 데 사용되던 gitlab-ctl promote-db를 대체합니다. gitlab-ctl promote-db는 GitLab 15.0까지는 기존과 동일하게 계속 동작하며 사용할 수 있습니다. Geo 고객은 스테이징 환경에서 새로운 gitlab-ctl promote 명령을 테스트하고, 이를 장애 조치 절차에 반영하기 시작할 것을 권장합니다.

gitlab-ctl의 promote-to-primary-node 명령#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.5에서는 장애 조치 중 Geo 보조 노드를 프라이머리로 승격시키는 gitlab-ctl promote 명령을 도입했습니다. 이 명령은 단일 노드 Geo 사이트에서만 사용할 수 있었던 gitlab-ctl promote-to-primary-node를 대체합니다. gitlab-ctl promote-to-primary-node는 GitLab 15.0까지는 기존과 동일하게 계속 동작하며 사용할 수 있습니다. Geo 고객은 스테이징 환경에서 새로운 gitlab-ctl promote 명령을 테스트하고, 이를 장애 조치 절차에 반영하기 시작할 것을 권장합니다.

CI/CD 구성의 type 및 types 키워드#

type 및 types CI/CD 키워드는 GitLab 15.0에서 제거됩니다. 이 키워드를 사용하는 파이프라인은 동작을 멈추므로, 동일한 동작을 하는 stage 및 stages로 전환해야 합니다.

bundler-audit 의존성 스캐닝 도구#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

14.6부터 bundler-audit는 의존성 스캐닝에서 폐기됩니다. 폐기 기간 동안에도 CI/CD 템플릿에는 계속 포함됩니다. 15.0에서는 2022년 5월 22일에 의존성 스캐닝에서 bundler-audit를 제거합니다. 이 제거 이후에도 Ruby 스캐닝 기능은 여전히 Gemnasium이 담당하므로 영향을 받지 않습니다.

DS_EXCLUDED_ANALYZERS를 사용해 bundler-audit를 명시적으로 제외한 경우, 15.0에서 해당 참조를 정리(제거)해야 합니다. 예를 들어 bundler-audit-dependency_scanning job을 수정하는 등 파이프라인의 의존성 스캐닝 구성을 커스터마이징한 경우, 파이프라인이 실패하지 않도록 15.0에서 제거되기 전에 gemnasium-dependency_scanning으로 전환해야 합니다. DS_EXCLUDED_ANALYZERS로 bundler-audit를 참조하지 않았거나 bundler-audit에 특화된 템플릿 커스터마이징을 하지 않았다면 별도 조치가 필요하지 않습니다.

GitLab 14.10#

Composer 의존성 다운로드 권한 변경#

GitLab Composer 리포지터리는 PHP 의존성을 push, 검색, 메타데이터 조회, 다운로드하는 데 사용할 수 있습니다. 의존성 다운로드를 제외한 모든 작업에는 인증이 필요합니다.

인증 없이 Composer 의존성을 다운로드하는 기능은 GitLab 14.9에서 폐기되며 GitLab 15.0에서 제거됩니다. GitLab 15.0부터는 Composer 의존성을 다운로드하려면 인증해야 합니다.

GitLab 14.9#

구성 가능한 Gitaly per_repository election 전략#

  • GitLab 14.8에서 발표됨
  • GitLab 14.9에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

per_repository Gitaly election 전략을 구성하는 기능은 폐기됩니다. per_repository는 GitLab 14.0부터 유일한 옵션이었습니다.

이 변경은 코드베이스를 깔끔하게 유지하기 위한 정기 유지 관리의 일환입니다.

통합 오류 추적 기본 비활성화#

  • GitLab 14.9에서 발표됨
  • GitLab 14.9에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.4에서 GitLab은 Sentry를 대체하는 통합 오류 추적 백엔드를 출시했습니다. 이 기능은 데이터베이스 성능 문제를 일으켰습니다. GitLab 14.9에서 통합 오류 추적은 GitLab.com에서 제거되었으며 GitLab Self-Managed에서는 기본적으로 꺼집니다. 이 기능의 향후 개발 방향을 검토하는 동안, 프로젝트 설정에서 오류 추적을 Sentry로 변경하여 Sentry 백엔드로 전환하는 것을 고려하기 바랍니다.

이번 제거에 대한 추가 배경 정보는 기본적으로 통합 오류 추적 비활성화를 참고합니다. 의견이 있다면 피드백: 통합 오류 추적 제거에 댓글을 남겨 주기 바랍니다.

GitLab 14.8#

openSUSE Leap 15.2 패키지#

  • GitLab 14.5에서 발표됨
  • GitLab 14.8에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

openSUSE Leap 15.2에 대한 배포판 지원 및 보안 업데이트는 2021년 12월에 종료됩니다.

14.5부터 openSUSE Leap 15.3용 패키지를 제공하며, 14.8 마일스톤에서 openSUSE Leap 15.2용 패키지 제공을 중단합니다.

GitLab 14.6#

제네릭 패키지로 배포되는 Release CLI#

  • GitLab 14.2에서 발표됨
  • GitLab 14.6에서 제거 예정

release-cli는 GitLab 14.2부터 제네릭 패키지로 릴리스됩니다. GitLab 14.5까지는 계속 바이너리 형태로 S3에 배포하며, GitLab 14.6에서 S3를 통한 배포를 중단합니다.

GitLab 14.5#

Task Runner pod를 Toolbox로 이름 변경#

  • GitLab 14.2에서 발표됨
  • GitLab 14.5에서 제거 예정

Task Runner pod는 GitLab 애플리케이션 내에서 정기적인 하우스키핑 작업을 실행하는 데 사용되며, GitLab Runner와 자주 혼동됩니다. 이에 따라 Task Runner는 Toolbox로 이름이 변경됩니다.

이에 따라 서브차트 이름도 gitlab/task-runner에서 gitlab/toolbox로 변경됩니다. 결과적으로 생성되는 pod는 {{ .Release.Name }}-toolbox 형태로 이름이 지정되며, 보통 gitlab-toolbox가 됩니다. 이 pod들은 app=toolbox 레이블로 찾을 수 있습니다.

보류 중인 변경 사항#

다음 변경 사항들은 원래의 마일스톤에서 제거되었으며 재평가 중입니다.

CodeClimate 기반 코드 품질 스캔이 제거됩니다#

  • GitLab 17.3에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

향후 릴리스에서 CodeClimate 기반 코드 품질 스캔을 제거할 예정입니다. 이 변경 사항은 원래 GitLab 18.0으로 예정되어 있었으나 지연되었습니다.

대신 CI/CD 파이프라인에서 품질 도구를 직접 사용하고 도구의 리포트를 아티팩트로 제공합니다. 이미 여러 도구를 직접 통합하는 방법을 문서화해 두었으며, 문서를 따라 통합할 수 있습니다.

다음과 같은 방식으로 이 변경 사항을 구현할 예정입니다.

  1. Code-Quality.gitlab-ci.yml CI/CD 템플릿을 변경해 더 이상 스캔을 실행하지 않도록 합니다. 현재 이 템플릿은 CodeClimate 기반 스캔을 실행합니다. (제거 이후에도 이 템플릿을 include 하는 파이프라인에 미치는 영향을 줄이기 위해, 템플릿을 삭제하지 않고 변경할 예정입니다.)
  2. Auto DevOps의 일부로 CodeClimate 기반 스캔을 더 이상 실행하지 않습니다.

즉시 적용되어 CodeClimate 기반 스캔은 제한된 업데이트만 받습니다. 지원 종료(End of Support) 이후에는 추가 업데이트를 제공하지 않습니다. 다만 이전에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 job 정의를 사용해 이를 실행하는 기능을 제거하지는 않습니다.

자세한 내용은 코드 품질 위반 스캔을 참고합니다.

컨테이너 레지스트리의 레거시 메타데이터 저장 방식#

  • GitLab 18.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 컨테이너 레지스트리의 레거시 메타데이터 저장 방식은 폐기 예정이며, 컨테이너 레지스트리 메타데이터 데이터베이스로 대체됩니다.

GitLab.com은 이미 메타데이터 데이터베이스를 사용하고 있습니다. 이번 폐기는 스토리지 백엔드(오브젝트 스토리지든 로컬 파일 시스템이든)에 메타데이터 정보를 직접 저장하는 레거시 컨테이너 레지스트리를 현재 사용 중인 GitLab Self-Managed 인스턴스에 영향을 줍니다.

레거시 메타데이터 저장 방식은 유지 관리(maintenance) 모드로 계속 지원되지만, 새로운 기능이나 개선 사항은 제공되지 않습니다. 가능한 한 빨리 컨테이너 레지스트리 메타데이터 데이터베이스로 마이그레이션할 것을 강력히 권장합니다.

이 변경 사항은 컨테이너 레지스트리가 이미지와 태그에 대한 메타데이터를 저장하는 방식에만 영향을 줍니다. 스토리지 백엔드(오브젝트 스토리지 또는 파일 시스템) 선택은 그대로 유지됩니다. 메타데이터 데이터베이스와 함께 오브젝트 스토리지 또는 파일 시스템 스토리지를 계속 사용할 수 있습니다.

레거시 메타데이터 저장 방식에서 메타데이터 데이터베이스로 마이그레이션하려면 컨테이너 레지스트리 메타데이터 데이터베이스 마이그레이션 가이드를 따릅니다. 마이그레이션 과정에는 메타데이터 데이터베이스 기능을 활성화하고 가져오기(import) 도구를 실행해 기존 레지스트리 데이터를 옮기는 작업이 포함됩니다.

메타데이터 데이터베이스는 더 나은 성능과 안정성을 제공하며, 레거시 메타데이터 저장 방식에서는 사용할 수 없는 새로운 컨테이너 레지스트리 기능을 제공합니다.

커버리지 기반 퍼즈 테스트가 폐기됩니다#

  • GitLab 18.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

커버리지 기반 퍼즈 테스트는 폐기 예정이며 GitLab 18.0부터 지원되지 않습니다. 이 기능은 GitLab 19.0에서 완전히 제거됩니다.

커버리지 기반 퍼즈 테스트는 여러 오픈소스 퍼저(fuzzer)를 GitLab에 통합했습니다. 영향을 받는 경우, 오픈소스 퍼저를 독립 애플리케이션으로 통합하거나, GitLab Advanced SAST와 같은 다른 보안 기능으로 마이그레이션할 수 있습니다.

JavaScript 벤더 라이브러리에 대한 의존성 스캔#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gemnasium 분석기(analyzer)가 의존성 스캔용으로 제공하는 JavaScript 벤더 라이브러리에 대한 의존성 스캔 기능은 GitLab 17.9에서 폐기 예정입니다.

이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 마이그레이션 가이드를 참고합니다.

대체 기능은 벤더 라이브러리에 대한 의존성 스캔으로 개발될 예정이지만, 제공 일정은 아직 정해지지 않았습니다.

의존성 스캔이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. 이 변경의 일환으로, 이전에 CI/CD 파이프라인에서 사용되던 Gemnasium 분석기는 GitLab 17.9에서 폐기 예정입니다.

이 기능은 SBOM을 사용한 의존성 스캔 기능과 의존성 및 그 관계(의존성 그래프)를 탐지하는 데 초점을 맞추고, 취약점 식별을 위해 이미 연속 취약점 스캔에서 사용 중인 GitLab 내장 SBOM 취약점 스캐너에 의존하는 새로운 의존성 스캔 분석기로 대체됩니다.

GitLab 18.5 기준으로 이 새로운 기능은 제한적 제공(Limited Availability) 상태입니다. 대다수 사용자가 새로운 의존성 스캔 기능으로 마이그레이션할 때까지 GitLab은 Gemnasium 분석기를 계속 지원합니다. 그 이후에야 Gemnasium 분석기는 지원 종료에 도달합니다.

이번 업그레이드가 가져오는 중대한 변경 사항과 기능 제거로 인해, 이 업그레이드는 자동으로 적용되지 않습니다. 기존 CI/CD job은 CI/CD 구성에 지장을 주지 않도록 기본적으로 Gemnasium 분석기를 사용해 계속 작동합니다.

아래의 자세한 변경 사항을 검토하고, 전환에 도움이 되도록 마이그레이션 가이드를 참고합니다.

  • CI/CD 구성에 지장이 없도록, 애플리케이션이 안정(stable) 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.gitlab-ci.yml)을 사용하는 경우, 의존성 스캔은 Gemnasium 분석기 기반의 기존 CI/CD job만 사용합니다.
  • 애플리케이션이 최신(latest) 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.latest.gitlab-ci.yml)을 사용하는 경우, 의존성 스캔은 Gemnasium 분석기 기반의 기존 CI/CD job을 사용하며, 지원되는 파일 형식에 대해서는 새로운 의존성 스캔 분석기도 함께 실행됩니다. 모든 프로젝트에 새로운 의존성 스캔 분석기를 강제 적용하도록 옵트인할 수도 있습니다.
  • 기능이 성숙해짐에 따라 다른 마이그레이션 경로도 고려될 수 있습니다.
  • Gemnasium 분석기 프로젝트는 폐기 예정이며, 해당 컨테이너 이미지(모든 태그와 변형)인 gemnasium, gemnasium-maven, gemnasium-python도 마찬가지입니다. 이 이미지들은 GitLab 컨테이너 레지스트리에서 제거되지 않습니다.
  • Gemnasium 분석기와 관련된 다음 CI/CD 변수도 폐기 예정입니다. 이 변수들은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 적용되지 않습니다. 변수가 다른 컨텍스트에서도 사용되는 경우, 폐기는 의존성 스캔 기능에만 적용됩니다(예: GOOS와 GOARCH는 의존성 스캔 기능에 특화된 변수가 아닙니다). DS_EXCLUDED_ANALYZERS, DS_GRADLE_RESOLUTION_POLICY, DS_IMAGE_SUFFIX, DS_JAVA_VERSION, DS_PIP_DEPENDENCY_PATH, DS_PIP_VERSION, DS_REMEDIATE_TIMEOUT, DS_REMEDIATE, GEMNASIUM_DB_LOCAL_PATH, GEMNASIUM_DB_REF_NAME, GEMNASIUM_DB_REMOTE_URL, GEMNASIUM_DB_UPDATE_DISABLED, GEMNASIUM_LIBRARY_SCAN_ENABLED, GOARCH, GOFLAGS, GOOS, GOPRIVATE, GRADLE_CLI_OPTS, GRADLE_PLUGIN_INIT_PATH, MAVEN_CLI_OPTS, PIP_EXTRA_INDEX_URL, PIP_INDEX_URL, PIPENV_PYPI_MIRROR, SBT_CLI_OPTS.
  • 다음 CI/CD 컴포넌트는 폐기 예정입니다: Android, Rust, Swift, CocoaPods. 이들은 지원되는 모든 언어와 패키지 매니저를 아우르는 메인 의존성 스캔 CI/CD 컴포넌트로 대체됩니다.
  • Yarn 프로젝트에 대한 취약점 해결(Resolve a vulnerability) 기능은 GitLab 17.9에서 폐기 예정입니다. 이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 해당 폐기 공지를 참고합니다.
  • JavaScript 벤더 라이브러리에 대한 의존성 스캔 기능은 GitLab 17.9에서 폐기 예정입니다. 이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 해당 폐기 공지를 참고합니다.

GitLab Advanced SAST가 기본으로 활성화됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 19.0에서 SAST CI/CD 템플릿을 업데이트하여 GitLab Ultimate를 사용하는 프로젝트에서 GitLab Advanced SAST를 기본으로 활성화합니다. 이 변경 이전에는 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLED를 true로 설정한 경우에만 GitLab Advanced SAST 분석기가 활성화되었습니다. 이 변경 사항은 원래 GitLab 18.0으로 예정되어 있었으나 지연되었습니다.

Advanced SAST는 크로스 파일, 크로스 함수 스캔과 새로운 규칙 집합(ruleset)을 사용해 더 정확한 결과를 제공합니다. Advanced SAST는 지원되는 언어의 커버리지를 넘겨받고, 해당 언어에 대한 이전 스캐너의 스캔을 비활성화합니다. 각 프로젝트의 기본 브랜치에서 첫 스캔을 수행한 후, 이전 스캐너의 결과가 여전히 탐지되는 경우 자동화된 프로세스가 이를 마이그레이션합니다.

프로젝트를 더 상세히 스캔하기 때문에, Advanced SAST는 프로젝트를 스캔하는 데 더 많은 시간이 걸릴 수 있습니다. 필요한 경우 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLED를 false로 설정해 GitLab Advanced SAST를 비활성화할 수 있습니다. GitLab 19.0에서 Advanced SAST가 기본으로 활성화되지 않도록 지금 프로젝트, 그룹, 정책에서 이 변수를 설정할 수 있습니다.

GitLab Runner Docker Machine executor가 폐기됩니다#

  • GitLab 17.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab Runner Docker Machine executor는 폐기 예정이며, GitLab 20.0(2027년 5월)에서 지원 기능으로서 제품에서 완전히 제거됩니다. Docker Machine의 대체 기능인 GitLab Runner Autoscaler는 Amazon Web Services(AWS) EC2, Google Compute Engine(GCE), Microsoft Azure 가상 머신(VM)용 GitLab 개발 플러그인과 함께 일반 제공(GA) 중입니다. 이번 발표와 함께 GitLab Runner 팀은 GitLab 이 유지 관리하는 Docker Machine 포크에 대한 커뮤니티 기여를 더 이상 받지 않으며, 새로 발견된 버그도 해결하지 않습니다.

GraphQL API의 GitLab Runner 플랫폼 및 설정 안내#

  • GitLab 15.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab Runner 플랫폼과 설치 안내를 가져오는 runnerPlatforms, runnerSetup 쿼리는 폐기 예정이며 GraphQL API에서 제거됩니다. 설치 안내가 필요한 경우 이 API 쿼리 대신 GitLab Runner 문서를 참고합니다.

GitLab Self-Managed의 Kubernetes 인증서 기반 연동#

  • GitLab 14.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Kubernetes와의 인증서 기반 연동은 폐기되어 제거될 예정입니다.

GitLab Self-Managed의 경우, 인증서 기반 연동을 계속 활성화할 수 있도록 GitLab 15.0에서 기능 플래그 certificate_based_clusters를 도입합니다. 다만 이 기능 플래그는 기본적으로 비활성화되므로, 이 변경 사항은 **호환성이 깨지는 변경(breaking change)**입니다.

더 견고하고 안전하며 향후 지속될 신뢰할 수 있는 Kubernetes 연동을 위해서는 Kubernetes 용 에이전트를 사용해 Kubernetes 클러스터를 GitLab에 연결합니다. 이 마이그레이션에 대한 자세한 내용은 Kubernetes 용 에이전트로 마이그레이션을 참고합니다.

새로운 솔루션이 기능 동등성(feature parity)을 확보할 때까지 GitLab은 이 기능을 제거하지 않습니다. 제거를 가로막는 요인에 대한 자세한 내용은 이슈 199를 참고합니다.

이 폐기에 대한 업데이트와 자세한 내용은 에픽 8을 참고합니다.

GitLab.com의 Kubernetes 인증서 기반 연동#

  • GitLab 14.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Kubernetes와의 인증서 기반 연동은 폐기되어 제거될 예정입니다. GitLab.com 사용자의 경우, GitLab 15.0부터 새 네임스페이스에서는 인증서 기반 방식으로 GitLab과 클러스터를 연동할 수 없습니다. 기존 사용자에 대한 연동은 네임스페이스별로 활성화됩니다.

더 견고하고 안전하며 향후 지속될 신뢰할 수 있는 Kubernetes 연동을 위해 Kubernetes 용 에이전트를 사용해 Kubernetes 클러스터를 GitLab에 연결할 것을 권장합니다. 마이그레이션 방법은?

이 폐기에 대한 업데이트와 자세한 내용은 이 에픽을 참고합니다.

GitLab Self-Managed 고객은 기능 플래그를 사용해 이 기능을 계속 사용할 수 있습니다.

GraphQL dependencyProxyTotalSizeInBytes 필드 폐기#

  • GitLab 16.1에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL을 사용해 GitLab Dependency Proxy가 사용하는 스토리지 용량을 조회할 수 있습니다. 다만 dependencyProxyTotalSizeInBytes 필드는 약 2기가바이트로 제한되어 있어, Dependency Proxy에는 항상 충분한 크기가 아닙니다. 그 결과 dependencyProxyTotalSizeInBytes는 폐기 예정입니다.

대신 GitLab 16.1에서 도입된 dependencyProxyTotalSizeBytes를 사용합니다.

OWASP top 10 2017 기준 그룹 취약점 리포트 그룹화가 폐기됩니다#

  • GitLab 17.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

OWASP top 10 2017 기준 취약점 리포트 그룹화는 폐기 예정이며, OWASP top 10 2021 기준 그룹화로 대체됩니다. 앞으로는 취약점 리포트 그룹화에 최신 버전의 OWASP top 10을 지원할 예정입니다. 이 변경과 함께, 이 기능이 사용하는 2017 GraphQL API 열거형(enum)도 폐기하여 제거합니다. 추가 세부 사항은 이 이슈에 포함되어 있습니다.

파이프라인 변수 사용에 대한 기본 보안 강화#

  • GitLab 17.7에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab은 기본 보안(secure-by-default) 관행을 지향합니다. 이를 위해 CI/CD 변수 사용과 관련한 최소 권한 원칙을 지원하도록 일부 변경을 진행합니다. 현재는 Developer 권한 이상의 사용자가 별도의 확인이나 옵트인 없이 기본적으로 파이프라인 변수를 사용할 수 있습니다.

최소 권한을 권장 설정인 Owner 전용 또는 아무도 허용 안 함으로 상향하면, 파이프라인 변수에 대해 더 안전한 기본 환경을 지금 바로 사용할 수 있습니다. 17.7부터 GitLab.com의 새 네임스페이스에 있는 모든 신규 프로젝트에서 no one allowed가 기본값입니다.

OpenTofu CI/CD 템플릿#

  • GitLab 17.1에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

당시 GitLab Self-Managed에서 CI/CD 컴포넌트를 아직 사용할 수 없었기 때문에, 16.8에서 OpenTofu CI/CD 템플릿을 도입했습니다. GitLab Self-Managed 용 GitLab CI/CD 컴포넌트가 도입됨에 따라 중복되는 OpenTofu CI/CD 템플릿을 제거하고 CI/CD 컴포넌트를 사용하도록 전환합니다.

CI/CD 템플릿에서 컴포넌트로 마이그레이션하는 방법은 OpenTofu 컴포넌트 문서를 참고합니다.

파이프라인 실행 정책의 inject_ci 전략이 inject_policy로 대체됩니다#

  • GitLab 17.11에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

파이프라인 실행 정책에 커스텀 스테이지(custom stages)가 도입됨에 따라(GitLab 17.9부터 제공), 폐기 예정인 inject_ci를 대체할 구성 옵션 inject_policy를 도입했습니다.

이 새로운 전략을 통해, inject_ci 전략을 사용하는 기존 파이프라인 실행 정책을 가진 사용자도 커스텀 스테이지 기능을 점진적으로 적용할 수 있습니다.

예정된 제거에 대비하려면, inject_ci를 사용하는 모든 파이프라인 실행 정책을 inject_policy를 사용하도록 업데이트합니다.

일반적인 User, Project, Group API 엔드포인트에 대한 요청 제한#

  • GitLab 17.4에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

자주 사용되는 User, Project, Group 엔드포인트에 대해 요청 제한이 기본으로 활성화됩니다. 이러한 요청 제한을 기본으로 활성화하면 전체 시스템 안정성을 개선하는 데 도움이 될 수 있습니다. 과도한 API 사용이 전반적인 사용자 경험에 부정적인 영향을 줄 가능성을 줄이기 때문입니다. 제한을 초과하는 요청은 HTTP 429 오류 코드와 추가 요청 제한 헤더를 반환합니다.

기본 요청 제한은 GitLab.com에서 관측되는 요청률을 기준으로, 대부분의 사용에 지장이 없도록 의도적으로 다소 높게 설정되었습니다. 인스턴스 관리자는 이미 적용되어 있는 다른 요청 제한과 마찬가지로, 관리자 영역에서 필요에 따라 제한을 더 높이거나 낮게 설정할 수 있습니다.

ContainerRepository GraphQL API의 migrationState 필드 제거#

  • GitLab 17.6에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab GraphQL API의 ContainerRepositoryType에 있는 migrationState 필드는 폐기 예정입니다. 이 폐기는 API를 간소화하고 개선하려는 노력의 일환입니다.

이 변경에 대비하려면, ContainerRepositoryType과 상호작용하는 GraphQL 쿼리를 검토하고 업데이트할 것을 권장합니다. migrationState 필드에 대한 참조를 모두 제거하고 그에 맞게 애플리케이션 로직을 조정합니다.

GraphQL에서 previousStageJobsOrNeeds 제거#

  • GitLab 17.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL의 previousStageJobsOrNeeds 필드는 previousStageJobs 필드와 needs 필드로 대체되어 제거됩니다.

PipelineSchedulePermissions의 GraphQL 필드 take_ownership_pipeline_schedule를 admin_pipeline_schedule로 교체#

  • GitLab 15.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL 필드 take_ownership_pipeline_schedule는 폐기 예정입니다. 사용자가 파이프라인 스케줄의 소유권을 가져갈 수 있는지 확인하려면 대신 admin_pipeline_schedule 필드를 사용합니다.

Yarn 프로젝트의 의존성 스캔에 대한 취약점 해결#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gemnasium 분석기가 의존성 스캔용으로 제공하는 Yarn 프로젝트용 취약점 해결(Resolve a vulnerability) 기능은 GitLab 17.9에서 폐기 예정입니다.

이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 마이그레이션 가이드를 참고합니다.

대체 기능은 Auto Remediation 비전의 일환으로 계획되어 있지만, 제공 일정은 아직 정해지지 않았습니다.

공개 API의 구독 관련 엔드포인트가 폐기됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

공개 REST API의 다음 엔드포인트가 제거됩니다.

  • PUT /api/v4/user/:id/credit_card_validation
  • POST /api/v4/namespaces/:namespace_id/minutes
  • PATCH /api/v4/namespaces/:previous_namespace_id/minutes/move/:target_namespace_id
  • GET /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • PUT /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • POST /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • POST /api/v4/namespaces/:id/gitlab_subscription
  • PUT /api/v4/namespaces/:id/gitlab_subscription
  • PUT /api/v4/namespaces/:id

이 엔드포인트들은 Subscription Portal 이 GitLab.com의 구독 정보를 관리하는 데 사용해 왔습니다. 이들의 사용은 향후 도입될 Cells 아키텍처를 지원하기 위해 JWT 인증을 사용하는 내부 엔드포인트로 대체되었습니다. 공개 API의 엔드포인트는 실수로 다시 사용되는 일을 막고, 기능이 어긋나기 시작하면서 발생하는 유지 관리 부담을 줄이기 위해 제거됩니다.

이 엔드포인트는 내부적으로 사용되던 것이므로, 이 변경으로 인한 영향은 없습니다.

agentk 컨테이너 레지스트리가 Cloud Native GitLab으로 이전됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

agentk 컨테이너 레지스트리를 프로젝트 전용 레지스트리에서 Cloud Native GitLab(CNG) 레지스트리로 이전합니다. GitLab 18.0부터 CNG에서 빌드된 agentk 이미지는 프로젝트 전용 레지스트리로 미러링됩니다. 새 이미지는 amd64, arm64 아키텍처만 지원한다는 점을 제외하면 기존 이미지와 동일합니다. 32비트 arm 아키텍처는 지원하지 않습니다. GitLab 19.0부터 프로젝트 전용 레지스트리는 agentk 업데이트를 받지 않습니다. agentk 컨테이너를 로컬 레지스트리로 미러링하는 경우, 미러 소스를 CNG 레지스트리로 변경해야 합니다.

공식 GitLab Agent Helm 차트를 사용하는 경우, GitLab 18.0에서 새로운 agentk 이미지가 새 위치에서 매끄럽게 배포되기 시작합니다.

CI/CD job 토큰의 JWT 표준 전환#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 19.0에서 CI/CD job 토큰은 문자열 토큰 형식에서 JWT 토큰 형식으로 전환됩니다. 이 변경은 모든 프로젝트의 신규 및 기존 CI/CD job 토큰에 영향을 줍니다. 문제가 발생하면 GitLab 20.0 릴리스까지는 CI/CD 토큰에 레거시 형식을 계속 사용할 수 있습니다.

알려진 문제:

  1. GitLab Runner의 AWS Fargate Drive 0.5.0 이하 버전은 JWT 표준과 호환되지 않습니다. job 이 file name too long 오류와 함께 실패합니다. AWS Fargate 커스텀 executor 드라이버 사용자는 0.5.1 이상으로 업그레이드해야 합니다. 마이그레이션 방법은 문서를 참고합니다.
  2. 훨씬 길어진 JWT 표준으로 인해 일부 CI/CD 구성 파일에서 사용하는 echo $CI_JOB_TOKEN | base64 명령이 깨집니다. 대신 echo $CI_JOB_TOKEN | base64 -w0 명령을 사용할 수 있습니다.

Gitaly의 bin_path, use_bundled_binaries 구성 옵션#

  • GitLab 18.2에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gitaly에서 bin_path, use_bundled_binaries 구성 옵션 사용에 대한 지원은 폐기 예정이며 GitLab 19.0에서 제거됩니다.

Gitaly가 제공하는 Git 바이너리만이 Git을 실행하는 유일한 지원 방식이 됩니다.

mergeTrainIndex, mergeTrainsCount GraphQL 필드 폐기#

  • GitLab 17.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

MergeRequest의 GraphQL 필드 mergeTrainIndex, mergeTrainsCount는 폐기 예정입니다. 머지 트레인(merge train)에서 머지 리퀘스트의 위치를 확인하려면 대신 MergeTrainCar의 index 필드를 사용합니다. 머지 트레인에 포함된 MR 수를 구하려면 대신 MergeTrains::TrainType의 cars에서 count를 사용합니다.

scanResultPolicies GraphQL 필드가 폐기됩니다#

  • GitLab 17.8에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

16.10에서 scan result policies는 정책 유형의 범위와 기능 변화를 더 정확히 반영하도록 merge request approval policies로 이름이 변경되었습니다.

이에 따라 GraphQL 엔드포인트도 업데이트했습니다. scanResultPolicies 대신 approvalPolicies를 사용합니다.

취소된 변경 사항#

다음 변경 사항은 취소되었습니다.

컨테이너 스캔 기본 심각도 임계값이 medium으로 설정#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

컨테이너 스캔 보안 기능은 많은 보안 발견 항목(finding)을 생성하며, 이 양은 엔지니어링 팀이 관리하기 어려운 경우가 많습니다. 심각도 임계값을 medium으로 변경함으로써, medium 미만의 심각도를 가진 발견 항목은 보고되지 않는 더 합리적인 기본값을 사용자에게 제공합니다. GitLab 18.0부터 환경 변수 CS_SEVERITY_THRESHOLD의 기본값이 unknown 대신 medium으로 설정됩니다. 그 결과 low, unknown 심각도 수준의 보안 발견 항목은 기본적으로 더 이상 보고되지 않습니다. 따라서 기본 브랜치에서 이전에 보고되었던 이러한 심각도의 취약점은 다음 컨테이너 스캔 실행 시 더 이상 탐지되지 않음으로 표시됩니다. 이러한 발견 항목을 계속 표시하려면 CS_SEVERITY_THRESHOLD 변수를 원하는 수준으로 설정해야 합니다.

License Scanning CI/CD 아티팩트 리포트 유형 폐기#

  • GitLab 16.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

CI/CD 아티팩트 리포트(artifact report) 유형은 GitLab 16.9에서 폐기 예정이며 GitLab 18.0에서 제거됩니다. 이 키워드를 사용하는 CI/CD 구성은 GitLab 18.0에서 작동을 멈춥니다.

이 아티팩트 리포트 유형은 GitLab 16.3에서 레거시 License Scanning CI/CD job 이 제거됨에 따라 더 이상 사용되지 않습니다. 대신 CycloneDX 파일의 라이선스 스캔을 사용해야 합니다.

CI/CD 템플릿에서 지원 종료된 SAST job 이 제거됩니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

GitLab 18.0에서는 이전 릴리스에서 지원 종료된 분석기 job을 제거하도록 SAST CI/CD 템플릿을 업데이트할 예정입니다. 다음 job 이 SAST.gitlab-ci.yml 및 SAST.latest.gitlab-ci.yml에서 제거됩니다:

각 분석기가 지원 종료되었을 당시, 기본적으로 실행되지 않도록 해당 job의 rules를 업데이트하고 업데이트 배포를 중단했습니다. 다만 이러한 job을 계속 사용하거나 파이프라인에 이러한 job 이 존재하는 것에 의존하도록 템플릿을 커스터마이징했을 수 있습니다. 위 job에 의존하는 커스터마이징이 있다면, CI/CD 파이프라인 중단을 방지하기 위해 18.0으로 업그레이드하기 전에 필요한 작업을 수행합니다.

Secure 컨테이너 레지스트리의 공개 사용이 폐기됩니다#

  • GitLab 17.4에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

registry.gitlab.com/gitlab-org/security-products/ 아래의 컨테이너 레지스트리는 GitLab 18.0에서 더 이상 액세스할 수 없습니다. GitLab 14.8 부터 올바른 위치는 registry.gitlab.com/security-products 아래입니다(주소에 gitlab-org가 없음에 유의합니다).

이 변경 사항은 GitLab 취약점 스캐너의 릴리스 프로세스 보안을 개선합니다.

사용자는 registry.gitlab.com/security-products/ 아래의 동등한 레지스트리를 사용하는 것이 권장됩니다. 이는 GitLab 보안 스캐너 이미지의 정규 위치입니다. 관련 GitLab CI 템플릿은 이미 이 위치를 사용하므로, 수정하지 않은 템플릿을 사용하는 사용자는 변경할 필요가 없습니다.

오프라인 배포 환경에서는 필요한 스캐너 이미지를 미러링할 때 올바른 위치가 사용되고 있는지 확인하기 위해 특정 스캐너 안내를 검토해야 합니다.

SAST job 이 더 이상 전역 캐시 설정을 사용하지 않습니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

GitLab 18.0에서는 기본적으로 CI/CD job 캐시 사용을 명시적으로 비활성화 하도록 SAST 및 IaC 스캐닝을 업데이트할 예정입니다.

이 변경 사항은 다음에 대한 CI/CD 템플릿에 영향을 미칩니다.

  • SAST: SAST.gitlab-ci.yml.
  • IaC 스캐닝: SAST-IaC.gitlab-ci.yml.

latest 템플릿인 SAST.latest.gitlab-ci.yml 및 SAST-IaC.latest.gitlab-ci.yml은 이미 업데이트되었습니다. 이러한 템플릿 버전에 대한 자세한 내용은 stable 및 latest 템플릿을 참고합니다.

대부분의 프로젝트에서 캐시 디렉터리는 스캔 대상 범위에 포함되지 않으므로, 캐시를 가져오면 타임아웃이나 오탐 결과가 발생할 수 있습니다.

프로젝트를 스캔할 때 캐시를 사용해야 한다면, 프로젝트의 CI 설정에서 cache 속성을 재정의 하여 이전 동작을 복원할 수 있습니다.

시크릿 탐지 분석기가 기본적으로 root 사용자로 실행되지 않습니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

시크릿 탐지 분석기에 대한 이 계획된 변경 사항은 취소되었습니다. 기본적으로 root 사용자를 계속 사용할 수 있습니다.

SpotBugs 스캔의 일부로 프로젝트 빌드 지원#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

SpotBugs SAST 분석기는 스캔할 아티팩트가 없을 때 빌드를 수행할 수 있습니다. 이는 대체로 간단한 프로젝트에서는 잘 동작하지만, 더 복잡한 빌드에서는 실패할 수 있습니다.

GitLab 18.0부터, SpotBugs 분석기의 빌드 실패를 해결하려면 다음을 수행해야 합니다.

  1. 프로젝트를 사전 컴파일 합니다.
  2. 스캔하려는 아티팩트를 분석기에 전달합니다.

이는 기능 변경이 아니므로, 명확성을 위해 이 발표를 "Cancelled(취소됨)"로 표시했습니다.

Disclaimer

이 페이지에는 개발 중인 제품, 기능에 대한 정보가 포함되어 있습니다. 이 정보는 참고 목적으로만 제공되며, 구매 또는 계획 시 이 정보에 의존하지 마십시오.

지원 중단

GitLab v19.5
원문 보기

요약

다음 GitLab 기능은 폐기되었으며 더 이상 사용을 권장하지 않습니다. 이 폐기 정보를 대상으로 고급 검색과 필터링을 하려면 Customer Success 팀이 만든 도구를 사용해 봅니다. REST API 폐기 목록은 별도로 문서화되어 있습니다.

다음 GitLab 기능은 폐기되었으며 더 이상 사용을 권장하지 않습니다.

이 폐기 정보를 대상으로 고급 검색과 필터링을 하려면 Customer Success 팀이 만든 도구를 사용해 봅니다.

REST API 폐기 목록은 별도로 문서화되어 있습니다.

[rss] 예정된 브레이킹 체인지 알림을 받으려면, RSS 피드 리더에 다음 URL을 추가합니다: https://docs.gitlab.com/releases/breaking-changes.xml

GitLab 21.0#

Code Suggestions v2 및 v3 AI Gateway 엔드포인트#

  • GitLab 19.5에서 발표
  • GitLab 21.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

AI Gateway 엔드포인트 /v2/completions, /v2/code/completions, /v2/code/generations, /v3/code/completions는 GitLab 19.5에서 폐기되었으며 GitLab 21.0에서 제거될 예정입니다. Code Suggestions 요청은 대신 /v4/code/suggestions를 사용해야 합니다.

GitLab.com은 GitLab 19.1부터 /v4/code/suggestions를 사용하고 있습니다. GitLab.com에서는 별도의 조치가 필요하지 않습니다.

GitLab Self-Managed, GitLab Dedicated, GitLab 편집기 확장은 이후 릴리스에서 v4 엔드포인트로 전환됩니다. 이 변경이 포함된 버전을 추적하려면 이슈 605661을 참고합니다. 자체 호스팅 AI Gateway를 운영한다면 GitLab 21.0용 AI Gateway 이미지에서도 이 엔드포인트가 제거됩니다.

중단을 방지하려면 GitLab 21.0이 릴리스되기 전에 다음을 수행합니다.

  • 인스턴스를 최신 GitLab 버전으로 업그레이드합니다.
  • 편집기 확장을 최신 버전으로 업데이트합니다.
  • AI Gateway를 직접 호출하는 사용자 지정 클라이언트를 /v4/code/suggestions를 사용하도록 업데이트합니다.

GitLab 20.0#

컴플라이언스 파이프라인#

  • GitLab 17.3에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

현재 프로젝트 파이프라인에서 컴플라이언스 또는 보안 관련 job 이 실행되도록 보장하는 방법은 두 가지입니다.

프로젝트의 모든 파이프라인에서 필수 job 실행을 보장하는 단일 지점을 제공하기 위해 GitLab은 17.3에서 컴플라이언스 파이프라인을 폐기했으며 GitLab 20.0에서 이 기능을 제거할 예정입니다.

고객은 컴플라이언스 파이프라인에서 새로운 파이프라인 실행 정책 유형으로 가능한 한 빨리 마이그레이션해야 합니다.

자세한 내용은 다음을 참고합니다.

패키지용 Dependency Proxy 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

패키지용 Dependency Proxy는 폐기되었으며 향후 릴리스에서 제거될 예정입니다. 이 기능은 Maven 가상 레지스트리로 대체되었으며, 향상된 성능과 더 나은 업스트림 프록시·캐싱 기능, GitLab 패키지 관리 워크플로와의 더 긴밀한 통합을 제공합니다.

필요한 조치: 패키지 매니저 설정을 패키지용 Dependency Proxy 엔드포인트에서 Maven 가상 레지스트리로 마이그레이션합니다. 설정 방법은 Maven 가상 레지스트리 문서를 참고합니다.

GraphQL의 previousStageJobs 폐기#

  • GitLab 19.2에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GraphQL CiJob 타입의 previousStageJobs 필드는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. GitLab UI가 더 이상 의존 관계 계산에 previousStageJobs를 필요로 하지 않으므로 서버 측 대체 수단은 필요하지 않습니다.

Design Management 폐기#

  • GitLab 18.6에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 20.0부터 GitLab은 Design Management 폐기를 시작합니다. Design Management는 사용자가 협업을 위해 와이어프레임, 목업 등의 디자인 자산을 GitLab 이슈에 업로드할 수 있게 해주는 기능입니다. 기존 사용량과 예상 고객 영향을 신중히 검토한 끝에 이러한 결정을 내렸습니다. Design Management에 필요한 지속적인 유지 관리 비용이 현재 사용량을 상회했으며, 현대적인 디자이너 워크플로에 더 부합하는 솔루션에 역량을 집중하고자 합니다. GitLab 20.0 이후로는 사용자가 새로운 디자인을 업로드할 수 없습니다. 기존 디자인은 GitLab 21.0까지 읽기 전용 모드로 계속 제공되어, 사용자가 필요에 따라 디자인을 저장할 시간을 확보할 수 있습니다. GitLab은 디자이너가 이미 사용 중인 도구와 더 잘 통합되는 대안을 검토하고 있습니다.

감사 이벤트 API의 키셋 페이지네이션 강제#

  • GitLab 17.8에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

인스턴스, 그룹, 프로젝트용 감사 이벤트 API는 현재 선택적 키셋 페이지네이션을 지원합니다. GitLab 20.0에서는 이러한 API에 키셋 페이지네이션을 강제할 예정입니다.

GitLab Helm 차트 값 gitlab.kas.ingress.grpc.enabled#

  • GitLab 19.5에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Helm 차트에서 KAS gRPC Ingress는 이제 global.kas.ingress.grpc.enabled로 제어하며, 이 값은 Kubernetes용 에이전트에 알리는 주소가 네이티브 gRPC(grpcs://)를 사용할지 WebSocket(wss://)을 사용할지도 결정합니다.

kas 차트의 로컬 값 gitlab.kas.ingress.grpc.enabled는 폐기되었으며 차트 11.0(GitLab 20.0)에서 제거될 예정입니다. 이 값은 여전히 gRPC Ingress를 렌더링할지 제어하지만, 다른 차트가 알리는 주소를 도출할 때 이 값을 볼 수 없으므로 Ingress와 주소가 서로 다를 수 있습니다.

gitlab.kas.ingress.grpc.enabled를 설정했다면 차트 11.0으로 업그레이드하기 전에 이 값을 global.kas.ingress.grpc.enabled로 옮깁니다. 둘 다 설정하지 않으면 기본값이 유지됩니다. NGINX Ingress 공급자에는 gRPC Ingress가 렌더링되며, 차트가 gRPC를 KAS로 라우팅할 때 에이전트는 grpcs://를 가리키게 됩니다.

Go 모듈 프록시(실험적 기능) 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 패키지 레지스트리의 실험적 Go 모듈 프록시는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 이 기능은 실험적 상태를 벗어난 적이 없습니다.

이 기능은 Go 가상 레지스트리로 대체될 예정이며, GitLab을 통한 Go 모듈 해석에 더 완전하고 신뢰할 수 있는 경험을 제공합니다.

필요한 조치: GitLab을 Go 모듈 프록시로 사용 중이라면 Go 가상 레지스트리가 제공되는 대로 마이그레이션을 계획합니다. 그 전까지는 GOPROXY 환경 변수를 업데이트하여 대체 프록시(proxy.golang.org 또는 자체 호스팅 솔루션 등)를 구성할 수 있습니다.

GraphQL useWorkItemsView 사용자 환경설정#

  • GitLab 19.5에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

UserPreferences 타입의 useWorkItemsView 필드와 userPreferencesUpdate 뮤테이션의 useWorkItemsView 인수는 GitLab 19.5에서 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 이슈에서 작업 항목으로의 마이그레이션이 완료되어 항상 작업 항목 보기가 사용되므로, 이 환경설정은 필요하지 않습니다. GitLab 19.5부터 이 인수는 허용되지만 무시되고 필드는 항상 true를 반환합니다. 뮤테이션에서 이 인수를, 쿼리에서 이 필드를 제거합니다. 대체 항목은 없습니다.

레거시 retry:when 실패 사유 stuck_or_timeout_failure와 job_execution_timeout 폐기#

  • GitLab 19.1에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서 범용 job 실패 사유였던 stuck_or_timeout_failure와 job_execution_timeout은 더 구체적인 사유 집합(예: stuck_pending_no_matching_runners, no_updates_running, server_timeout_running)으로 분리되었습니다. 새 빌드는 더 이상 기존 사유로 기록되지 않습니다.

이러한 기존 사유는 .gitlab-ci.yml의 retry:when에서는 여전히 유효한 값입니다. 기존 설정이 알아채지 못한 채 깨지는 것을 방지하기 위해, retry:when 아래에 stuck_or_timeout_failure 또는 job_execution_timeout을 나열하면 GitLab은 이를 대체된 구체적 사유 전체 집합과 일치하는 별칭으로 처리합니다. 또한 이러한 값이 사용되면 GitLab은 CI 린트 출력과 파이프라인 에디터에 차단하지 않는 경고를 표시합니다.

두 값 모두 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

필요한 조치: retry:when을 다음과 같이 구체적인 실패 사유를 사용하도록 업데이트합니다.

  • stuck_or_timeout_failure는 stuck_pending_with_matching_runners, stuck_pending_no_matching_runners, no_updates_running, no_updates_canceling 중 해당하는 부분집합으로 대체합니다.
  • job_execution_timeout은 server_timeout_running 및/또는 server_timeout_canceling으로 대체합니다.

레거시 그룹 수준 감사 이벤트 스트리밍 대상 GraphQL API#

  • GitLab 18.10에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

다음 감사 이벤트 스트리밍 대상용 그룹 수준 GraphQL API는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

폐기된 뮤테이션:

  • externalAuditEventDestinationCreate - 대신 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • externalAuditEventDestinationDestroy - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • externalAuditEventDestinationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • googleCloudLoggingConfigurationCreate - 대신 gcpLogging 카테고리와 함께 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • googleCloudLoggingConfigurationDestroy - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • googleCloudLoggingConfigurationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsAmazonS3ConfigurationCreate - 대신 amazonS3 카테고리와 함께 groupAuditEventStreamingDestinationsCreate를 사용합니다.
  • auditEventsAmazonS3ConfigurationDelete - 대신 groupAuditEventStreamingDestinationsDelete를 사용합니다.
  • auditEventsAmazonS3ConfigurationUpdate - 대신 groupAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsStreamingHeadersCreate - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingHeadersDestroy - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingHeadersUpdate - groupAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingDestinationEventsAdd - 대신 auditEventsGroupDestinationEventsAdd를 사용합니다.
  • auditEventsStreamingDestinationEventsRemove - 대신 auditEventsGroupDestinationEventsRemove를 사용합니다.
  • auditEventsStreamingHttpNamespaceFiltersAdd - 대신 auditEventsGroupDestinationNamespaceFilterCreate를 사용합니다.
  • auditEventsStreamingHttpNamespaceFiltersDelete - 대신 auditEventsGroupDestinationNamespaceFilterDelete를 사용합니다.

폐기된 그룹 필드:

  • Group.externalAuditEventDestinations - 대신 Group.externalAuditEventStreamingDestinations를 사용합니다.
  • Group.googleCloudLoggingConfigurations - 대신 gcpLogging 카테고리와 함께 Group.externalAuditEventStreamingDestinations를 사용합니다.
  • Group.amazonS3Configurations - 대신 amazonS3 카테고리와 함께 Group.externalAuditEventStreamingDestinations를 사용합니다.

새로운 통합 스트리밍 대상 API는 category 매개변수를 사용하는 단일 엔드포인트 집합을 통해 모든 대상 카테고리(HTTP, Google Cloud Logging, Amazon S3)를 지원합니다.

레거시 인스턴스 수준 감사 이벤트 스트리밍 대상 GraphQL API#

  • GitLab 18.10에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

다음 감사 이벤트 스트리밍 대상용 인스턴스 수준 GraphQL API는 폐기되었으며 GitLab 20.0에서 제거될 예정입니다.

폐기된 뮤테이션:

  • instanceExternalAuditEventDestinationCreate - 대신 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • instanceExternalAuditEventDestinationDestroy - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • instanceExternalAuditEventDestinationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationCreate - 대신 gcpLogging 카테고리와 함께 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationDestroy - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • instanceGoogleCloudLoggingConfigurationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationCreate - 대신 amazonS3 카테고리와 함께 instanceAuditEventStreamingDestinationsCreate를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationDelete - 대신 instanceAuditEventStreamingDestinationsDelete를 사용합니다.
  • auditEventsInstanceAmazonS3ConfigurationUpdate - 대신 instanceAuditEventStreamingDestinationsUpdate를 사용합니다.
  • auditEventsStreamingInstanceHeadersCreate - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingInstanceHeadersDestroy - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingInstanceHeadersUpdate - instanceAuditEventStreamingDestinationsUpdate를 사용해 스트리밍 대상 설정에서 헤더를 구성합니다.
  • auditEventsStreamingDestinationInstanceEventsAdd - 대신 auditEventsInstanceDestinationEventsAdd를 사용합니다.
  • auditEventsStreamingDestinationInstanceEventsRemove - 대신 auditEventsInstanceDestinationEventsRemove를 사용합니다.

폐기된 쿼리 필드:

  • instanceExternalAuditEventDestinations - 대신 auditEventsInstanceStreamingDestinations를 사용합니다.
  • instanceGoogleCloudLoggingConfigurations - 대신 gcpLogging 카테고리와 함께 auditEventsInstanceStreamingDestinations를 사용합니다.
  • auditEventsInstanceAmazonS3Configurations - 대신 amazonS3 카테고리와 함께 auditEventsInstanceStreamingDestinations를 사용합니다.

새로운 통합 스트리밍 대상 API는 category 매개변수를 사용하는 단일 엔드포인트 집합을 통해 모든 대상 카테고리(HTTP, Google Cloud Logging, Amazon S3)를 지원합니다.

NGINX Ingress, HAProxy, Traefik 차트 지원#

  • GitLab 18.9에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 기본 Envoy Gateway(Kubernetes Gateway API 사용)의 대안으로 여러 Ingress 컨트롤러를 번들로 제공합니다.

이렇게 번들로 제공되는 Ingress 컨트롤러인 NGINX Ingress, HAProxy, Traefik는 GitLab Helm 차트와 GitLab Operator에서 제거될 예정입니다. Ingress 사용 자체는 GitLab Helm 차트와 GitLab Operator에서 계속 지원되지만, 이를 위해서는 외부 Ingress 컨트롤러를 배포해야 합니다.

번들로 제공되는 Envoy Gateway와 Gateway API로 마이그레이션할 것을 권장합니다. 또는 다음과 같이 외부 Ingress 컨트롤러와 클래스를 배포하고 구성할 수 있습니다.

gitlab-ctl patroni failover와 switchover의 --master 옵션#

  • GitLab 19.4에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

gitlab-ctl patroni failover와 gitlab-ctl patroni switchover 명령의 --master 옵션은 폐기되었으며 GitLab 20.0에서 제거될 예정입니다. 두 명령 모두 GitLab 19.4부터 --leader를 받아들이며, 이는 patronictl 이 사용하는 옵션 이름과 일치합니다.

마이그레이션하려면 이러한 명령을 호출하는 스크립트와 런북에서 --master를 --leader로 교체합니다. 이 옵션은 동일한 값, 즉 현재 리더 노드의 이름을 받습니다. 제거되기 전까지 --master는 기존 동작을 유지하며 폐기 경고를 출력합니다.

kpt 기반 agentk가 폐기됩니다#

  • GitLab 17.9에서 발표
  • GitLab 20.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Kubernetes 용 에이전트의 kpt 기반 설치에 대한 지원을 제거할 예정입니다. kpt 패키지는 손상되었고 오래되었습니다. 2022년 이후 유지 관리되지 않았고, 그 이후 Helm 차트에 추가된 기능이 없으며, 알려진 사용자도 없습니다. 대신 다음 지원되는 설치 방법 중 하나로 에이전트를 설치해야 합니다.

  • Helm(권장)
  • GitLab CLI
  • Flux

kpt에서 Helm으로 마이그레이션하려면 에이전트 설치 문서를 따라 kpt로 배포된 agentk 인스턴스를 덮어씁니다.

GitLab 19.5#

Bitbucket Cloud 이슈 및 위키 가져오기#

  • GitLab 19.1에서 발표
  • GitLab 19.5에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Atlassian은 2026 년 8 월 20 일에 Bitbucket Cloud 이슈와 위키를 종료할 예정입니다. 해당 날짜 이후에는 기반 API 엔드포인트가 제거되어 GitLab 이 더 이상 Bitbucket Cloud에서 이슈나 위키를 가져올 수 없습니다.

GitLab 19.3에서 Bitbucket Cloud 임포터는 API 제거를 우아하게 처리하여 이슈와 위키를 건너뛸 예정입니다. GitLab 19.5에서는 이슈와 위키에 대한 가져오기 코드가 제거될 예정입니다.

Bitbucket 이슈 데이터가 필요한 사용자는 2026 년 8 월 20 일 기한 전에 가져오기를 완료하거나, Bitbucket에서 내보낸 후 CSV 가져오기를 사용해야 합니다. 위키의 경우 기한 전에 Bitbucket 위키 리포지터리를 로컬로 클론합니다.

GraphQL secretPermissionUpdate 및 secretPermissionDelete 뮤테이션#

  • GitLab 19.5에서 발표
  • GitLab 19.5에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab Secrets Manager를 베타에서 정식 출시(Generally Available)로 전환하는 과정의 하나로, GitLab은 GitLab 19.5에서 secretPermissionUpdate 및 secretPermissionDelete GraphQL 뮤테이션을 제거합니다. 대신 projectSecretsPermissionUpdate와 projectSecretsPermissionDelete를 사용합니다. 대체 뮤테이션은 기존 뮤테이션과 같은 서비스를 호출합니다.

새 뮤테이션은 소문자 문자열 값을 받던 기존 permissions 인수 대신 actions 인수를 받습니다. 새 actions 인수는 SecretsManagementAction enum을 받습니다. 이 enum의 각 값은 대문자입니다. 기존 값을 새 값으로 다음과 같이 대응시킵니다.

  • "read"는 READ에 대응합니다.
  • "create" 단독은 CREATE에 대응합니다.
  • "create"와 함께이든 아니든 "update"는 WRITE에 대응합니다.
  • "delete"는 DELETE에 대응합니다.

응답 형태도 바뀝니다. 다음 변경 사항에 맞게 코드를 업데이트합니다.

  • 페이로드 필드 이름이 secretPermission에서 secretsPermission으로 바뀝니다.
  • 페이로드 타입 이름이 SecretPermission에서 ProjectSecretsPermission으로 바뀝니다.
  • 새 타입에는 permissions 필드가 없습니다. 대신 actions 필드를 읽습니다.

GitLab 19.3#

REST API가 정수 경로 매개변수에 숫자가 아닌 ID를 사용하면 400을 반환#

  • GitLab 19.3에서 발표
  • GitLab 19.3에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

이전에는 여러 REST API 엔드포인트가 정수 타입 경로 매개변수에 대해 사전 검증 없이 숫자가 아니거나 다중 값인 입력을 받아들였습니다. 이러한 요청은 명확한 오류 대신 일관성 없는 응답 (401 Unauthorized, 404 Not Found, 드물게는 잠재적 버그로 인한 200 OK)을 반환했습니다. 이제는 매개변수 타입을 검증하여 400 Bad Request를 반환합니다.

마이그레이션하려면 각 요청에 단일 숫자 ID를 전송합니다. 정상적인 클라이언트는 이미 이렇게 하고 있으므로, 형식이 올바른 요청에는 별도 조치가 필요하지 않습니다.

GitLab 19.2#

Self Managed Ultimate 티어에 Advanced Search 필요#

  • GitLab 18.11에서 발표
  • GitLab 19.2에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

이제 Self Managed Ultimate 티어 고객은 Ultimate 티어 기능 전체에 완전히 접근하려면 Advanced Search를 반드시 사용해야 합니다. Advanced Search 없이도 GitLab 이 손상되지는 않지만, 활성화하지 않으면 Ultimate 티어 기능을 모두 사용할 수 있는 것은 아닙니다.

이전에는 특정 기능의 쿼리 성능을 개선하는 방법으로 Advanced Search 활성화를 권장했습니다. 이제는 Advanced Search를 필요로 하는 전체 기능 구축이 GitLab에 요구되는 제공 속도와 품질을 충족하는 데 근본적이라는 결론을 내렸습니다.

Advanced Search를 사용하지 않아도 기존 기능이 손상되거나 저하되지는 않습니다. 이는 향후를 대비한 변경일 뿐입니다. Advanced Search 없이는 새 기능이 지원되지 않을 수 있습니다. Ultimate 티어 GA 기능은 이제 전체 또는 일부 기능에 Advanced Search를 반드시 요구할 수 있습니다.

Advanced Search 활성화 방법은 문서에서 확인할 수 있습니다.

GitLab 19.1#

Advanced Search에서 Elasticsearch 7.x 더 이상 지원하지 않음#

  • GitLab 18.10에서 발표
  • GitLab 19.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Elasticsearch 7.x의 유지보수 기간은 2026-01-15에 종료되었습니다. GitLab Self-Managed의 경우 관리자는 advanced search를 사용하려면 Elasticsearch 인스턴스를 업그레이드해야 합니다.

Amazon Linux 2 용 Linux 패키지 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.1에서는 Linux 패키지용 Amazon Linux 2(AL2) 패키지 빌드를 제거합니다.

Amazon Linux 2는 2026 년 6 월에 수명이 종료되며, 이후에는 보안 업데이트를 받지 못합니다. Linux 패키지 지원 플랫폼 정책에 따라, 벤더가 운영체제 지원을 중단하면 최소 6 개월의 발표 기간을 두고 패키지 빌드를 중단합니다.

현재 Amazon Linux 2에서 GitLab을 운영 중이라면 GitLab 19.1로 업그레이드하기 전에 Amazon Linux 2023(AL2023) 또는 다른 지원되는 운영체제로 마이그레이션해야 합니다. Amazon은 AL2에서 AL2023으로 이전하는 데 도움이 되는 마이그레이션 문서를 제공합니다.

GitLab 19.0#

컨테이너 레지스트리용 Azure 스토리지 드라이버#

  • GitLab 17.10에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

컨테이너 레지스트리용 레거시 Azure 스토리지 드라이버는 GitLab 17.10에서 폐기되었으며 GitLab 19.0에서 제거될 예정입니다. 컨테이너 레지스트리에 Azure 오브젝트 스토리지를 사용 중이며 새 드라이버를 미리 사용하려면 설정을 업데이트하여 새로운 azure_v2 드라이버를 사용해야 합니다. GitLab 19.0에서는 폐기된 Azure 드라이버가 azure_v2 드라이버의 별칭이 되어 별도의 수동 조치가 필요하지 않습니다.

azure_v2 스토리지 드라이버는 레거시 드라이버에 비해 향상된 안정성과 성능을 제공하며, 유지보수하기 더 쉬운 코드베이스를 사용합니다. 이러한 개선 사항은 레지스트리 사용량이 늘어나면서 발생할 수 있는 성능 문제를 예방하는 데 도움이 됩니다.

azure_v2 드라이버로 마이그레이션하려면:

  1. 레지스트리 설정 파일을 업데이트하여 레거시 azure 드라이버 대신 azure_v2 드라이버를 사용합니다.
  2. 새 드라이버에 맞게 필요한 설정을 조정합니다.
  3. 프로덕션에 배포하기 전에 비프로덕션 환경에서 새 설정을 테스트합니다.

스토리지 드라이버 설정 업데이트에 관한 자세한 내용은 오브젝트 스토리지 사용을 참고합니다.

Container Registry의 AWS S3 Signature Version 2 지원#

  • GitLab 17.8에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

컨테이너 레지스트리에서 Amazon S3 Signature Version 2를 사용한 요청 인증 지원은 GitLab 17.8에서 폐기되었으며 GitLab 19.0에서 제거될 예정입니다.

AWS SDK v2 기반의 새로운 S3v2 스토리지 드라이버(GitLab 17.10부터 베타로 제공되며 19.0에서 기본값이 됨)는 Signature Version 4만 지원합니다. S3v2 드라이버가 기본값이 되면 Signature Version 2 관련 설정(v4auth: false 등)은 사용자가 알아채지 못한 채 무시됩니다.

S3v2가 기본 드라이버가 되는 GitLab 버전으로 업그레이드하기 전에 Signature Version 4로 마이그레이션할 수 있습니다. 이 변경에는 S3 버킷 설정 업데이트와 GitLab 컨테이너 레지스트리 설정이 Signature Version 4와 호환되는지 확인하는 작업이 필요합니다.

마이그레이션하려면:

  1. GitLab 컨테이너 레지스트리 설정의 S3 스토리지 백엔드 구성을 확인합니다.
  2. v4auth가 false로 설정되어 있다면 해당 옵션을 제거합니다.
  3. 기존 자격 증명이 v4 인증에서 동작하는지 확인합니다.

이러한 변경 후 문제가 발생하면 AWS 자격 증명을 재생성해 봅니다.

인증되지 않은 Projects API 요청에 대한 페이지 제한 강제#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

플랫폼 안정성을 유지하고 모든 고객에게 최적의 성능을 보장하기 위해, 인증되지 않은 Projects API 요청에 최대 오프셋 제한을 강제합니다. 이 오프셋 제한은 GitLab.com 에만 적용됩니다. GitLab Self-Managed와 GitLab Dedicated에서는 기능 플래그 뒤에서 오프셋 제한이 기본적으로 비활성화됩니다.

변경 사항

Projects List REST API에 대한 인증되지 않은 모든 요청에 최대 50,000 개의 오프셋 제한이 강제됩니다. 예를 들어 페이지당 20 개 결과를 조회할 경우 page 매개변수는 2,500 페이지로 제한됩니다.

더 많은 데이터에 접근해야 하는 워크플로는 키셋 기반 페이지네이션 매개변수를 사용해야 합니다.

중요한 이유

이 제한은 리소스 사용률을 효과적으로 관리하여 GitLab.com 전반에서 일관된 서비스 품질과 성능을 보장합니다.

SUSE 배포판용 Linux 패키지 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서 SUSE 배포판에 대한 지원을 종료합니다. 이는 다음에 영향을 미칩니다.

  • openSUSE Leap 15.6
  • SUSE Linux Enterprise Server 12.5
  • SUSE Linux Enterprise Server 15.6

openSUSE Leap 15.6은 수명 종료가 임박했습니다. SUSE Linux Enterprise Server는 SUSE의 장기 서비스로 계속 지원되지만, GitLab 고객 사이의 채택률이 너무 낮아 지속적인 지원을 상업적으로 유지하기 어렵습니다.

Linux 패키지를 사용하는 SUSE 배포판 고객은 GitLab을 18.11.x 버전 이후로 업그레이드할 수 없습니다.

이러한 배포판을 사용하는 고객은 기존 배포판에서 GitLab의 Docker 배포로 마이그레이션할 것을 권장합니다. 이렇게 하면 GitLab 업그레이드를 계속 받기 위해 다른 Linux 배포판으로 이전할 필요가 없습니다.

업데이트: SLES 12.5의 RPM 패키지 크기 제약으로 인해, Mattermost와 Spamcheck는 모든 배포판에서 예정된 제거보다 앞서 GitLab 18.11에서 SLES 12.5 패키지로부터 GitLab 19.0에서 제거되었습니다.

Ubuntu 20.04 용 Linux 패키지 지원#

  • GitLab 17.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

Ubuntu 20.04의 Ubuntu 표준 지원은 2025 년 5 월에 종료되었습니다.

Linux 패키지 지원 플랫폼 정책에 따라, 벤더가 운영체제 지원을 중단하면 패키지 빌드를 중단합니다.

GitLab 19.0 부터는 Linux 패키지 설치용 Ubuntu 20.04 배포판 패키지를 더 이상 제공하지 않습니다. GitLab 18.11 이 Ubuntu 20.04 용 Linux 패키지를 제공하는 마지막 GitLab 버전입니다.

현재 Ubuntu 20.04에서 GitLab을 운영 중이라면 GitLab 19.0으로 업그레이드하기 전에 Ubuntu 22.04 또는 다른 지원되는 운영체제로 업그레이드해야 합니다. Canonical은 마이그레이션에 도움이 되는 업그레이드 가이드를 제공합니다.

Linux 패키지에 번들된 Mattermost#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 Linux 패키지에서 번들 Mattermost를 제거할 계획입니다.

Mattermost는 2015 년 오픈 소스 팀 메시징 솔루션으로 GitLab에 처음 번들되었으며, 통합을 지원하기 위해 GitLab SSO가 포함되었습니다. 이후 Mattermost는 자체 패키징과 배포 옵션을 크게 발전시켰으며, GitLab 고객 사이의 번들 Mattermost 채택률은 상대적으로 낮게 유지되었습니다.

Mattermost v11에서 Mattermost는 무료 제공에서 GitLab SSO를 폐기했습니다. 이러한 변경, Mattermost 독립형 배포 옵션의 성숙도, 그리고 고객 기반에서의 낮은 채택률을 고려하여 Linux 패키지에서 Mattermost를 제거합니다.

현재 GitLab에 번들된 Mattermost를 사용 중이라면 마이그레이션 방법과 사용 가능한 Mattermost 에디션은 Mattermost 문서의 GitLab Omnibus에서 Mattermost Standalone으로 마이그레이션을 참고합니다.

Resource owner password credentials 그랜트 폐기#

  • GitLab 18.0에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

OAuth 플로로서 resource owner password credentials(ROPC) 그랜트를 사용하는 것은 폐기되었으며 GitLab 19.0에서 지원이 완전히 제거될 예정입니다. 관리자가 자신의 인스턴스에서 이 그랜트 타입을 클라이언트 자격 증명과 함께만 사용하도록 활성화하거나 비활성화할 수 있는 설정을 추가했습니다. 이를 통해 클라이언트 자격 증명 없이 ROPC 사용을 중단하려는 사용자는 19.0 이전에 이를 적용할 수 있습니다. ROPC는 19.0에서 완전히 제거되며, 그 이후에는 클라이언트 자격 증명과 함께라도 사용할 수 없습니다.

GitLab은 보안상의 이유로 2025 년 4 월 8 일부터 GitLab.com에서 ROPC에 대한 클라이언트 인증을 요구해 왔습니다. ROPC 지원을 완전히 제거하면 보안이 OAuth RFC 버전 2.1에 부합하게 됩니다.

컨테이너 레지스트리용 S3 스토리지 드라이버(AWS SDK v1)#

  • GitLab 17.10에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 관해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.

AWS SDK v1을 사용하는 컨테이너 레지스트리용 S3 스토리지 드라이버는 폐기되었으며 GitLab 19.0에서 제거될 예정입니다. 컨테이너 레지스트리에 S3 오브젝트 스토리지를 사용 중이며 새 드라이버를 더 빨리 사용하려면 설정을 업데이트하여 새로운 s3_v2 드라이버를 사용해야 합니다. GitLab 19.0에서는 폐기된 s3 드라이버가 s3_v2 드라이버의 별칭이 되어 별도의 수동 조치가 필요하지 않습니다.

s3_v2 스토리지 드라이버는 AWS SDK v2를 기반으로 하며 향상된 성능, 더 나은 보안, AWS의 지속적인 지원을 제공합니다. 2025 년 5 월부터 제공되어, 2025 년 7 월 31 일에 지원이 종료되는 폐기된 AWS SDK v1을 대체합니다.

s3_v2 드라이버는 더 이상 Signature Signing Algorithm v2를 지원하지 않습니다. 설정에서 v4auth: false 옵션이 지정되어 있으면 s3_v2 드라이버가 이를 알아채지 못한 채 무시하고 더 안전한 V4 알고리즘을 사용합니다. s3_v2 드라이버로 마이그레이션하려면:

  1. 레지스트리 설정 파일을 업데이트하여 s3 대신 s3_v2 설정을 사용합니다.
  2. AWS SDK v2는 Signature Version 4만 지원하므로, 아직 이전하지 않았다면 인증을 Signature Version 2에서 Signature Version 4로 전환합니다.
  3. 프로덕션에 배포하기 전에 비프로덕션 환경에서 설정을 테스트합니다.

AWS S3에서는 드라이버 변경으로 인해 클라이언트가 레지스트리 블롭을 다운로드할 때 사용하는 presigned URL의 호스트 이름도 바뀔 수 있습니다. AWS SDK v2는 설정된 리전에 맞는 S3 엔드포인트를 확인하므로, presigned URL 이 전역 s3.amazonaws.com 호스트 이름 대신 s3.us-east-1.amazonaws.com과 같은 리전별 호스트 이름을 사용할 수 있습니다. 네트워크에서 아웃바운드 트래픽을 제한하는 경우, 업그레이드 전에 프록시나 방화벽 허용 목록에 해당 리전 호스트 이름을 추가합니다. 그렇지 않으면 이미지 풀이 403 Forbidden 응답으로 실패합니다.

스토리지 드라이버 설정 업데이트에 관한 자세한 내용은 오브젝트 스토리지 사용을 참고합니다.

Slack 슬래시 명령어#

  • GitLab 18.7에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Slack 슬래시 명령어 통합은 동일한 기능을 제공하면서 더 안전한 통합 방식인 Slack용 GitLab 앱을 위해 폐기됩니다.

GitLab 19.0부터 사용자는 더 이상 Slack 슬래시 명령어 통합을 설정하거나 사용할 수 없습니다. 이 통합은 GitLab Self-Managed 및 GitLab Dedicated 인스턴스에서만 사용할 수 있습니다. GitLab.com을 사용하는 경우 별도로 조치할 사항이 없습니다.

GitLab Self-Managed 또는 GitLab Dedicated를 사용 중이며 영향을 받는지 확인하려면 이슈 569345를 참고합니다.

Linux 패키지 및 GitLab Helm 차트의 Spamcheck 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 Linux 패키지 및 GitLab Helm 차트에서 Spamcheck를 제거합니다.

Spamcheck는 공개적으로 노출된 GitLab 인스턴스의 스팸에 대응하기 위한 서비스입니다. 특성상 이 기능은 주로 대규모 공개 인스턴스와 관련이 있으며, 이는 당사 고객 기반에서 드문 사례에 해당합니다.

낮은 채택률과 독립 배포 옵션의 존재를 고려하여, Linux 패키지 및 GitLab Helm 차트에서 Spamcheck를 제거합니다. Spamcheck를 사용하지 않는 고객은 이 변경으로 영향을 받지 않습니다. 이 제거로 대다수 고객의 패키지 크기와 의존성 범위(그에 따른 보안성)가 개선됩니다.

번들된 Spamcheck를 현재 사용 중이라면 Docker를 사용해 별도로 배포할 수 있습니다.

데이터 마이그레이션은 필요하지 않습니다. 설정 안내는 연결된 문서에서 확인할 수 있습니다.

NGINX Ingress 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 현재 기본 네트워킹 컴포넌트로 NGINX Ingress를 번들로 제공합니다. NGINX Ingress는 2026년 3월에 지원이 종료될 예정이므로, Gateway API 및 Envoy Gateway로 전환합니다.

GitLab 19.0부터 Gateway API와 번들된 Envoy Gateway가 기본 설정이 됩니다. 배포 환경에서 Envoy Gateway 로의 마이그레이션이 어려운 경우, 번들된 NGINX Ingress를 명시적으로 다시 활성화할 수 있으며, 이는 GitLab 20.0에서 계획된 완전 제거 전까지 계속 사용할 수 있습니다.

이 변경 사항은 Linux 패키지의 NGINX, 또는 외부에서 관리되는 Ingress 나 Gateway API 컨트롤러를 사용하는 GitLab Helm 차트 및 GitLab Operator 인스턴스에는 영향을 주지 않습니다.

완전 제거 전까지 포크된 NGINX Ingress 차트와 빌드에 대해 최선의 노력으로 보안 유지 관리를 제공합니다. 원활한 전환을 위해 제공되는 Gateway API 솔루션 또는 외부에서 관리되는 Ingress 컨트롤러로의 마이그레이션을 계획할 것을 권장합니다. 단계별 안내는 Envoy Gateway 마이그레이션 가이드를 참고합니다.

PostgreSQL 16 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab은 PostgreSQL의 연간 업그레이드 주기를 따릅니다.

PostgreSQL 16 지원은 GitLab 19.0에서 제거될 예정입니다. GitLab 19.0부터 PostgreSQL 17 이 최소 요구 PostgreSQL 버전이 됩니다.

PostgreSQL 17은 GitLab 18.9부터 사용할 수 있으며, GitLab 19.0에서 PostgreSQL 16 이 제거되기 전 언제든지 업그레이드할 수 있습니다.

Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면, 18.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 충분한 디스크 공간을 확보해야 합니다.

자세한 내용은 패키지로 설치된 PostgreSQL 서버 업그레이드를 참고합니다.

Redis 6 지원#

  • GitLab 18.10에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 19.0에서는 안전하고 지원 가능한 인프라 스택을 유지하기 위한 노력의 일환으로 Redis 6 지원을 제거할 계획입니다.

GitLab 19.0으로 업그레이드하기 전에 Redis 7.0 이상 또는 Valkey 7.2로 마이그레이션합니다. Redis 7.2 또는 Valkey 7.2를 권장합니다. Redis 7.0은 업스트림에서 지원이 종료(EOL)되었지만, Redis 7.0을 기반으로 하는 Amazon ElastiCache for Redis 7.1과 같이 일부 벤더에서 적극적으로 유지 관리하는 경우도 있습니다.

Linux 패키지에 번들된 Redis는 GitLab 16.2부터 Redis 7을 사용하고 있어 영향을 받지 않습니다. 외부 Redis 6 배포를 사용하는 GitLab Self-Managed 인스턴스만 마이그레이션이 필요합니다.

외부 Redis 6 배포를 마이그레이션하려면 다음 자료를 참고합니다.

  • AWS ElastiCache: ElastiCache for Redis 7.2는 AWS에서 제공되지 않습니다. 권장되는 Amazon ElastiCache for Valkey 7.2로 마이그레이션합니다. ElastiCache for Redis 7.1은 Redis 7.0을 기반으로 하며 정상 작동이 확인되었습니다. 사용 가능한 업그레이드 경로는 AWS ElastiCache 문서를 참고합니다.
  • GCP Memorystore: Redis 6 인스턴스를 Redis 7.2 또는 Valkey 7.2로 업그레이드합니다. 사용 가능한 업그레이드 경로는 GCP Memorystore 문서를 참고합니다.
  • Azure Cache for Redis: Azure에서는 현재 관리형 Redis 7.2 또는 Valkey 7.2 옵션을 제공하지 않습니다. Azure VM 또는 AKS에서 Redis 7.2 또는 Valkey 7.2를 직접 호스팅할 수 있습니다. Valkey 7.2를 지원하는 GitLab Linux 패키지 설치 방식을 사용할 수도 있습니다.
  • 자체 호스팅: Redis 6 인스턴스를 Redis 7.2 또는 Valkey 7.2로 업그레이드합니다.

자세한 내용은 요구 사항 문서를 참고합니다.

GitLab Helm 차트의 번들 PostgreSQL, Redis, MinIO 지원#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트는 GitLab 설정을 더 쉽게 하기 위해 Bitnami PostgreSQL, Bitnami Redis, 그리고 공식 MinIO 차트의 포크를 번들로 제공합니다. 라이선스, 프로젝트 유지 관리, 공개 이미지 제공 방식의 여러 변경으로 인해 이 컴포넌트들은 대체 없이 GitLab Helm 차트와 GitLab Operator에서 제거됩니다.

이 차트들은 현재 기본으로 활성화되어 있지만, 프로덕션 사용에는 권장되지 않는다고 명시적으로 문서화되어 있습니다. 이들의 유일한 목적은 빠른 개념 증명 및 테스트 환경 구성이었습니다.

번들된 PostgreSQL, Redis, MinIO로 인스턴스를 운영 중이라면 마이그레이션 가이드를 확인합니다.

Linux 패키지에서 제공하는 Redis와 PostgreSQL은 이 변경의 영향을 받지 않습니다.

ci_job_token_scope_enabled 프로젝트 API 속성이 폐기됩니다#

  • GitLab 16.4에서 발표
  • GitLab 19.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

프로젝트로부터의 접근 제한 CI/CD 작업 토큰 프로젝트 설정은 18.0에서 제거되었습니다. 프로젝트 API의 관련 ci_job_token_scope_enabled 속성은 현재 폐기되었으며 항상 false를 반환하므로 19.0에서 제거됩니다. 작업 토큰 접근을 제어하려면 CI/CD 작업 토큰 프로젝트 설정을 사용합니다.

heroku/builder:22 이미지가 폐기됩니다#

  • GitLab 17.4에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Auto DevOps Build 프로젝트에서 클라우드 네이티브 빌드팩(CNB) 빌더 이미지가 heroku/builder:24로 업데이트되었습니다. 대부분의 경우 이 변경이 지장을 주지 않을 것으로 예상하지만, Auto DevOps 사용자, 특히 Auto Build 사용자에게는 브레이킹 체인지이 될 수 있습니다. 워크로드에 미치는 영향을 더 잘 파악하려면 다음을 검토합니다.

이 변경은 파이프라인에서 Auto DevOps의 Auto Build 단계가 제공하는 auto-build-image를 사용하는 경우 영향을 줍니다.

GitLab 19.0 이후에도 heroku/builder:22를 계속 사용하려면 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:22로 설정합니다.

  • GitLab 18.8에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Explore > Projects의 Trending 탭과 관련 GraphQL 인수는 GitLab 18.8에서 폐기되며 GitLab 19.0에서 제거됩니다. GitLab 19.0 릴리스 한 달 전부터 Trending 탭은 GitLab.com에서 별표 개수 내림차순으로 정렬된 Active 탭으로 리디렉션됩니다.

제거되는 항목

  • Explore > Projects 페이지의 Trending 탭
  • 다음 GraphQL 타입의 trending 인수
    • Query.adminProjects
    • Query.projects
    • Organization.projects

변경 이유

trending 알고리즘은 공개 프로젝트만 고려하므로, 주로 내부 또는 비공개 가시성을 사용하는 GitLab Self-Managed 인스턴스에는 효과가 없습니다. 이 알고리즘의 한계와 검색 기능 부재로 인해 Self-Managed 사용자들의 명시적인 제거 요청이 있었습니다. 상당한 개선에 투자하는 대신, 기존 탐색 메커니즘을 강화하는 데 리소스를 집중합니다.

필요한 조치

UI 사용자: Trending 탭은 19.0에서 완전히 제거되기 전, 다음 브레이킹 체인지 적용 기간 동안 접근할 수 없게 됩니다. 최근 업데이트되었거나 별표가 가장 많은 프로젝트를 확인하려면 Active 탭을 사용할 것을 권장합니다.

Bitbucket Cloud 가져오기 GitLab API에서 앱 비밀번호 사용#

  • GitLab 18.9에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Atlassian은 Bitbucket Cloud의 앱 비밀번호(사용자 이름·비밀번호 인증)를 폐기했으며, 이 인증 방식이 2026-06-09부터 작동을 멈춘다고 발표했습니다.

GitLab 19.0부터 GitLab API를 통해 Bitbucket Cloud에서 리포지터리를 가져오려면 사용자 API 토큰을 대신 사용해야 합니다.

Bitbucket Server에서 가져오거나 GitLab UI를 통해 Bitbucket Cloud에서 가져오는 사용자는 영향을 받지 않습니다.

ciJobTokenScopeAddProject GraphQL 뮤테이션이 폐기됩니다#

  • GitLab 17.5에서 발표
  • GitLab 19.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서 CI/CD 작업 토큰의 향후 기본 동작 변경에 맞추어, 관련 ciJobTokenScopeAddProject GraphQL 뮤테이션도 ciJobTokenScopeAddGroupOrProject 를 위해 폐기합니다.

GitLab 18.8#

정적 컴플라이언스 위반 리포트#

  • GitLab 18.2에서 발표
  • GitLab 18.8에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

기존 정적 컴플라이언스 위반 리포트는 GitLab 18.2에서 폐기되며 GitLab 18.8에서 제거됩니다.

정적 컴플라이언스 위반 리포트를 대체하기 위해 다음을 제공했습니다.

이 기능들은 정적 위반 리포트와 동일한 기능을 모두 제공하면서도, 필요한 위반 항목을 직접 설정할 수 있습니다.

GitLab 18.8에서는 요구 사항 및 통제에 대한 더 정확한 보고를 위해, 정적 컴플라이언스 위반 리포트를 컴플라이언스 프레임워크를 사용하는 동적 리포트로 대체합니다.

GitLab 18.6#

GitLab Duo Self-Hosted 용 초기 Mistral 모델 폐기#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 지원 종료
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.6에서 GitLab은 GitLab Duo Self-Hosted 용 Mistral 7B-it, Mixtral 8x7B, Mixtral 8x22B 모델 지원을 제거합니다. GitLab Duo Enterprise 고객은 GitLab Duo Self-Hosted에서 이 모델들을 계속 사용할 수 있지만, 해당 모델을 사용하는 구성에 대해서는 더 이상 기술 지원을 받을 수 없습니다. GitLab Duo Self-Hosted는 일반 공급 가능한 모든 GitLab Duo Self-Hosted 기능과 완전히 호환되는 것으로 검증된 Mistral Small 24B Instruct 2506은 계속 지원합니다.

Omnibus Linux 패키지에 번들된 Prometheus 2.x#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

Linux 패키지에 번들된 Prometheus 2.x는 폐기되며 GitLab 18.6에서 최신 Prometheus 3.x 릴리스로 업데이트됩니다.

Prometheus 3에는 새로운 로그 형식 및 더 엄격한 헤더 검증과 같이 주요 변경이 될 수 있는 사항이 일부 포함되어 있습니다. 자세한 내용은 Prometheus 마이그레이션 가이드를 참고합니다.

이 변경은 GitLab Helm 차트 설치에는 영향을 주지 않습니다.

컴플라이언스 표준 준수 대시보드를 컴플라이언스 상태 대시보드로 교체#

  • GitLab 17.11에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 17.11에서 다음을 제공했습니다.

이 기능들은 컴플라이언스 표준 준수 대시보드와 동일한 기능을 모두 제공하면서도, 필요한 준수 항목을 직접 설정할 수 있습니다.

GitLab 18.6에서는 요구 사항 및 통제에 대한 더 정확한 보고를 위해, 컴플라이언스 표준 준수 대시보드를 컴플라이언스 상태 대시보드로 교체합니다.

정확 코드 검색을 비활성화하는 사용자 설정#

  • GitLab 18.3에서 발표
  • GitLab 18.6에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

정확 코드 검색을 비활성화하는 사용자 설정은 현재 폐기되었습니다. GitLab.com에서는 더 이상 프로필 환경설정에서 정확 코드 검색을 비활성화할 수 없습니다.

정확 코드 검색은 더 나은 사용자 경험을 제공하며 기존 검색 API와 호환됩니다. 모든 사용자가 개선된 검색 기능의 혜택을 받을 수 있도록, 이 사용자 설정은 GitLab 18.6에서 제거될 예정입니다.

GitLab 18.5#

고급 검색에서 OpenSearch 1.x 지원#

  • GitLab 18.2에서 발표
  • GitLab 18.5에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

OpenSearch 1.x의 유지 관리 기간이 종료되었습니다. GitLab Self-Managed 및 GitLab Dedicated의 경우, 관리자는 고급 검색을 사용하려면 OpenSearch 인스턴스를 업그레이드해야 합니다.

GitLab 18.4#

GitLab 차트의 Bitnami PostgreSQL 및 Redis 이미지#

  • GitLab 18.4에서 발표
  • GitLab 18.4에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab Helm 차트의 기본 설정은 PostgreSQL 및 Redis 용 Bitnami 차트와 컨테이너 이미지에 의존합니다. Bitnami는 2025년 9월 29일부로 무료 카탈로그에서 이 이미지들을 중단할 예정입니다. 이미지를 일시적으로 사용할 수 없게 하는 브라운아웃은 2025년 8월 28일에 시작되었습니다.

GitLab 차트는 데모 및 테스트 목적으로만 Bitnami의 PostgreSQL과 Redis를 번들로 제공합니다. 이는 어떤 지원되는 GitLab 참조 아키텍처에도 포함되지 않습니다. 참조 아키텍처를 사용 중이거나 다른 벤더의 패키지 또는 이미지로 외부 PostgreSQL과 Redis를 배포한 경우, 이 변경의 영향을 받지 않습니다.

임시 해결책으로 GitLab은 차트 설정을 Bitnami 레거시 리포지터리로 마이그레이션했습니다. 하지만 패치되지 않은 GitLab 차트 환경(GitLab 17.11, GitLab 18.0.5, GitLab 18.1.4, GitLab 18.2.1 이하)은 계속 폐기된 Bitnami 리포지터리에서 이미지를 가져오며, 이로 인해 9월 29일 이후 배포에 실패하거나 브라운아웃 단계에서 배포에 실패할 수 있습니다.

영향을 받는 GitLab 차트 설정을 운영 중이라면 다음 중 하나를 수행해야 합니다.

  • 지원되는 GitLab 참조 아키텍처로 마이그레이션합니다.
  • 패치된 차트 버전으로 업그레이드합니다.
  • 차트 값에 레거시 리포지터리를 설정합니다. 예시는 머지 리퀘스트 4421을 참고합니다.

앞으로 GitLab 차트에서 Bitnami 컴포넌트를 대체하거나 완전히 제거하는 방안에 대한 대안을 검토할 예정입니다. 자세한 내용은 Bitnami 공식 발표를 참고합니다.

GitLab 18.3#

cert-manager Helm 차트 업데이트#

  • GitLab 18.0에서 발표
  • GitLab 18.3에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

최신 cert-manager 차트의 스키마 검증을 지원하기 위해, GitLab Helm 차트의 certmanager.install 값이 폐기되며 installCertmanager로 대체됩니다. 스키마 정의는 GitLab 차트의 certmanager 섹션에 추가한 추가 속성을 허용하지 않습니다.

GitLab 18.3(GitLab 차트 9.3)에서는 폐기된 값을 제거하고 번들된 cert-manager를 업데이트합니다.

이전에 certmanager.install 설정을 사용했다면 다음을 수행합니다.

  1. certmanager.install 값을 installCertmanager로 옮깁니다.
  2. certmanager.install 설정을 완전히 제거합니다.

cert-manager 릴리스 노트도 함께 검토합니다.

GitLab 18.1#

Commits API로 확장된 파이프라인 작업 한도#

  • GitLab 17.7에서 발표
  • GitLab 18.1에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0부터 활성 파이프라인의 최대 작업 수는 Commits API를 사용해 작업을 생성할 때도 적용됩니다. 통합이 설정된 작업 한도 내에서 유지되는지 검토합니다.

GitLab 18.0#

API Discovery가 기본적으로 브랜치 파이프라인을 사용합니다#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서는 API Discovery 용 CI/CD 템플릿(API-Discovery.gitlab-ci.yml)의 기본 동작을 업데이트합니다.

GitLab 18.0 이전에는 이 템플릿이 머지 리퀘스트(MR)가 열려 있을 때 기본적으로 머지 리퀘스트(MR) 파이프라인에서 작업을 실행하도록 구성되어 있습니다. GitLab 18.0부터는 이 템플릿의 동작을 다른 AST 스캐너용 Stable 템플릿 에디션의 동작에 맞춥니다.

  • 기본적으로 템플릿은 브랜치 파이프라인에서 스캔 작업을 실행합니다.
  • MR 이 열려 있을 때 대신 MR 파이프라인을 사용하도록 CI/CD 변수 AST_ENABLE_MR_PIPELINES: true를 설정할 수 있습니다. 이 새 변수의 구현은 이슈 410880에서 추적됩니다.

애플리케이션 보안 테스트 분석기 주요 버전 업데이트#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 18.0에서는 모든 애플리케이션 보안 테스트 분석기 컨테이너 이미지의 주요 버전을 업데이트합니다.

기본 제공 템플릿을 사용하지 않거나 분석기 버전을 고정한 경우, CI/CD 작업 정의를 업데이트하여 고정된 버전을 제거하거나 최신 주요 버전으로 업데이트해야 합니다.

GitLab 17.0에서 GitLab 17.11까지의 사용자는 GitLab 18.0 릴리스 전까지 계속 분석기 업데이트를 받으며, 그 이후 새로 수정되는 버그와 릴리스되는 기능은 새로운 주요 버전의 분석기에서만 제공됩니다. 다만 컨테이너 레지스트리에 게시된 기존 컨테이너 이미지는 제거하지 않습니다.

유지 관리 정책에 따라 폐기된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최신 3개 마이너 릴리스 내에서 백포트됩니다.

구체적으로, 다음 분석기는 GitLab 18.0 릴리스 이후 더 이상 업데이트되지 않습니다.

  • GitLab Advanced SAST: 버전 1
  • Container scanning: 버전 7
  • Gemnasium: 버전 5
  • DAST: 버전 5
  • DAST API: 버전 4
  • Fuzz API: 버전 4
  • IaC scanning: 버전 5
  • Pipeline secret detection: 버전 6
  • 정적 애플리케이션 보안 테스트(SAST): 모든 분석기의 버전 5
    • kics
    • kubesec
    • pmd-apex
    • semgrep
    • sobelow
    • spotbugs

Upcoming 및 Started 마일스톤 필터의 동작 변경#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

"Upcoming"과 "Started" 특수 필터의 동작은 다가오는 GitLab 주요 릴리스 18.0에서 변경될 예정입니다. 두 필터의 새로운 동작은 이슈 429728에 설명되어 있습니다.

이 변경은 기존 마일스톤 필터링 로직을 계속 사용하는 GitLab REST API에는 영향을 주지 않습니다. GitLab GraphQL API는 새로운 필터링 로직을 따르도록 업데이트됩니다.

CI/CD 작업 토큰 - 승인된 그룹 및 프로젝트 허용 목록 적용#

  • GitLab 16.5에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 15.9에 도입된 승인된 그룹 및 프로젝트 설정을 사용하면(GitLab 16.3에서 이 프로젝트로의 접근 제한에서 이름이 변경됨) 프로젝트에 대한 CI/CD 작업 토큰 접근을 제어할 수 있습니다. 이 프로젝트 및 허용 목록에 있는 그룹·프로젝트만 허용으로 설정하면, 허용 목록에 추가된 그룹이나 프로젝트만 작업 토큰을 사용해 해당 프로젝트에 접근할 수 있습니다.

GitLab 15.9 이전에 생성된 프로젝트의 경우, 허용 목록은 기본적으로 비활성화되어 있었으며 (모든 그룹 및 프로젝트 접근 설정이 선택되어) 모든 프로젝트에서 작업 토큰 접근이 허용되었습니다. 이제 허용 목록은 모든 새 프로젝트에서 기본으로 활성화됩니다. 기존 프로젝트에서는 여전히 비활성화되어 있거나, 접근을 제한 없이 열어두기 위해 모든 그룹 및 프로젝트 옵션을 수동으로 선택했을 수 있습니다.

GitLab 17.6부터 GitLab Self-Managed 및 GitLab Dedicated 인스턴스의 관리자는 선택적으로 모든 프로젝트에 대해 이 더 안전한 설정을 적용할 수 있습니다. 이 설정은 프로젝트 Maintainer가 모든 그룹 및 프로젝트를 선택하지 못하도록 막습니다. 이 변경으로 프로젝트 간 보안 수준이 높아집니다.

GitLab 18.0에서는 이 인스턴스 설정이 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 기본으로 활성화됩니다. GitLab Self-Managed 및 GitLab Dedicated 관리자는 GitLab 18.0으로 업그레이드한 후 이 설정을 비활성화하여 업그레이드 이전 동작으로 되돌릴 수 있습니다. GitLab Self-Managed 및 GitLab Dedicated의 경우 GitLab 18.0에서 프로젝트 설정 자체는 변경되지 않지만, 인스턴스 설정의 상태가 인스턴스의 모든 프로젝트에 영향을 미칩니다.

이 변경에 대비하려면, 프로젝트 간 인증에 작업 토큰을 사용하는 프로젝트 Maintainer는 해당 프로젝트의 승인된 그룹 및 프로젝트 허용 목록을 채워야 합니다. 그런 다음 설정을 이 프로젝트 및 허용 목록에 있는 그룹·프로젝트만 허용으로 변경해야 합니다.

CI/CD 작업 토큰으로 인증하여 해당 프로젝트에 접근해야 하는 프로젝트를 식별할 수 있도록, GitLab 17.6에서는 프로젝트에 대한 작업 토큰 인증을 추적하는 방법도 도입했습니다. 이 데이터를 사용해 CI/CI 작업 토큰 허용 목록을 채울 수 있습니다.

GitLab 17.10부터 18.6까지는 마이그레이션 도구를 사용해 작업 토큰 인증 로그에서 CI/CD 작업 토큰 허용 목록을 자동으로 채울 수 있습니다. GitLab 18.0에서 허용 목록이 전면 적용되기 전에 이 마이그레이션 도구를 사용해 허용 목록을 채우고 적용할 것을 권장합니다. GitLab 18.0에서는 앞서 발표한 대로 GitLab.com에서 허용 목록의 자동 채움과 적용이 이루어집니다.

이 마이그레이션 도구는 GitLab 18.7에서 제거되었습니다.

CI/CD 작업 토큰 - 프로젝트로부터의 접근 제한 설정 제거#

  • GitLab 15.9에서 발표
  • GitLab 18.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

GitLab 14.4에서는 보안을 강화하기 위해 프로젝트의 CI/CD 작업 토큰(CI_JOB_TOKEN)으로부터의 접근을 제한하는 설정을 도입했습니다. 이 설정은 CI_JOB_TOKEN 접근 제한 이라고 불렸습니다. GitLab 16.3에서는 명확성을 위해 이 설정의 이름을 이 프로젝트로부터의 접근 제한으로 변경했습니다.

GitLab 15.9에서는 승인된 그룹 및 프로젝트라는 대체 설정을 도입했습니다. 이 설정은 허용 목록을 사용해 프로젝트로의 작업 토큰 접근을 제어합니다. 이 새 설정은 기존 설정보다 크게 개선된 것입니다. 첫 번째 반복 버전은 GitLab 16.0에서 폐기되었으며 GitLab 18.0에서 제거가 예정되었습니다.

이 프로젝트로부터의 접근 제한 설정은 모든 새 프로젝트에서 기본적으로 비활성화되어 있습니다. GitLab 16.0 이상에서는 어떤 프로젝트에서든 이 설정을 비활성화한 후에는 다시 활성화할 수 없습니다. 대신 승인된 그룹 및 프로젝트 설정을 사용해 프로젝트로의 작업 토큰 접근을 제어합니다.

DAST dast_crawl_extract_element_timeout 및 dast_crawl_search_element_timeout 변수#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세한 내용을 확인하려면 폐기 이슈를 참고합니다.

DAST 변수 DAST_CRAWL_EXTRACT_ELEMENT_TIMEOUT 및 DAST_CRAWL_SEARCH_ELEMENT_TIMEOUT은 폐기되었으며 GitLab 18.0에서 제거됩니다. 이 변수들이 도입될 당시에는 특정 브라우저 상호작용에 대한 세부적인 타임아웃 제어를 제공했습니다. 이제 이러한 상호작용은 공통 타임아웃 값으로 관리되므로 이 변수들은 더 이상 필요하지 않습니다. 또한 근본적인 구현 문제로 인해, 이 변수들은 DAST 브라우저 기반 분석기가 도입된 이후 실질적으로 작동하지 않았습니다. 이 두 변수를 제거하면 DAST 설정이 단순해지고 사용자에게 더 나은 온보딩 경험을 제공합니다.

DAST dast_devtools_api_timeout 기본값이 낮아집니다#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

DAST_DEVTOOLS_API_TIMEOUT 환경 변수는 DAST 스캔이 브라우저의 응답을 얼마나 기다릴지 결정합니다. GitLab 18.0 이전에는 이 변수가 45초로 고정된 값을 가졌습니다. GitLab 18.0 이후에는 DAST_DEVTOOLS_API_TIMEOUT 환경 변수가 다른 타임아웃 설정을 기반으로 계산되는 동적 값을 가집니다. 대부분의 경우 45초 값은 여러 스캐너 함수의 타임아웃 값보다 높았습니다. 동적으로 계산된 값은 적용되는 사례 수를 늘려 DAST_DEVTOOLS_API_TIMEOUT 변수를 더 유용하게 만듭니다.

잠재적인 중단을 줄이기 위해 다음 일정에 따라 기본 타임아웃 값을 단계적으로 조정합니다.

타임아웃 값 마일스톤
45 17.11 이하
30 18.0
20 18.1
10 18.2
5 18.3

Dependency Proxy 토큰 범위 강제 적용#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

컨테이너용 Dependency Proxy는 개인 액세스 토큰이나 그룹 액세스 토큰을 사용하는 docker login, docker pull 요청을 범위 검증 없이 수락합니다.

GitLab 18.0에서는 Dependency Proxy가 인증에 read_registry와 write_registry 범위를 모두 요구합니다. 이 변경 이후 해당 범위가 없는 토큰을 사용한 인증 시도는 거부됩니다.

이는 브레이킹 체인지입니다. 업그레이드하기 전에 필요한 범위를 가진 새 액세스 토큰을 생성하고, 워크플로 변수와 스크립트를 새 토큰으로 갱신합니다.

이 변경이 GitLab Self-Managed 인스턴스에 미치는 영향을 파악하려면 GitLab 17.10 이후 버전에서 인증 로그의 경고 메시지를 모니터링합니다. auth_json.log 파일에서 Dependency proxy missing authentication abilities 문구가 포함된 항목을 확인합니다. GitLab Helm 차트나 GitLab Dedicated를 사용 중이라면 해당 로그는 component: "gitlab"과 subcomponent: "auth_json"에 있습니다. 이 항목들은 필요한 범위가 없는 토큰을 사용한 인증 시도를 보여주며, GitLab 18.0으로 업그레이드한 후에는 이러한 시도가 실패합니다.

Terraform CI/CD 템플릿 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Terraform CI/CD 템플릿은 폐기되었으며 GitLab 18.0에서 제거됩니다. 이는 다음 템플릿에 영향을 미칩니다.

  • Terraform.gitlab-ci.yml
  • Terraform.latest.gitlab-ci.yml
  • Terraform/Base.gitlab-ci.yml
  • Terraform/Base.latest.gitlab-ci.yml

GitLab 16.9에서는 사용자에게 폐기를 알리는 새 작업이 템플릿에 추가되었습니다. 이 경고는 영향을 받는 파이프라인에서 deprecated-and-will-be-removed-in-18.0 작업을 플레이스홀더 작업으로 덮어써서 끌 수 있습니다.

GitLab은 BSL 라이선스가 적용된 버전으로는 작업 이미지의 terraform 바이너리를 업데이트할 수 없습니다.

Terraform을 계속 사용하려면 템플릿과 Terraform 이미지를 클론한 뒤, 필요에 따라 직접 유지 관리합니다. GitLab은 커스텀 빌드 이미지로 마이그레이션하는 상세 안내를 제공합니다.

대안으로 GitLab.com에서는 새 OpenTofu CI/CD 컴포넌트를, GitLab Self-Managed에서는 새 OpenTofu CI/CD 템플릿을 사용할 것을 권장합니다. CI/CD 컴포넌트는 아직 GitLab Self-Managed에서 사용할 수 없지만, 이슈 #415638에서 이 기능을 추가할 것을 제안하고 있습니다. CI/CD 컴포넌트가 GitLab Self-Managed에서 사용 가능해지면 OpenTofu CI/CD 템플릿은 제거됩니다.

새 OpenTofu CI/CD 컴포넌트에 대해 자세히 알아봅니다.

라이선스 메타데이터 형식 V1 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

라이선스 메타데이터 형식 V1 데이터셋은 폐기되었으며 GitLab 18.0에서 제거됩니다.

package_metadata_synchronization 기능 플래그가 활성화된 사용자는 GitLab 16.3 이상으로 업그레이드하고 기능 플래그 설정을 제거할 것을 권장합니다.

GraphQL API NamespaceProjectSortEnum의 STORAGE enum 폐기#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab GraphQL API의 NamespaceProjectSortEnum에 있는 STORAGE enum은 GitLab 18.0에서 제거됩니다.

이 변경에 대비해 NamespaceProjectSortEnum과 상호작용하는 GraphQL 쿼리를 검토하고 갱신할 것을 권장합니다. STORAGE 필드에 대한 참조는 EXCESS_REPO_STORAGE_SIZE_DESC로 교체합니다.

GraphQL API ProjectMonthlyUsageType의 name 필드 폐기#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab GraphQL API의 ProjectMonthlyUsageType에 있는 name 필드는 GitLab 18.0에서 제거됩니다.

이 변경에 대비해 ProjectMonthlyUsageType과 상호작용하는 GraphQL 쿼리를 검토하고 갱신할 것을 권장합니다. name 필드에 대한 참조는 project.name으로 교체합니다.

GitLab NGINX 차트 컨트롤러 이미지 v1.3.1 폴백 지원#

  • GitLab 17.6에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.
Note

이 변경은 GitLab NGINX 차트를 사용 중이고 직접 NGINX RBAC 규칙을 설정한 경우에만 영향을 미칩니다.

외부 NGINX 차트를 사용 중이거나, NGINX RBAC 규칙 변경 없이 GitLab NGINX 차트를 사용 중이라면 이 폐기는 해당하지 않습니다.

GitLab 17.6(Helm 차트 8.6)에서 GitLab 차트는 기본 NGINX 컨트롤러 이미지를 버전 1.3.1에서 1.11.2로 업데이트했습니다. 이 새 버전은 GitLab NGINX 차트에 추가된 새 RBAC 규칙을 필요로 하므로, 결국 이 규칙들을 생성해야 합니다. 이 변경 사항은 다음 버전에도 백포트되었습니다.

  • GitLab 17.5.1 (Helm 차트 8.5.1)
  • GitLab 17.4.3 (Helm 차트 8.4.3)
  • GitLab 17.3.6 (Helm 차트 8.3.6)
Note

Helm 차트 8.3~8.7의 최신 패치 버전에는 NGINX 컨트롤러 버전 1.11.2가 포함되어 있습니다. 이후 차트 버전에는 다양한 보안 수정 사항이 포함되어 있어 버전 1.11.5가 포함됩니다. GitLab 18.0은 기본적으로 컨트롤러 버전 1.11.5를 사용합니다.

직접 NGINX RBAC 규칙을 관리한다면 이는 nginx-ingress.rbac.create를 false로 설정했다는 의미입니다. 이 경우 GitLab 17.3(Helm 차트 8.3)부터 GitLab 17.11(Helm 차트 8.11)까지는 이 변경을 감지해 이전 컨트롤러 이미지를 사용하는 폴백 메커니즘이 있으므로 RBAC 규칙을 변경할 필요가 없습니다.

GitLab 18.0(Helm 차트 9.0)부터는 이 폴백 메커니즘이 제거되므로 새 컨트롤러 이미지가 사용되고 새 RBAC 규칙이 반드시 있어야 합니다.

GitLab 18.0에서 강제 적용되기 전에 새 NGINX 컨트롤러 이미지를 활용하려면 다음을 수행합니다.

  1. 클러스터에 새 RBAC 규칙을 추가합니다. 예시 보기.
  2. nginx-ingress.controller.image.disableFallback을 true로 설정합니다.

자세한 내용은 차트 릴리스 페이지를 참고합니다.

Gitaly 속도 제한#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Git 작업과 리포지터리 지연 시간의 변동 폭이 크기 때문에 Gitaly의 RPC 기반 속도 제한은 효과적이지 않습니다. 적절한 속도 제한을 설정하는 일은 어렵고, 유해한 작업이 초당 요청 수를 충분히 발생시키지 않는 경우가 많아 금방 무용지물이 됩니다.

Gitaly는 이미 동시성 제한과 적응형 제한 애드온을 지원하며, 이는 프로덕션 환경에서 잘 동작하는 것으로 입증되었습니다.

Gitaly는 외부 네트워크에 직접 노출되지 않고 로드 밸런서 같은 외부 보호 계층이 더 나은 안전장치를 제공하므로, 속도 제한의 효과는 떨어집니다.

따라서 더 신뢰할 수 있는 동시성 제한을 위해 속도 제한을 폐기합니다. Gitaly RPC 기반 속도 제한은 GitLab 18.0에서 제거됩니다.

레거시 Web IDE 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

레거시 Vue 기반 GitLab Web IDE 구현은 GitLab에서 제거됩니다. 이 변경은 GitLab 15.11부터 기본 Web IDE 경험으로 자리 잡은 GitLab VSCode Fork 기반 Web IDE로의 성공적인 전환에 따른 것입니다.

이 제거는 여전히 레거시 Web IDE 구현에 접근 중인 사용자에게 영향을 미칩니다.

이 제거에 대비하려면 GitLab 인스턴스에서 이전에 비활성화되어 있던 vscode_web_ide 기능 플래그를 활성화합니다.

정책당 허용되는 스캔 실행 정책 작업 수 제한#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

정책당 허용되는 최대 스캔 실행 정책 작업 수에 새 제한이 추가되었습니다. 이 변경은 17.4에서 scan_execution_policy_action_limit와 scan_execution_policy_action_limit_group 기능 플래그 뒤에 도입되었습니다. 활성화되면 스캔 실행 정책의 처음 10개 작업만 처리됩니다.

제한을 추가함으로써 보안 정책의 성능과 확장성을 보장할 수 있습니다.

추가 작업이 필요하다면 기존 정책을 10개 이하의 작업으로 제한합니다. 그런 다음 보안 정책 프로젝트당 5개의 스캔 실행 정책이라는 한도 내에서 추가 작업이 있는 새 스캔 실행 정책을 생성합니다.

GitLab Self-Managed 및 GitLab Dedicated 관리자는 scan_execution_policies_action_limit 애플리케이션 설정으로 사용자 지정 한도를 구성할 수 있습니다.

스캔 실행 정책의 scan 작업 수 제한#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab.com에서는 GitLab 18.0부터 스캔 실행 정책이 정책당 10개의 scan 작업으로 제한됩니다. 한도를 초과하는 새 정책은 생성할 수 없고, 기존 정책이 한도를 초과하면 업데이트할 수 없습니다. 한도를 초과하는 기존 정책은 처음 10개의 scan 작업만 실행됩니다.

GitLab Self-Managed 및 GitLab Dedicated 인스턴스에서는 scan_execution_policies_action_limit 애플리케이션 설정으로 사용자 지정 한도를 구성할 수 있습니다. 이 인스턴스들의 기본 한도는 0개 작업입니다. 10개 작업으로 한도를 구성할 것을 권장합니다.

Prometheus 서브차트 주요 업데이트#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0과 GitLab 차트 9.0에서 Prometheus 서브차트는 15.3에서 27.3으로 업데이트됩니다. 이 업데이트와 함께 Prometheus 3이 기본으로 제공됩니다.

업그레이드를 수행하려면 수동 단계가 필요합니다. Alertmanager, Node Exporter, Pushgateway를 활성화했다면 Helm 값도 업데이트해야 합니다.

자세한 내용은 마이그레이션 가이드를 참고합니다.

GitLab.com 취약점에 대한 새 데이터 보존 한도#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0에서는 시스템 성능과 안정성을 개선하기 위해 GitLab.com Ultimate 고객을 위한 새 데이터 보존 한도를 도입합니다. 이 데이터 보존 한도는 취약점 데이터가 저장되는 기간에 영향을 미칩니다. 12개월이 지나도록 업데이트되지 않은 취약점은 자동으로 콜드 스토리지 아카이브로 이동됩니다. 이 아카이브는 다음과 같습니다.

  • GitLab UI를 통해 계속 접근하고 다운로드할 수 있습니다.
  • 3년간 보존됩니다.
  • 3년 후 영구적으로 삭제됩니다.

PostgreSQL 14, 15 지원 종료#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab은 PostgreSQL의 연간 업그레이드 주기를 따릅니다.

PostgreSQL 14, 15 지원은 GitLab 18.0에서 제거될 예정입니다. GitLab 18.0에서는 PostgreSQL 16이 최소 요구 버전이 됩니다.

PostgreSQL 14, 15는 GitLab 17 릴리스 주기 전체 동안 지원됩니다. PostgreSQL 16도 GitLab 18.0 이전에 업그레이드하려는 인스턴스를 위해 지원됩니다.

Omnibus Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면 17.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 충분한 디스크 공간을 확보합니다. 자세한 내용은 Omnibus 데이터베이스 문서를 참고합니다.

그룹 설정의 프로젝트 페이지 폐기#

  • GitLab 17.0에서 발표
  • GitLab 17.9에서 지원 종료
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

그룹 소유자는 그룹 설정에서 그룹에 속한 프로젝트를 나열하는 프로젝트 페이지에 접근할 수 있으며, 여기서 프로젝트를 생성·편집·삭제하는 옵션과 각 프로젝트의 멤버 페이지 링크를 이용할 수 있습니다. 이 모든 기능은 그룹 개요 페이지와 각 프로젝트의 멤버 페이지에서도 이용할 수 있습니다. 그룹 설정의 프로젝트 페이지는 사용률이 낮고 접근성이 제한적이어서 폐기됩니다. 이 변경은 사용자 인터페이스에만 영향을 미칩니다. 기반 API는 계속 사용할 수 있으므로 Projects API를 사용해 프로젝트 생성, 편집, 삭제를 계속 수행할 수 있습니다. 17.9에서는 이 페이지에서 그룹 개요 페이지로 리디렉션되도록 구현합니다. 프로젝트 페이지는 18.0에서 그룹 설정에서 완전히 제거됩니다.

REST API 엔드포인트 pre_receive_secret_detection_enabled 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

REST API 엔드포인트 pre_receive_secret_detection_enabled는 secret_push_protection_enabled로 대체되어 폐기됩니다. 기능 이름이 pre_receive_secret_detection에서 secret_push_protection으로 변경된 것을 반영하기 위해 일부 API 필드 이름을 변경하고 있습니다.

새 API 필드 이름을 추가했지만, 처음 발표한 것과 달리 GitLab 18.0에서 기존 필드 이름은 더 이상 제거하지 않습니다.

데이터베이스에서 기존 pre_receive_secret_detection_enabled 칼럼은 여전히 제거할 예정이지만, 두 API 필드 이름을 모두 사용할 수 있습니다. 둘 다 새 secret_push_protection_enabled 데이터베이스 칼럼의 값을 반영합니다.

Raspberry Pi 32비트 패키지 폐기#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 18.0 버전부터 Raspberry Pi용 32비트 패키지는 더 이상 제공되지 않습니다. 64비트 Raspberry Pi OS를 사용하고 arm64 Debian 패키지를 설치해야 합니다. 32비트 OS에서 데이터를 백업하고 64비트 OS로 복원하는 방법은 PostgreSQL용 운영체제 업그레이드를 참고합니다.

allowed_pull_policies에 없는 컨테이너 이미지 풀 정책 거부#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

구성된 모든 풀 정책은 러너의 config.toml 파일에 지정된 allowed_pull_policies 구성에 존재해야 합니다. 그렇지 않으면 작업은 incompatible pull policy 오류로 실패해야 합니다.

현재 구현에서는 여러 풀 정책이 정의된 경우, 다른 정책이 포함되지 않았더라도 하나 이상의 풀 정책이 allowed-pull-policies의 정책과 일치하면 작업이 통과합니다.

GitLab 18.0에서는 풀 정책 중 어느 것도 allowed-pull-policies와 일치하지 않는 경우에만 작업이 실패합니다. 하지만 현재 동작과 달리 작업은 allowed-pull-policies에 나열된 풀 정책만 사용합니다. 이 차이로 인해 현재 통과하는 작업이 GitLab 18.0에서는 실패할 수 있습니다.

duoProAssignedUsersCount GraphQL 필드 제거#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

18.0에서는 duoProAssignedUsersCount GraphQL 필드를 제거합니다. aiMetrics API와 함께 이 필드를 사용 중이라면 문제가 발생할 수 있으며, 대신 duoAssignedUsersCount를 사용할 수 있습니다. 이 제거는 GitLab Duo Pro와 Duo 시트에 할당된 사용자를 모두 집계하도록 수정하는 작업의 일부입니다.

setPreReceiveSecretDetection GraphQL 뮤테이션을 setSecretPushProtection으로 변경#

  • GitLab 17.7에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

setPreReceiveSecretDetection GraphQL 뮤테이션의 이름이 setSecretPushProtection으로 변경되었습니다. 기능 이름이 pre_receive_secret_detection에서 secret_push_protection으로 변경된 것을 반영하기 위해 뮤테이션 응답의 일부 필드 이름도 변경하고 있습니다.

새 뮤테이션 이름을 추가했지만, 처음 발표한 것과 달리 GitLab 18.0에서 기존 뮤테이션 이름은 더 이상 제거하지 않습니다.

데이터베이스에서 기존 pre_receive_secret_detection_enabled 칼럼은 여전히 제거할 예정이지만, 두 뮤테이션 이름을 모두 사용할 수 있습니다. 둘 다 새 secret_push_protection_enabled 데이터베이스 칼럼의 값을 반영합니다.

GitGuardian 시크릿 탐지를 건너뛰는 옵션 이름 변경#

  • GitLab 17.3에서 발표
  • GitLab 18.0에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitGuardian 시크릿 탐지를 건너뛰는 옵션인 [skip secret detection]과 secret_detection.skip_all은 폐기됩니다. 대신 [skip secret push protection]과 secret_push_protection.skip_all을 사용해야 합니다.

새 표기를 사용할 것을 권장하지만, GitLab 18.0에서 기존 옵션을 더 이상 제거하지 않습니다.

add_on_purchase GraphQL 필드를 add_on_purchases로 교체#

  • GitLab 17.4에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GraphQL 필드 add_on_purchase는 GitLab 17.4에서 폐기되고 GitLab 18.0에서 제거됩니다. 대신 add_on_purchases 필드를 사용합니다.

네임스페이스 add_on_purchase GraphQL 필드를 add_on_purchases로 교체#

  • GitLab 17.5에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

네임스페이스 GraphQL 필드 add_on_purchase는 GitLab 17.5에서 폐기되고 GitLab 18.0에서 제거됩니다. 대신 루트의 add_on_purchases 필드를 사용합니다.

SUSE Linux Enterprise Server 15 SP2 지원 종료#

  • GitLab 17.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

SUSE Linux Enterprise Server(SLES) 15 SP2의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료되었습니다.

따라서 Linux 패키지 설치에서 SLES SP2 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 SLES 15 SP6으로 업그레이드해야 합니다.

ciJobTokenScopeRemoveProject의 direction GraphQL 인자 폐기#

  • GitLab 16.9에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

ciJobTokenScopeRemoveProject 뮤테이션의 direction GraphQL 인자는 폐기됩니다. GitLab 15.9에서 발표된 기본 CI/CD 작업 토큰 범위 변경에 따라 direction 인자는 기본값이 INBOUND가 되며 OUTBOUND는 GitLab 17.0부터 더 이상 유효하지 않습니다. direction 인자는 GitLab 18.0에서 제거합니다.

프로젝트 토큰 접근 방향을 제어하기 위해 direction 인자와 함께 OUTBOUND를 사용 중이라면, 작업 토큰을 사용하는 파이프라인이 인증에 실패할 위험이 있습니다. 파이프라인이 예상대로 계속 실행되도록 하려면 다른 프로젝트를 프로젝트의 허용 목록에 명시적으로 추가해야 합니다.

API에서 노트 기밀성 토글#

  • GitLab 14.10에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

REST 및 GraphQL API로 노트 기밀성을 토글하는 기능은 폐기되는 중입니다. 노트의 기밀 속성 업데이트는 어떤 방법으로도 더 이상 지원되지 않습니다. 경험을 단순화하고 비공개 정보가 의도치 않게 노출되는 것을 막기 위해 이 기능을 변경하고 있습니다.

Gitaly 스토리지를 구성하는 git_data_dirs#

  • GitLab 16.0에서 발표
  • GitLab 18.0에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Linux 패키지 인스턴스에서 Gitaly 스토리지를 구성하는 데 git_data_dirs를 사용하는 방식은 16.0부터 폐기되었으며 18.0에서 제거됩니다.

마이그레이션 안내는 git_data_dirs에서 마이그레이션하기를 참고합니다.

GitLab 17.11#

클라이언트 자격 증명 없는 OAuth ROPC 부여 방식 폐기#

  • GitLab 17.11에서 발표
  • GitLab 17.11에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab.com은 2025년 4월 8일부터 OAuth Resource Owner Password Credentials(ROPC) OAuth 부여 방식에 클라이언트 인증을 요구합니다. ROPC는 OAuth 워킹 그룹의 RFC 버전 2.1에서 제외되었습니다. 클라이언트 자격 증명이 없는 기존 ROPC 통합은 이 날짜 이후 서비스 중단을 겪게 됩니다. 중단을 겪는다면 마감일 전에 클라이언트 자격 증명을 포함하도록 통합을 업데이트합니다. 자세한 내용은 저희 블로그에서 확인할 수 있습니다.

GitLab 17.9#

openSUSE Leap 15.5 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.9에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

openSUSE Leap의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료됩니다.

따라서 Linux 패키지 설치에서 openSUSE Leap 15.5 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 openSUSE Leap 15.6으로 업그레이드해야 합니다.

GitLab 17.8#

CentOS 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

CentOS 7의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 CentOS 7 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 다른 운영체제로 업그레이드해야 합니다.

Oracle Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Oracle Linux 7의 장기 서비스 및 지원(LTSS)은 2024년 12월에 종료됩니다.

따라서 Linux 패키지 설치에서 Oracle Linux 7 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 Oracle Linux 8로 업그레이드해야 합니다.

Raspberry Pi OS Buster 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Raspberry Pi OS Buster(구 Raspbian Buster)의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 PiOS Buster 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 PiOS Bullseye로 업그레이드해야 합니다.

Red Hat Enterprise Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Red Hat Enterprise Linux(RHEL) 7은 2024년 6월에 유지관리 지원이 종료되었습니다.

따라서 RHEL 7 및 RHEL 7 호환 운영체제용 Linux 패키지는 더 이상 게시하지 않습니다. 계속 지원받으려면 RHEL 8로 업그레이드해야 합니다.

Scientific Linux 7 지원 종료#

  • GitLab 17.6에서 발표
  • GitLab 17.8에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

Scientific Linux 7의 장기 서비스 및 지원(LTSS)은 2024년 6월에 종료되었습니다.

따라서 Linux 패키지 설치에서 Scientific Linux 배포판은 더 이상 지원하지 않습니다. 계속 지원받으려면 다른 RHEL 호환 운영체제로 업그레이드해야 합니다.

GitLab 17.7#

/repository/tree REST API 엔드포인트가 404를 반환하도록 오류 처리 변경#

  • GitLab 16.5에서 발표
  • GitLab 17.7에서 제거 (주요 변경)
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

GitLab 17.7에서는 요청한 경로를 찾을 수 없을 때 리포지터리 트리 목록 API 엔드포인트 /projects/:id/repository/tree의 오류 처리 동작이 업데이트됩니다. 이제 이 엔드포인트는 상태 코드 404 Not Found를 반환합니다. 이전에는 상태 코드가 200 OK였습니다.

이 변경은 GitLab 16.5에서 GitLab.com에 적용되었으며, GitLab 17.7부터는 Self-Managed 인스턴스에서도 사용할 수 있습니다.

구현이 누락된 경로에 대해 빈 배열과 함께 200 상태 코드를 받는 것에 의존하고 있다면, 새 404 응답을 처리하도록 오류 처리를 업데이트해야 합니다.

TLS 1.0, 1.1 지원 종료#

  • GitLab 17.4에서 발표
  • GitLab 17.7에서 제거
  • 이 변경 사항에 대한 논의나 자세한 내용은 폐기 이슈를 참고합니다.

OpenSSL 버전 1.1.1의 장기 지원(LTS)은 2023년 9월에 종료되었습니다. 따라서 GitLab 17.7에서는 OpenSSL 3이 기본값이 됩니다. GitLab은 OpenSSL 3을 번들로 제공하므로 운영체제를 변경할 필요는 없습니다.

OpenSSL 3으로 업그레이드하면 다음과 같습니다.

  • GitLab은 모든 아웃바운드 및 인바운드 TLS 연결에 TLS 1.2 이상을 요구합니다.
  • TLS/SSL 인증서는 최소 112비트의 보안 수준을 가져야 합니다. 2048비트보다 짧은 RSA, DSA, DH 키와 224비트보다 짧은 ECC 키는 금지됩니다.

자세한 내용은 GitLab 17.5 변경 사항을 참고합니다.

GitLab 17.6#

Debian 10 지원#

  • GitLab 17.3에서 공지
  • GitLab 17.6에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Debian 10의 장기 서비스 및 지원(LTSS)은 2024 년 6 월에 종료되었습니다.

따라서 Linux 패키지 설치에서는 더 이상 Debian 10 배포판을 지원하지 않습니다. 계속 지원을 받으려면 Debian 11 또는 Debian 12로 업그레이드해야 합니다.

GitLab 17.4#

파이프라인 보기에서 Needs 탭 제거#

  • GitLab 17.1에서 공지
  • GitLab 17.4에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

파이프라인 보기의 Needs 탭은 Job dependencies 그룹화 옵션이 적용된 일반 파이프라인 보기와 표시 정보가 중복되므로 제거합니다. 향후에도 메인 파이프라인 그래프의 보기는 계속 개선할 예정입니다.

GitLab 17.3#

FIPS 준수 Secure 분석기가 UBI Minimal에서 UBI Micro로 변경#

  • GitLab 17.2에서 공지
  • GitLab 17.3에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

코드의 보안 취약점을 스캔하는 데 사용하는 일부 분석기의 기본 이미지를 업데이트합니다. Red Hat Universal Base Image(UBI)를 기반으로 하는 분석기 이미지만 변경하므로, 보안 스캔에 FIPS 모드를 별도로 활성화한 경우에만 이 변경의 영향을 받습니다. GitLab 보안 스캔이 사용하는 기본 이미지는 UBI 기반이 아니므로 영향을 받지 않습니다.

GitLab 17.3에서는 UBI 기반 분석기의 기본 이미지를 UBI Minimal에서 불필요한 패키지가 적고 패키지 관리자를 포함하지 않는 UBI Micro로 변경합니다. 업데이트된 이미지는 크기가 더 작아지고 운영체제가 제공하는 패키지의 취약점 영향도 줄어듭니다.

GitLab 지원팀의 지원 성명(Statement of Support)은 분석기 이미지의 특정 내용에 의존하는 커스터마이징을 포함해 문서화되지 않은 커스터마이징을 지원 범위에서 제외합니다. 예를 들어 before_script에서 추가 패키지를 설치하는 방식은 지원되는 수정이 아닙니다. 그럼에도 이러한 유형의 커스터마이징에 의존하고 있다면, 이 변경에 대응하는 방법을 알아보거나 현재 커스터마이징에 대한 피드백을 제공하려면 이 변경에 대한 폐기 이슈를 참고합니다.

GitLab 17.0#

Agent for Kubernetes의 ca-cert-file 옵션 이름 변경#

Kubernetes 용 GitLab 에이전트(agentk)에서 --ca-cert-file 명령줄 옵션과 이에 대응하는 config.caCert Helm 차트 값의 이름이 각각 --kas-ca-cert-file과 config.kasCaCert로 변경되었습니다.

기존 --ca-cert-file과 config.caCert 옵션은 폐기되었으며 GitLab 17.0에서 제거됩니다.

Herokuish에 대한 Auto DevOps 지원 폐기#

Herokuish에 대한 Auto DevOps 지원은 Cloud Native Buildpacks로 대체되며 폐기됩니다. Herokuish에서 Cloud Native Buildpacks로 빌드를 마이그레이션해야 합니다. GitLab 14.0부터 Auto Build는 기본적으로 Cloud Native Buildpacks를 사용합니다.

Cloud Native Buildpacks는 자동 테스트를 지원하지 않으므로 Auto DevOps의 Auto Test 기능도 함께 폐기됩니다.

대시(-) 문자가 포함된 자동 생성 Markdown 앵커 링크#

GitLab은 Markdown 문서나 위키 페이지의 특정 위치로 링크할 수 있도록 모든 헤딩에 대해 앵커 링크를 자동으로 생성합니다. 그러나 일부 예외 상황에서는 자동 생성된 앵커에 많은 사용자가 예상하는 것보다 적은 수의 대시(-) 문자가 포함됩니다. 예를 들어 ## Step - 1 헤딩이 있으면 대부분의 다른 Markdown 도구와 린터는 #step---1을 예상합니다. 하지만 GitLab은 연속된 대시를 하나로 압축해 #step-1이라는 앵커를 생성합니다.

GitLab 17.0에서는 연속된 대시를 더 이상 제거하지 않도록 자동 생성 앵커를 업계 표준에 맞춥니다. Markdown 문서에서 17.0에 여러 대시가 포함될 수 있는 헤딩으로 링크하고 있다면 이 예외 상황을 피하기 위해 헤딩을 수정해야 합니다. 위 예시에서는 ## Step - 1을 ## Step 1로 변경하면 페이지 내 링크가 계속 정상 작동합니다.

CiRunner.projects 기본 정렬이 id_desc로 변경#

CiRunner.projects 필드의 기본 정렬 순서 값이 id_asc에서 id_desc로 변경됩니다. 반환되는 프로젝트의 순서가 id_asc 인 것에 의존하고 있다면, 스크립트에서 이를 명시적으로 지정하도록 변경해야 합니다.

일반 설정의 컴플라이언스 프레임워크#

컴플라이언스 프레임워크 관리 기능을 컴플라이언스 센터(Compliance Center)의 프레임워크 및 프로젝트 보고서로 이동했습니다.

따라서 GitLab 17.0에서는 그룹 및 프로젝트의 General 설정 페이지에서 컴플라이언스 프레임워크 관리 기능을 제거합니다.

Swift 및 OSS 스토리지 드라이버에 대한 컨테이너 레지스트리 지원#

컨테이너 레지스트리는 다양한 오브젝트 스토리지 플랫폼과 연동하기 위해 스토리지 드라이버를 사용합니다. 각 드라이버의 코드는 비교적 독립적이지만 이들 드라이버의 유지 관리 부담은 큽니다. 각 드라이버 구현은 저마다 고유하며 드라이버를 변경하려면 해당 드라이버에 대한 높은 수준의 전문 지식이 필요합니다.

유지 관리 비용을 줄이기 위해 OSS(Object Storage Service)와 OpenStack Swift에 대한 지원을 폐기합니다. 두 드라이버 모두 업스트림 Docker Distribution에서 이미 제거되었습니다. 이를 통해 컨테이너 레지스트리를 오브젝트 스토리지 지원 측면에서 GitLab 제품 전반과 일치시킬 수 있습니다.

OSS는 S3 호환 모드를 제공하므로 지원되는 드라이버로 마이그레이션할 수 없다면 이를 사용하는 것을 고려합니다. Swift는 S3 스토리지 드라이버에도 필요한 S3 API 작업과 호환됩니다.

DAST ZAP 고급 설정 변수 폐기#

GitLab 15.7에서 새로운 브라우저 기반 DAST 분석기가 GA로 제공되면서, 향후 이를 기본 DAST 분석기로 만드는 작업을 진행하고 있습니다. 이를 준비하기 위해 다음 레거시 DAST 변수는 폐기되어 GitLab 17.0에서 제거될 예정입니다: DAST_ZAP_CLI_OPTIONS와 DAST_ZAP_LOG_CONFIGURATION. 이 변수들은 OWASP ZAP 기반의 레거시 DAST 분석기에 대한 고급 설정을 지원했습니다. 새로운 브라우저 기반 분석기는 ZAP의 동작 방식에 특화된 기능이었기 때문에 동일한 기능을 포함하지 않습니다.

이 세 변수는 GitLab 17.0에서 제거됩니다.

의존성 스캐닝의 잘못된 SBOM 메타데이터 속성#

GitLab 17.0에서는 CycloneDX SBOM 보고서의 다음 메타데이터 속성 지원을 제거합니다.

  • gitlab:dependency_scanning:input_file
  • gitlab:dependency_scanning:package_manager

이 속성들은 GitLab 15.7에서 의존성 스캐닝이 생성하는 SBOM에 추가되었습니다. 하지만 이 속성들은 잘못되었으며 GitLab CycloneDX 속성 분류 체계와 일치하지 않았습니다. 이를 해결하기 위해 GitLab 15.11에서 다음과 같이 올바른 속성이 추가되었습니다.

  • gitlab:dependency_scanning:input_file:path
  • gitlab:dependency_scanning:package_manager:name

잘못된 속성은 하위 호환성을 위해 유지되었습니다. 이제 이 속성은 폐기되었으며 17.0에서 제거됩니다.

sbt 1.0.X에 대한 의존성 스캐닝 지원#

매우 오래된 버전의 sbt를 지원하는 것은 유지 관리 비용을 늘리지 않으면서 이 패키지 관리자의 추가 사용 사례에 대한 지원을 개선하는 데 걸림돌이 되고 있습니다.

sbt 1.1.0 버전은 6 년 전에 출시되었으며, 1.0.x에서는 의존성 스캐닝이 더 이상 작동하지 않으므로 사용자는 업그레이드를 권장합니다.

임시 스토리지 증설 관련 GraphQL 필드 폐기#

  • GitLab 16.7에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL 필드 isTemporaryStorageIncreaseEnabled와 temporaryStorageIncreaseEndsOn 이 폐기되었습니다. 이 GraphQL 필드는 임시 스토리지 증설 프로젝트와 관련된 것입니다. 해당 프로젝트는 취소되었으며 이 필드들은 사용되지 않았습니다.

컨테이너 스캐닝용 Grype 스캐너 폐기#

GitLab 컨테이너 스캐닝 분석기에서 Grype 스캐너에 대한 지원은 GitLab 16.9에서 폐기되었습니다.

GitLab 17.0부터 Grype 분석기는 지원 성명(statement of support)에서 설명하는 제한적인 수정을 제외하고는 더 이상 유지 관리되지 않습니다.

사용자는 Trivy 스캐너를 사용하는 CS_ANALYZER_IMAGE의 기본 설정을 사용할 것을 권장합니다.

Grype 분석기 이미지의 현재 메이저 버전은 GitLab 19.0까지 최신 권고 데이터베이스와 운영체제 패키지로 계속 업데이트되며, 그 시점부터 분석기는 더 이상 작동하지 않습니다.

19.0 이후에도 Grype를 계속 사용하려면 GitLab과의 자체 통합을 만드는 방법을 알아보기 위해 보안 스캐너 통합 문서를 참고합니다.

License Scanning CI 템플릿 폐기#

GitLab 17.0에서는 다음 License Scanning CI 템플릿을 제거합니다.

위 템플릿 중 하나라도 포함된 CI 설정은 GitLab 17.0에서 더 이상 작동하지 않습니다.

사용자는 대신 CycloneDX 파일의 라이선스 스캐닝을 사용할 것을 권장합니다.

의존성 스캐닝 및 라이선스 스캐닝에서 Python 3.9 폐기#

GitLab 16.9부터 의존성 스캐닝 및 라이선스 스캐닝의 Python 3.9 지원이 폐기됩니다. GitLab 17.0에서는 Python 3.10 이 의존성 스캐닝 CI/CD 작업의 기본 버전입니다.

GitLab 17.0부터 의존성 스캐닝 및 라이선스 스캐닝 기능은 호환되는 lockfile 없이 Python 3.9를 요구하는 프로젝트를 지원하지 않습니다.

GitLab Runner에서 Windows CMD 폐기#

GitLab 11.11의 Windows Batch 실행자에서 CMD 셸은 PowerShell로 대체되며 GitLab Runner에서 폐기되었습니다. 그 이후에도 GitLab Runner는 CMD 셸을 계속 지원해 왔습니다. 하지만 이로 인해 엔지니어링 팀과 Windows에서 Runner를 사용하는 고객 모두에게 추가적인 복잡성이 발생했습니다. 17.0에서는 GitLab Runner에서 Windows CMD 지원을 완전히 제거할 계획입니다. 고객은 셸 실행자로 Windows에서 러너를 사용할 때 PowerShell을 사용하도록 계획해야 합니다. 고객은 제거 이슈인 이슈 29479에서 피드백을 제공하거나 질문할 수 있습니다.

CiRunnerManager와 중복되는 CiRunner GraphQL 필드 폐기#

이 필드들(architectureName, ipAddress, platformName, revision, version)은 러너 구성 내에서 그룹화되는 러너 매니저가 도입되며 중복되어 GraphQL CiRunner 타입에서 폐기되었습니다.

Terraform Module CI/CD 템플릿에서 fmt 작업 폐기#

Terraform Module CI/CD 템플릿의 fmt 작업은 폐기되었으며 GitLab 17.0에서 제거됩니다. 이는 다음 템플릿에 영향을 미칩니다.

  • Terraform-Module.gitlab-ci.yml
  • Terraform/Module-Base.gitlab-ci.yml

다음을 사용해 파이프라인에 Terraform fmt 작업을 수동으로 다시 추가할 수 있습니다.

fmt:
  image: hashicorp/terraform
  script: terraform fmt -chdir "$TF_ROOT" -check -diff -recursive

OpenTofu CI/CD 컴포넌트의 fmt 템플릿을 사용할 수도 있습니다.

취약점 관리 기능에서 message 필드 폐기#

이 MR은 VulnerabilityCreate GraphQL 뮤테이션의 message 필드와 취약점 내보내기의 AdditionalInfo 칼럼에 있는 message 필드를 폐기합니다. 이 message 필드는 GitLab 16.0에서 보안 보고서 스키마에서 제거되었으며 다른 곳에서도 더 이상 사용되지 않습니다.

GitLab Runner Kubernetes 실행자의 terminationGracePeriodSeconds 폐기#

  • GitLab 16.3에서 공지
  • GitLab 17.0에서 지원 종료
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab Runner Kubernetes 실행자 설정인 terminationGracePeriodSeconds는 폐기되었으며 GitLab 17.0에서 제거됩니다. Kubernetes에서 GitLab Runner 워커 파드의 정리 및 종료를 관리하려면 고객은 대신 cleanupGracePeriodSeconds와 podTerminationGracePeriodSeconds를 설정해야 합니다. cleanupGracePeriodSeconds와 podTerminationGracePeriodSeconds 사용 방법에 대한 자세한 내용은 GitLab Runner Executor 문서를 참고합니다.

기능 플래그 API의 version 필드 폐기#

기능 플래그 REST API의 version 필드는 폐기되었으며 GitLab 17.0에서 제거됩니다.

version 필드가 제거되면 레거시 기능 플래그를 생성할 방법이 없어집니다.

Developer 권한의 취약점 상태 변경 기능 폐기#

Developer가 취약점의 상태를 변경하는 기능은 이제 폐기됩니다. 다가오는 GitLab 17.0 릴리스에서 Developer 권한에서 이 기능을 제거하는 호환성이 깨지는 변경을 진행할 계획입니다. 개발자에게 이 권한을 계속 부여하고자 하는 사용자는 개발자를 위한 커스텀 역할을 생성하고 admin_vulnerability 권한을 추가해 이 접근 권한을 부여할 수 있습니다.

GitLab Self-Managed에서 그룹 Owner의 커스텀 역할 생성 폐기#

GitLab Self-Managed 17.0에서는 그룹 Owner의 커스텀 역할 생성 기능이 제거됩니다. 이 기능은 관리자만 사용할 수 있도록 인스턴스 수준으로 이동합니다. 그룹 Owner는 그룹 수준에서 커스텀 역할을 할당할 수 있습니다.

GitLab.com의 그룹 Owner는 계속해서 커스텀 역할을 관리하고 그룹 수준에서 할당할 수 있습니다.

GitLab Self-Managed에서 API로 커스텀 역할을 관리하는 경우, API 작업을 계속하려면 새로 추가된 인스턴스 엔드포인트가 필요합니다.

  • 인스턴스의 모든 멤버 역할 목록 조회 - GET /api/v4/member_roles
  • 인스턴스에 멤버 역할 추가 - POST /api/v4/member_roles
  • 인스턴스에서 멤버 역할 제거 - DELETE /api/v4/member_roles/:id

GraphQL VulnerabilityType의 hasSolutions 필드 폐기#

GraphQL 필드 Vulnerability.hasSolutions는 폐기되었으며 GitLab 17.0에서 제거됩니다. 대신 Vulnerability.hasRemediations를 사용합니다.

러너 셸 실행자의 레거시 셸 이스케이프 및 인용 방식 폐기#

  • GitLab 15.11에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

변수 확장을 처리하는 러너의 레거시 이스케이프 시퀀스 메커니즘은 Ansi-C 인용 방식을 최적화되지 않은 형태로 구현합니다. 이 방식에서는 러너가 큰따옴표 안에 포함된 인수를 확장하게 됩니다. 15.11부터 러너 셸 실행자의 레거시 이스케이프 및 인용 방식을 폐기합니다.

로그인 페이지 커스텀 텍스트 관련 파라미터 폐기#

설정 API의 sign_in_text와 help_text 파라미터가 폐기됩니다. 로그인 및 신규 사용자 계정 페이지에 커스텀 텍스트를 추가하려면 Appearance API의 description 필드를 사용합니다.

Windows Server 2019 폐기, Windows Server 2022로 대체#

최근 Windows 용 GitLab.com 러너(베타)에서 Windows Server 2022 릴리스를 공지했습니다. 이와 함께 GitLab 17.0에서 Windows 2019를 폐기합니다.

Windows 2022 사용으로 마이그레이션하는 방법에 대한 자세한 내용은 지금 제공되는 GitLab.com 러너용 Windows 2022 지원을 참고합니다.

DingTalk OmniAuth 제공자#

GitLab에 DingTalk OmniAuth 제공자를 제공하는 omniauth-dingtalk gem은 다음 메이저 릴리스인 GitLab 17.0에서 제거됩니다. 이 gem은 사용량이 매우 적으며 JiHu 에디션에 더 적합합니다.

Gitaly 설정의 중복 스토리지#

동일한 스토리지 경로를 가리키는 여러 Gitaly 스토리지를 설정하는 기능은 폐기되며 GitLab 17.0에서 제거됩니다. GitLab 17.0 이상에서는 이러한 유형의 설정이 오류를 일으킵니다.

이러한 유형의 설정은 백그라운드 리포지터리 유지 관리에 문제를 일으킬 수 있고 향후 Gitaly 스토리지 구현과 호환되지 않으므로 이 설정에 대한 지원을 제거합니다.

인스턴스 관리자는 각 스토리지가 고유한 경로로 설정되도록 gitlab.rb 설정 파일의 gitaly['configuration'] 섹션에 있는 storage 항목을 업데이트해야 합니다.

다운스트림 파이프라인의 파일 타입 변수 확장 수정#

이전에는 다른 CI/CD 변수에서 파일 타입 CI/CD 변수를 참조하려고 하면 해당 CI/CD 변수가 파일 내용을 담도록 확장되었습니다. 이 동작은 일반적인 셸 변수 확장 규칙을 따르지 않았기 때문에 잘못된 것이었습니다. CI/CD 변수 참조는 파일 내용이 아니라 파일 경로만 담도록 확장되어야 합니다. 이는 GitLab 15.7에서 대부분의 사용 사례에 대해 수정되었습니다. 안타깝게도 다운스트림 파이프라인에 CI/CD 변수를 전달하는 경우는 아직 수정되지 않은 예외 상황이었지만, 이제 GitLab 17.0에서 수정됩니다.

이 변경으로 .gitlab-ci.yml 파일에 설정된 변수가 파일 변수를 참조해 다운스트림 파이프라인으로 전달될 수 있으며, 해당 파일 변수도 다운스트림 파이프라인으로 함께 전달됩니다. 다운스트림 파이프라인은 변수 참조를 파일 내용이 아니라 파일 경로로 확장합니다.

이 호환성이 깨지는 변경은 다운스트림 파이프라인에서 파일 변수 확장에 의존하는 사용자 워크플로를 방해할 수 있습니다.

Geo: 디자인 및 프로젝트의 레거시 복제 상세 라우트 폐기#

레거시 데이터 타입을 Geo 셀프 서비스 프레임워크로 마이그레이션하는 작업의 일환으로 다음 복제 상세 라우트가 폐기됩니다.

  • 디자인 /admin/geo/replication/designs는 /admin/geo/sites//replication/design_management_repositories로 대체
  • 프로젝트 /admin/geo/replication/projects는 /admin/geo/sites//replication/projects로 대체

GitLab 16.4부터 17.0 까지는 레거시 라우트에 대한 조회가 새 라우트로 자동 리디렉션됩니다. 17.0에서는 이 리디렉션을 제거합니다. 레거시 라우트를 사용할 수 있는 북마크나 스크립트가 있다면 업데이트해야 합니다.

GitLab Helm 차트 값 gitlab.kas.privateApi.tls.* 폐기#

KAS와 Helm 차트 컴포넌트 간의 TLS 통신을 지원하기 위해 global.kas.tls.* Helm 값을 도입했습니다. 기존 값인 gitlab.kas.privateApi.tls.enabled와 gitlab.kas.privateApi.tls.secretName은 폐기되었으며 GitLab 17.0에서 제거될 예정입니다.

새 값은 KAS에 대한 TLS를 활성화하는 더 간소화되고 포괄적인 방법을 제공하므로 gitlab.kas.privateApi.tls.* 대신 global.kas.tls.*를 사용해야 합니다. gitlab.kas.privateApi.tls.* 자세한 내용은 다음을 참고합니다.

GitLab Runner 출처 메타데이터 SLSA v0.2 명세서#

러너는 출처 메타데이터를 생성하며 현재는 기본적으로 SLSA v0.2를 준수하는 명세서를 생성합니다. SLSA v1.0 이 출시되어 이제 GitLab에서 지원되므로 v0.2 명세서는 이제 폐기되며 GitLab 17.0에서 제거될 예정입니다. SLSA v1.0 명세서는 GitLab 17.0에서 새로운 기본 명세서 형식이 될 예정입니다.

지원되지 않는 방식을 통한 GraphQL API 접근#

GitLab 17.0부터 GraphQL 접근은 이미 문서화되어 지원되는 토큰 타입을 통해서만 제한됩니다.

문서화되어 지원되는 토큰 타입을 이미 사용하고 있는 고객에게는 호환성이 깨지는 변경이 없습니다.

GraphQL networkPolicies 리소스 폐기#

networkPolicies GraphQL 리소스는 폐기되었으며 GitLab 17.0에서 제거됩니다. GitLab 15.0부터 이 필드는 데이터를 반환하지 않았습니다.

노트의 GraphQL 필드 confidential 이 internal로 변경#

Note의 confidential 필드는 폐기되며 internal로 이름이 변경됩니다.

GraphQL 필드 registrySizeEstimated 폐기#

명확성을 위해 GraphQL 필드 registrySizeEstimated는 대응하는 필드와 맞추기 위해 containerRegistrySizeIsEstimated로 이름이 변경되었습니다. registrySizeEstimated는 GitLab 16.2에서 폐기되었으며 GitLab 17.0에서 제거됩니다. 대신 GitLab 16.2에서 도입된 containerRegistrySizeIsEstimated를 사용합니다.

GraphQL 필드 totalWeight 폐기#

GraphQL을 사용해 이슈 보드에 있는 이슈의 총 weight를 조회할 수 있습니다. 하지만 totalWeight 필드는 최대 크기가 2147483647로 제한됩니다. 이에 따라 totalWeight는 폐기되며 GitLab 17.0에서 제거됩니다.

대신 GitLab 16.2에서 도입된 totalIssueWeight를 사용합니다.

GraphQL 타입 RunnerMembershipFilter가 CiRunnerMembershipFilter로 이름 변경#

GraphQL 타입 RunnerMembershipFilter는 CiRunnerMembershipFilter로 이름이 변경되었습니다. GitLab 17.0에서는 RunnerMembershipFilter 타입에 대한 별칭이 제거됩니다.

GraphQL: SharedRunnersSetting enum의 DISABLED_WITH_OVERRIDE 값 폐기#

GitLab 17.0에서는 SharedRunnersSetting GraphQL enum 타입의 DISABLED_WITH_OVERRIDE 값이 제거됩니다. 대신 DISABLED_AND_OVERRIDABLE를 사용합니다.

GraphQL: canDestroy 및 canDelete 지원 폐기#

Package Registry 사용자 인터페이스는 GitLab GraphQL API에 의존합니다. 누구나 쉽게 기여할 수 있도록 하려면 프론트엔드가 모든 GitLab 제품 영역에서 일관되게 코딩되는 것이 중요합니다. 하지만 GitLab 16.6 이전에는 Package Registry UI가 제품의 다른 영역과 다르게 권한을 처리했습니다.

16.6에서는 Package Registry를 GitLab의 나머지 부분과 맞추기 위해 Types::PermissionTypes::Package 타입 아래에 새로운 UserPermissions 필드를 추가했습니다. 이 새 필드는 Package, PackageBase, PackageDetailsType 타입의 canDestroy 필드를 대체합니다. 또한 ContainerRepository, ContainerRepositoryDetails, ContainerRepositoryTag의 canDelete 필드도 대체합니다. GitLab 17.0에서는 canDestroy와 canDelete 필드가 제거됩니다.

이는 17.0에서 완료될 호환성이 깨지는 변경입니다.

HashiCorp Vault 통합, 기본적으로 CI_JOB_JWT CI/CD 잡 토큰을 더 이상 사용하지 않음#

JWT와 OIDC를 사용하는 CI 워크플로의 보안을 개선하려는 노력의 일환으로, GitLab 16.0에서는 네이티브 HashiCorp 통합도 업데이트됩니다. secrets:vault 키워드를 사용해 Vault에서 시크릿을 가져오는 프로젝트는 모두 ID 토큰을 사용하도록 구성해야 합니다. ID 토큰은 15.7에서 도입되었습니다.

이 변경에 대비하려면 새로운 id_tokens 키워드를 사용하고 aud 클레임을 구성합니다. 바운드 오디언스(bound audience)에는 https:// 접두사를 붙여야 합니다.

GitLab 15.9~15.11에서는 Limit JSON Web Token (JWT) access 설정을 활성화하여 기존 토큰이 어떤 잡에도 노출되지 않도록 막고 secrets:vault 키워드에 대한 ID 토큰 인증을 활성화할 수 있습니다.

GitLab 16.0 이상에서는 다음과 같이 동작합니다.

  • 이 설정은 제거됩니다.
  • id_tokens 키워드를 사용하는 CI/CD 잡은 secrets:vault와 함께 ID 토큰을 사용할 수 있으며, CI_JOB_JWT* 토큰은 사용할 수 없습니다.
  • id_tokens 키워드를 사용하지 않는 잡은 GitLab 17.0까지 계속 CI_JOB_JWT* 토큰을 사용할 수 있습니다.

Auto DevOps 빌드의 Heroku 이미지 업그레이드#

GitLab 17.0에서 auto-build-image 프로젝트는 heroku/builder:20 이미지에서 heroku/builder:22 이미지로 업그레이드됩니다.

새 이미지의 동작을 테스트하려면 CI/CD 변수 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:22로 설정합니다.

GitLab 17.0 이후에도 heroku/builder:20을 계속 사용하려면 AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER를 heroku/builder:20으로 설정합니다.

내부 컨테이너 레지스트리 API 태그 삭제 엔드포인트#

이후 OCI Distribution Spec으로 대체된 Docker Registry HTTP API V2 Spec에는 태그 삭제 작업이 포함되어 있지 않아, 동일한 목적을 달성하기 위해 안전하지 않고 느린 우회 방법(태그가 아니라 매니페스트를 삭제하는 방식)을 사용해야 했습니다.

태그 삭제는 중요한 기능이므로, GitLab 컨테이너 레지스트리에 태그 삭제 작업을 추가하여 V2 API를 Docker 및 OCI distribution spec의 범위 밖으로 확장했습니다.

이후 OCI Distribution Spec도 업데이트를 거쳐 DELETE /v2/<name>/manifests/<tag> 엔드포인트를 이용한 태그 삭제 작업을 갖추게 되었습니다.

그 결과 컨테이너 레지스트리에는 완전히 동일한 기능을 제공하는 엔드포인트가 두 개 남게 되었습니다. DELETE /v2/<name>/tags/reference/<tag>는 GitLab 커스텀 태그 삭제 엔드포인트이고, DELETE /v2/<name>/manifests/<tag>는 GitLab 16.4에서 도입된 OCI 준수 태그 삭제 엔드포인트입니다.

GitLab 커스텀 태그 삭제 엔드포인트에 대한 지원은 GitLab 16.4에서 지원 중단되며, GitLab 17.0에서 제거됩니다.

이 엔드포인트는 공개 GitLab 컨테이너 레지스트리 API가 아니라 내부 컨테이너 레지스트리 애플리케이션 API에서 사용됩니다. 대부분의 컨테이너 레지스트리 사용자는 별도 조치가 필요하지 않습니다. 태그 삭제와 관련된 모든 GitLab UI 및 API 기능은 새로운 OCI 준수 엔드포인트로 전환된 이후에도 그대로 유지됩니다.

내부 컨테이너 레지스트리 API에 접근하여 기존 태그 삭제 엔드포인트를 사용하고 있다면, 새 엔드포인트로 업데이트해야 합니다.

JWT /-/jwks 인스턴스 엔드포인트 지원 중단#

GitLab 17.0에서 구버전 JSON 웹 토큰이 지원 중단됨에 따라, /oauth/discovery/keys의 별칭인 관련 /-/jwks 엔드포인트도 더 이상 필요하지 않아 제거됩니다. 인증 설정에서 jwks_url을 지정해 왔다면 설정을 oauth/discovery/keys로 업데이트하고 엔드포인트에서 /-/jwks 사용을 모두 제거합니다. 인증 설정에서 이미 oauth_discovery_keys를 사용 중이고 엔드포인트에서 /-/jwks 별칭을 사용하고 있다면, 엔드포인트에서 /-/jwks를 제거합니다. 예를 들어 https://gitlab.example.com/-/jwks를 https://gitlab.example.com으로 변경합니다.

레거시 Geo Prometheus 메트릭#

프로젝트를 Geo self-service framework로 마이그레이션함에 따라 여러 Prometheus 메트릭이 지원 중단되었습니다. 다음 Geo 관련 Prometheus 메트릭은 지원 중단되었으며 17.0에서 제거됩니다. 아래 표는 지원 중단된 메트릭과 각각의 대체 메트릭을 정리한 것입니다. 대체 메트릭은 GitLab 16.3.0 이상에서 사용할 수 있습니다.

지원 중단된 메트릭 대체 메트릭
geo_repositories_synced geo_project_repositories_synced
geo_repositories_failed geo_project_repositories_failed
geo_repositories_checksummed geo_project_repositories_checksummed
geo_repositories_checksum_failed geo_project_repositories_checksum_failed
geo_repositories_verified geo_project_repositories_verified
geo_repositories_verification_failed geo_project_repositories_verification_failed
geo_repositories_checksum_mismatch 없음
geo_repositories_retrying_verification 없음

License List 지원 중단#

현재 GitLab에서는 프로젝트와 해당 컴포넌트가 사용하는 모든 라이선스 목록을 License List에서 확인할 수 있습니다. 16.8부터 License List는 지원 중단되었으며 17.0에서 브레이킹 체인지으로 제거될 예정입니다. 이제는 의존성 목록에서 프로젝트나 그룹이 사용하는 모든 라이선스를 확인할 수 있으며, 라이선스별로 필터링도 가능합니다.

sbt 1.0.x에 대한 License Scanning 지원 중단#

GitLab 17.0에서는 sbt 1.0.x에 대한 License Scanning 지원이 제거됩니다.

3.8.8 이상 버전으로 업그레이드할 것을 권장합니다.

Ubuntu 18.04 용 Linux 패키지#

  • GitLab 16.8에서 공지
  • GitLab 17.0에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 중단 이슈를 참고합니다.

Ubuntu 18.04에 대한 표준 지원은 2023년 6월에 종료되었습니다.

GitLab 17.0 부터는 Ubuntu 18.04 용 Linux 패키지를 제공하지 않습니다.

GitLab 17.0 이상을 준비하려면 다음과 같이 진행합니다.

  1. GitLab 인스턴스를 실행 중인 서버를 Ubuntu 18.04에서 Ubuntu 20.04 또는 Ubuntu 22.04로 이전합니다.
  2. 현재 사용 중인 Ubuntu 버전에 맞는 Linux 패키지로 GitLab 인스턴스를 업그레이드합니다.

리포지터리 디렉터리 목록 조회 Rake 태스크#

gitlab-rake gitlab:list_repos Rake 태스크는 정상 동작하지 않으며 GitLab 17.0에서 제거됩니다. GitLab을 마이그레이션하는 경우 백업 및 복원을 대신 사용합니다.

GraphQL API로 Package 설정을 변경할 수 있는 Maintainer 권한#

Maintainer 권한을 가진 사용자가 GraphQL API를 사용해 그룹의 Packages and registries 설정을 변경할 수 있는 기능은 GitLab 15.8에서 지원 중단되었으며 GitLab 17.0에서 제거됩니다. 이 설정에는 다음이 포함됩니다.

GitLab 17.0 이상에서는 그룹의 Packages and registries 설정을 GitLab UI 또는 GraphQL API로 변경하려면 그룹에 대한 Owner 권한이 있어야 합니다.

dependency scanning 및 license scanning의 Maven 3.8.8 미만 버전 지원#

GitLab 17.0에서는 dependency scanning 및 license scanning에서 Maven 3.8.8 미만 버전 지원이 제거됩니다.

3.8.8 이상 버전으로 업그레이드할 것을 권장합니다.

Sidekiq 옵션의 min concurrency 및 max concurrency#

Linux 패키지(Omnibus) 설치의 경우, sidekiq['min_concurrency'] 및 sidekiq['max_concurrency'] 설정은 GitLab 16.9에서 지원 중단되며 GitLab 17.0에서 제거됩니다.

GitLab 16.9 이상에서는 sidekiq['concurrency']를 사용해 각 프로세스의 스레드 수를 명시적으로 설정할 수 있습니다.

위 변경 사항은 Linux 패키지(Omnibus) 설치에만 적용됩니다.

GitLab Helm 차트 설치의 경우, sidekiq 서브차트에 extraEnv로 SIDEKIQ_CONCURRENCY_MIN 및/또는 SIDEKIQ_CONCURRENCY_MAX를 전달하는 방식은 GitLab 16.10에서 지원 중단되며 GitLab 17.0에서 제거됩니다.

concurrency 옵션을 사용해 각 프로세스의 스레드 수를 명시적으로 설정할 수 있습니다.

/users REST API 엔드포인트의 오프셋 페이지네이션 지원 중단#

/users REST API의 오프셋 페이지네이션은 GitLab 16.5에서 지원 중단되었으며, GitLab 17.0에서 제거됩니다. 대신 키셋 페이지네이션을 사용합니다.

구버전 JSON 웹 토큰 지원 중단#

OIDC를 지원하는 ID 토큰은 GitLab 15.7에서 도입되었습니다. 이 토큰은 기존 JSON 웹 토큰(JWT)보다 구성 가능한 옵션이 많고 OIDC를 준수하며, ID 토큰이 명시적으로 구성된 CI/CD 잡에서만 사용할 수 있습니다. ID 토큰은 모든 잡에 노출되는 기존 CI_JOB_JWT* JSON 웹 토큰보다 안전하며, 그 결과 다음과 같은 기존 JSON 웹 토큰은 지원 중단됩니다.

  • CI_JOB_JWT
  • CI_JOB_JWT_V1
  • CI_JOB_JWT_V2

이 변경에 대비하려면 파이프라인이 지원 중단된 토큰 대신 ID 토큰을 사용하도록 구성합니다. OIDC 준수를 위해 iss 클레임은 이제 정규화된 도메인 이름(예: https://example.com)을 사용하며, 이는 이전에 CI_JOB_JWT_V2 토큰과 함께 도입되었습니다.

GitLab 15.9~15.11에서는 Limit JSON Web Token (JWT) access 설정을 활성화하여 기존 토큰이 어떤 잡에도 노출되지 않도록 막고 secrets:vault 키워드에 대한 ID 토큰 인증을 활성화할 수 있습니다.

GitLab 16.0 이상에서는 다음과 같이 동작합니다.

  • 이 설정은 제거됩니다.
  • id_tokens 키워드를 사용하는 CI/CD 잡은 secrets:vault와 함께 ID 토큰을 사용할 수 있으며, CI_JOB_JWT* 토큰은 사용할 수 없습니다.
  • id_tokens 키워드를 사용하지 않는 잡은 GitLab 17.0까지 계속 CI_JOB_JWT* 토큰을 사용할 수 있습니다.

GitLab 17.0에서는 지원 중단된 토큰이 완전히 제거되어 CI/CD 잡에서 더 이상 사용할 수 없습니다.

OmniAuth Facebook 지원 중단#

OmniAuth Facebook 지원은 GitLab 17.0에서 제거됩니다. 마지막 gem 릴리스는 2021년이었으며 현재 유지 관리되지 않고 있습니다. 현재 사용률은 0.1% 미만입니다. OmniAuth Facebook을 사용 중이라면 지원 종료 전에 지원되는 다른 제공자로 전환합니다.

API 페이로드의 패키지 파이프라인 페이지네이션 적용#

/api/v4/projects/:id/packages에 대한 API 요청은 페이지네이션된 패키지 목록을 반환합니다. 각 패키지는 이 응답에서 연결된 모든 파이프라인을 나열합니다. 이는 성능에 영향을 줄 수 있는데, 패키지 하나에 수백 또는 수천 개의 파이프라인이 연결될 수 있기 때문입니다.

17.0 마일스톤에서는 API 응답에서 pipelines 속성을 제거합니다.

PostgreSQL 13 지원 종료#

GitLab은 PostgreSQL에 대한 연간 업그레이드 주기를 따릅니다.

PostgreSQL 13 지원은 GitLab 17.0에서 제거될 예정입니다. GitLab 17.0에서는 PostgreSQL 14가 최소 요구 버전이 됩니다.

PostgreSQL 13은 GitLab 16 릴리스 주기 동안 계속 지원됩니다. GitLab 17.0 이전에 미리 업그레이드하려는 인스턴스를 위해 PostgreSQL 14도 지원됩니다. Omnibus Linux 패키지로 설치한 단일 PostgreSQL 인스턴스를 운영 중이라면, 16.11에서 자동 업그레이드가 시도될 수 있습니다. 업그레이드를 수용할 수 있는 충분한 디스크 공간을 확보합니다. 자세한 내용은 Omnibus 데이터베이스 문서를 참고합니다.

Proxy 기반 DAST 지원 중단#

GitLab 17.0 부터는 Proxy 기반 DAST가 지원되지 않습니다. 동적 분석을 통한 보안 취약점 탐지를 계속 진행하려면 Browser 기반 DAST로 마이그레이션합니다. Proxy 기반 DAST 위에 구축된 인큐베이팅 기능인 Breach and Attack Simulation도 이번 지원 중단에 포함되며 17.0 이후에는 지원되지 않습니다.

Sidekiq 실행 시 큐 선택기(queue selector) 지원 중단#

  • GitLab 15.9에서 공지
  • GitLab 16.0에서 지원 종료
  • GitLab 17.0에서 제거 (브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 중단 이슈를 참고합니다.

큐 선택기(queue selector)를 사용해 Sidekiq를 실행하는 방식(여러 프로세스가 특정 큐 집합을 리스닝하도록 하는 방식)과 negate 설정은 지원 중단되며 17.0에서 완전히 제거됩니다.

큐 선택기 대신 모든 프로세스가 모든 큐를 리스닝하도록 마이그레이션할 수 있습니다. 예를 들어 Sidekiq가 현재 4개 프로세스(/etc/gitlab/gitlab.rb의 sidekiq['queue_groups']에 4개 요소로 표시)로 큐 선택기(sidekiq['queue_selector'] = true)를 사용해 실행 중이라면, Sidekiq가 4개 프로세스 모두에서 모든 큐를 리스닝하도록 변경할 수 있습니다. 예를 들어 sidekiq['queue_groups'] = ['*'] * 4와 같이 설정합니다. 이 방식은 Reference Architecture에서도 권장됩니다. 단, Sidekiq는 머신의 CPU 개수만큼 프로세스를 효과적으로 실행할 수 있다는 점에 유의합니다.

대부분의 인스턴스에는 위 방식을 권장하지만, GitLab.com에서도 사용 중인 라우팅 규칙(routing rules)을 사용해 Sidekiq를 실행할 수도 있습니다. 큐 선택기에서 라우팅 규칙으로 마이그레이션하는 가이드를 참고합니다. 잡이 완전히 유실되지 않도록 마이그레이션 시 주의가 필요합니다.

Linux 용 GitLab.com 소형 러너의 태그 제거#

역사적인 이유로, Linux 용 GitLab.com 소형 러너는 레이블처럼 사용되던 태그가 많이 붙어 있었습니다. 저희는 태그를 saas-linux-small-amd64 하나로 단순화하여 모든 GitLab.com 러너에서 일관되게 사용하고자 합니다.

다음 태그를 지원 중단합니다: docker, east-c, gce, git-annex, linux, mongo, mysql, postgres, ruby, shared.

자세한 내용은 Removing tags from our small SaaS runner on Linux를 참고합니다.

Required Pipeline Configuration 지원 중단#

Required pipeline configuration은 GitLab 17.0에서 제거됩니다. 이는 Ultimate 티어의 GitLab Self-Managed 사용자에게 영향을 미칩니다.

Required pipeline configuration은 다음 중 하나로 대체해야 합니다.

이러한 대안은 필수 파이프라인을 특정 컴플라이언스 프레임워크 레이블에 할당할 수 있어 더 큰 유연성을 제공하므로 권장됩니다.

컴플라이언스 파이프라인은 향후 지원 중단되어 보안 정책으로 마이그레이션될 예정입니다. 자세한 내용은 마이그레이션 및 지원 중단 에픽을 참고합니다.

GitLab 17.0에서 SAST 분석기 커버리지 변경#

GitLab SAST에서 기본으로 사용되는 분석기 수를 줄이고 있습니다. 이는 다양한 프로그래밍 언어에서 더 빠르고 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환입니다.

GitLab 17.0에서는 다음과 같이 변경됩니다.

  1. SAST CI/CD 템플릿에서 일부 언어별 분석기를 제거하고, 해당 커버리지를 Semgrep 기반 분석기의 GitLab 지원 탐지 규칙으로 대체합니다. 다음 분석기는 지원 중단되었으며 GitLab 17.0에서 지원 종료됩니다.
    1. Brakeman (Ruby, Ruby on Rails)
    2. Flawfinder (C, C++)
    3. MobSF (Android, iOS)
    4. NodeJS Scan (Node.js)
    5. PHPCS Security Audit (PHP)
  2. SAST CI/CD 템플릿을 변경하여 Kotlin 및 Scala 코드에 대한 SpotBugs 기반 분석기 실행을 중단합니다. 이 언어들은 대신 Semgrep 기반 분석기의 GitLab 지원 탐지 규칙으로 스캔됩니다.

지원 중단된 분석기는 즉시 보안 업데이트만 제공되며, 그 외 일반적인 개선이나 업데이트는 보장되지 않습니다. 분석기가 GitLab 17.0에서 지원 종료된 이후에는 더 이상 업데이트가 제공되지 않습니다. 다만 이 분석기들에 대해 기존에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 잡 정의를 통해 실행하는 기능을 제거하지는 않습니다.

취약점 관리 시스템은 기존 결과 대부분을 새로운 탐지 규칙과 매칭하도록 업데이트합니다. 새 분석기로 마이그레이션되지 않은 결과는 자동으로 해결 처리됩니다. 자세한 내용은 취약점 변환 문서를 참고합니다.

제거되는 분석기에 커스터마이징을 적용했거나, 현재 파이프라인에서 Semgrep 기반 분석기를 비활성화하고 있다면 이 변경에 대한 지원 중단 이슈에 설명된 대로 조치를 취해야 합니다.

_EXCLUDED_ANALYZERS 변수를 사용하는 스캔 실행 정책의 프로젝트 변수 재정의#

SEP 변수를 최고 우선순위로 적용하는 기능을 제공하고 검증하는 과정에서, 파이프라인 설정에서 _EXCLUDED_PATHS는 설정할 수 있지만 정책과 파이프라인 설정 양쪽 모두에서 _EXCLUDED_ANALYZERS는 설정할 수 없게 되는 의도치 않은 동작을 발견했습니다.

스캔 실행 변수가 올바르게 적용되도록, GitLab 스캔 액션을 사용하는 스캔 실행 정책에 _EXCLUDED_ANALYZERS 또는 _EXCLUDED_PATHS 변수가 지정되면 이제 이 변수가 제외 분석기에 대해 정의된 모든 프로젝트 변수를 재정의합니다.

사용자는 17.0 이전에 기능 플래그를 활성화하여 이 동작을 강제할 수 있습니다. 17.0에서는 _EXCLUDED_ANALYZERS/_EXCLUDED_PATHS 변수를 사용하는 프로젝트 중 해당 변수를 정의한 스캔 실행 정책이 있는 경우 기본적으로 재정의됩니다.

Secure 분석기 주 버전 업데이트#

Secure 스테이지는 GitLab 17.0 릴리스에 맞춰 분석기의 주 버전을 올릴 예정입니다.

기본으로 포함된 템플릿을 사용하지 않거나 분석기 버전을 고정해 둔 경우, 고정된 버전을 제거하거나 최신 주 버전으로 업데이트하도록 CI/CD 잡 정의를 업데이트해야 합니다.

GitLab 16.0~16.11 사용자는 GitLab 17.0 릴리스 전까지는 평소와 같이 분석기 업데이트를 계속 받으며, 이후로는 새로 수정된 버그와 새 기능이 새 주 버전의 분석기에서만 릴리스됩니다.

유지 관리 정책에 따라 지원 중단된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최근 3개 마이너 릴리스 이내에서 백포트됩니다.

구체적으로 다음 분석기는 지원 중단되며 GitLab 17.0 릴리스 이후로는 더 이상 업데이트되지 않습니다.

  • Container scanning: 버전 6
  • Dependency scanning: 버전 4
  • DAST: 버전 4
  • DAST API: 버전 3
  • Fuzz API: 버전 3
  • IaC scanning: 버전 4
  • Secret detection: 버전 5
  • Static application security testing (SAST): 모든 분석기의 버전 4
    • brakeman
    • flawfinder
    • kubesec
    • mobsf
    • nodejs-scan
    • phpcs-security-audit
    • pmd-apex
    • semgrep
    • sobelow
    • spotbugs

보안 정책 필드 match_on_inclusion 지원 중단#

스캔 결과 정책에 대한 추가 필터 지원에서, newly_detected 필드를 new_needs_triage와 new_dismissed 두 옵션으로 분리했습니다. 보안 정책 YAML에 두 옵션을 모두 포함하면 기존 newly_detected 필드와 동일한 결과를 얻을 수 있습니다. 다만 이제는 new_needs_triage만 사용해 이미 기각(dismiss)된 결과를 제외하도록 필터를 좁힐 수 있습니다. 에픽 10203의 논의에 따라, YAML 정의를 더 명확히 하기 위해 match_on_inclusion 필드의 이름을 match_on_inclusion_license로 변경했습니다.

보안 정책 필드 newly_detected 지원 중단#

스캔 결과 정책에 대한 추가 필터 지원에서, newly_detected 필드를 new_needs_triage와 new_dismissed 두 옵션으로 분리했습니다. 보안 정책 YAML에 두 옵션을 모두 포함하면 기존 newly_detected 필드와 동일한 결과를 얻을 수 있습니다. 다만 이제는 new_needs_triage만 사용해 이미 기각(dismiss)된 결과를 제외하도록 필터를 좁힐 수 있습니다.

셀프 호스팅 Sentry 21.4.1 이하 버전 지원#

셀프 호스팅 Sentry 21.4.1 이하 버전 지원은 지원 중단되었으며 GitLab 17.0에서 제거됩니다.

셀프 호스팅 Sentry 버전이 21.4.1 이하라면, GitLab 17.0 이상으로 업그레이드한 이후 GitLab 인스턴스에서 오류를 수집하지 못할 수 있습니다. GitLab 인스턴스에서 Sentry 인스턴스로 계속 오류를 전송하려면 Sentry를 21.5.0 이상으로 업그레이드합니다. 자세한 내용은 Sentry 문서를 참고합니다.

Note

이 지원 중단은 관리자를 위한 GitLab 인스턴스 오류 추적 기능에 해당합니다. 이 지원 중단은 개발자가 직접 배포한 애플리케이션을 위한 GitLab 오류 추적과는 관련이 없습니다.

백업용 커스텀 스키마 설정 지원 중단#

Linux 패키지 설치의 경우 /etc/gitlab/gitlab.rb에서 gitlab_rails['backup_pg_schema'] = '<schema_name>'을 설정하여, 셀프 컴파일 설치의 경우 config/gitlab.yml을 편집하여 백업에 커스텀 스키마를 사용하도록 GitLab을 구성할 수 있었습니다.

이 설정은 존재했지만 실제로는 아무런 효과가 없었고 의도한 목적을 수행하지 못했습니다. 이 설정은 GitLab 17.0에서 제거됩니다.

GitHub 임포터 Rake 태스크#

GitLab 16.6에서 GitHub 임포터 Rake 태스크는 지원 중단되었습니다. 이 Rake 태스크는 API가 지원하는 여러 기능이 빠져 있으며 적극적으로 유지 관리되지 않습니다.

GitLab 17.0에서 이 Rake 태스크는 제거됩니다.

대신 API 또는 UI를 사용해 GitHub 리포지터리를 임포트할 수 있습니다.

Visual Reviews 도구 지원 중단#

제한적인 고객 사용률과 기능으로 인해, Review Apps 용 Visual Reviews 기능은 지원 중단되며 제거될 예정입니다. 별도의 대체 기능은 계획되어 있지 않으며, 사용자는 GitLab 17.0 이전에 Visual Reviews 사용을 중단해야 합니다.

gitlab-runner exec 명령 지원 중단#

gitlab-runner exec 명령은 지원 중단되었으며 GitLab Runner 16.0에서 완전히 제거됩니다. gitlab-runner exec 기능은 원래 GitLab 인스턴스에 변경 사항을 커밋하지 않고도 로컬 시스템에서 GitLab CI 파이프라인을 검증할 수 있도록 개발되었습니다. 하지만 GitLab CI가 계속 발전하면서 모든 GitLab CI 기능을 gitlab-runner exec에 그대로 복제하는 것은 더 이상 현실적이지 않았습니다. 파이프라인 문법과 검증 시뮬레이션은 GitLab 파이프라인 에디터에서 사용할 수 있습니다.

Kubernetes 용 GitLab 에이전트의 풀 기반 배포 기능 지원 중단#

Flux 및 관련 통합을 우선하여 Kubernetes 용 GitLab 에이전트에 내장된 풀 기반 배포 기능을 지원 중단합니다.

Kubernetes 용 GitLab 에이전트 자체는 지원 중단되지 않습니다. 이번 변경은 에이전트의 풀 기반 기능에만 영향을 미칩니다. 그 외 모든 기능은 그대로 유지되며, GitLab은 Kubernetes 용 에이전트를 계속 지원합니다.

풀 기반 배포에 에이전트를 사용 중이라면 Flux로 마이그레이션해야 합니다. Flux는 GitOps를 위한 성숙한 CNCF 프로젝트이므로, 저희는 2023년 2월 Flux를 GitLab과 통합하기로 결정했습니다.

GitLab Self-Managed의 Twitter OmniAuth 로그인 옵션 지원 중단#

Twitter OAuth 1.0a OmniAuth는 사용률이 낮고 gem 지원이 부족하여 GitLab Self-Managed에서 지원 중단되며 GitLab 17.0에서 제거됩니다. 대신 지원되는 다른 OmniAuth 제공자를 사용합니다.

통합 승인 규칙 지원 종료#

통합 승인 규칙은 더 많은 유연성을 제공하는 다중 승인 규칙으로 대체되어 지원이 종료됩니다. 브레이킹 체인지 없이는 통합 승인 규칙을 다중 승인 규칙으로 마이그레이션하지 못할 수 있습니다. 수동 마이그레이션을 돕기 위해 마이그레이션 문서를 도입했습니다.

통합 승인 규칙이 제거되기 전에 수동으로 마이그레이션하지 않으면 GitLab 이 설정을 자동으로 마이그레이션합니다. 다중 승인 규칙은 더 세밀한 승인 규칙 설정을 허용하므로, 마이그레이션을 GitLab에 맡기면 자동 마이그레이션 결과가 원하는 것보다 더 제한적인 규칙이 될 수 있습니다. 예상보다 더 많은 승인이 필요한 문제가 있다면 마이그레이션 규칙을 확인합니다.

GitLab 15.11에서 통합 승인 규칙에 대한 UI 지원이 제거되었습니다. API 로는 여전히 통합 승인 규칙에 접근할 수 있습니다.

Linux 용 GitLab.com 러너의 운영체제 버전 업그레이드#

GitLab은 Linux 용 GitLab.com 러너의 작업 실행에 사용되는 임시 VM의 컨테이너 최적화 운영체제(COS)를 업그레이드합니다. 이 COS 업그레이드에는 Docker Engine을 19.03.15 버전에서 23.0.5 버전으로 업그레이드하는 작업이 포함되며, 알려진 호환성 문제가 발생합니다.

20.10 버전 이전의 Docker-in-Docker 또는 v1.9.0 이전의 Kaniko 이미지는 컨테이너 런타임을 감지하지 못하고 실패합니다.

자세한 내용은 Linux 용 SaaS 러너의 운영체제 버전 업그레이드를 참고합니다.

취약점 confidence 필드#

GitLab 15.3에서 버전 15 미만의 보안 리포트 스키마 지원이 종료되었습니다. 취약점 발견 항목의 confidence 속성은 15-0-0 이전 스키마 버전에만 존재하며, GitLab 15.4가 15-0-0 스키마 버전을 지원하므로 사실상 지원이 종료된 상태입니다. 리포트와 공개 API 간 일관성을 유지하기 위해, GraphQL API의 취약점 관련 컴포넌트에 있는 confidence 속성은 이제 지원이 종료되며 17.0에서 제거됩니다.

after_script 키워드가 취소된 작업에서도 실행됨#

after_script CI/CD 키워드는 작업의 메인 script 섹션 이후에 추가 명령을 실행하는 데 사용됩니다. 이는 작업에서 사용한 환경이나 기타 리소스를 정리하는 용도로 흔히 쓰입니다. 많은 사용자에게 작업이 취소되면 after_script 명령이 실행되지 않는다는 점은 예상치 못한 바람직하지 않은 동작이었습니다. 17.0에서는 작업이 취소된 이후에도 명령을 실행하도록 이 키워드가 업데이트됩니다. after_script 키워드를 사용하는 CI/CD 설정이 취소된 작업에서도 실행되는 상황을 처리할 수 있는지 확인합니다.

dependency_files 지원 종료#

현재 GitLab에서 프로젝트의 의존성 목록은 의존성 스캐닝 리포트의 dependency_files 콘텐츠를 사용해 생성됩니다. 그러나 그룹 의존성 목록과의 일관성을 유지하기 위해, GitLab 17.0부터 프로젝트 의존성 목록은 PostgreSQL 데이터베이스에 저장된 CycloneDX SBOM 리포트 아티팩트를 사용합니다. 이에 따라 의존성 스캐닝 리포트 스키마의 dependency_files 속성은 지원이 종료되며 17.0에서 제거됩니다.

이 지원 종료의 일환으로 dependency_path 역시 지원이 종료되어 17.0에서 제거됩니다. GitLab은 유사한 정보를 제공하기 위해 CycloneDX 사양을 사용하는 의존성 그래프 구현을 진행합니다.

또한 운영체제 컴포넌트 목록을 제공하던 컨테이너 스캐닝 CI 작업은 CycloneDX SBOM 리포트로 대체되어 더 이상 의존성 스캐닝 리포트를 생성하지 않습니다. 컨테이너 스캐닝용 CS_DISABLE_DEPENDENCY_LIST 환경 변수는 더 이상 사용되지 않으며 17.0에서 함께 제거됩니다.

DORA API의 metric 필터와 value 필드#

이제 새로운 metrics 필드를 사용해 여러 DORA 지표를 동시에 조회할 수 있습니다. GraphQL DORA API의 metric 필터와 value 필드는 GitLab 17.0에서 제거됩니다.

omniauth-azure-oauth2 gem 지원 종료#

GitLab 사용자는 omniauth-azure-oauth2 gem을 사용해 GitLab에 인증할 수 있습니다. 17.0에서는 이 gem 이 omniauth_openid_connect gem으로 대체됩니다. 새 gem은 기존 gem과 동일한 기능을 모두 포함하면서도 업스트림 유지 관리를 받고 있어 보안과 중앙 집중식 관리 측면에서 더 낫습니다.

이 변경으로 인해 사용자는 마이그레이션 시점에 OAuth 2.0 공급자에 다시 연결해야 합니다. 문제를 방지하려면 17.0 이전 언제든 omniauth_openid_connect를 새 공급자로 추가합니다. 사용자에게는 새 로그인 버튼이 표시되며 자격 증명을 수동으로 다시 연결해야 합니다. 17.0 이전에 omniauth_openid_connect gem을 적용하지 않으면 사용자는 Azure 로그인 버튼으로 더 이상 로그인할 수 없으며, 관리자가 올바른 gem을 적용할 때까지 사용자 이름과 비밀번호로 로그인해야 합니다.

omnibus_gitconfig 설정 항목 지원 종료#

omnibus_gitconfig['system'] 설정 항목은 지원이 종료되었습니다. Gitaly 용 커스텀 Git 설정을 지정하는 데 omnibus_gitconfig['system']을 사용하고 있다면, GitLab 17.0으로 업그레이드하기 전에 Gitaly 설정을 통해 Git을 직접 구성해야 합니다. 설정 키는 gitaly[:configuration][:git][:config] 아래에 지정합니다.

예:

  gitaly[:configuration][:git][:config] = [
    {
      key: 'fetch.fsckObjects',
      value: 'true',
    },
    # ...
  ]

설정 키의 형식은 CLI 플래그 git -c <configuration>을 통해 git에 전달되는 형식과 일치해야 합니다.

기존 키를 예상되는 형식으로 변환하는 데 어려움이 있다면, 올바른 형식의 기존 키를 Gitaly의 Linux 패키지 생성 설정 파일에서 확인합니다. 기본적으로 이 설정 파일은 /var/opt/gitlab/gitaly/config.toml에 있습니다.

Gitaly가 관리하는 다음 설정 옵션은 제거해야 합니다. 이 키들은 Gitaly로 마이그레이션할 필요가 없습니다.

  • pack.threads=1
  • receive.advertisePushOptions=true
  • receive.fsckObjects=true
  • repack.writeBitmaps=true
  • transfer.hideRefs=^refs/tmp/
  • transfer.hideRefs=^refs/keep-around/
  • transfer.hideRefs=^refs/remotes/
  • core.alternateRefsCommand="exit 0 #"
  • core.fsyncObjectFiles=true
  • fetch.writeCommitGraph=true

postgres_exporter['per_table_stats'] 설정 항목#

Linux 패키지는 번들로 제공되는 PostgreSQL exporter 용 커스텀 쿼리를 제공하며, 여기에는 per_table_stats 쿼리가 포함되어 있었고 이는 postgres_exporter['per_table_stats'] 설정 항목으로 제어되었습니다.

PostgreSQL exporter는 이제 동일한 지표를 제공하는 stat_user_tables 컬렉터를 제공합니다. postgres_exporter['per_table_stats']를 활성화해 두었다면 대신 postgres_exporter['flags']['collector.stat_user_tables']를 활성화합니다.

projectFingerprint GraphQL 필드#

취약점 발견 항목의 project_fingerprint 속성은 지원이 종료되고 uuid 속성으로 대체됩니다. 발견 항목을 식별하는 데 UUIDv5 값을 사용하면 관련 엔터티를 발견 항목과 쉽게 연결할 수 있습니다. project_fingerprint 속성은 더 이상 발견 항목을 추적하는 데 사용되지 않으며 GitLab 17.0에서 제거됩니다. 16.1부터 project_fingerprint의 출력값은 uuid 필드와 동일한 값을 반환합니다.

공개 프로젝트의 repository_download_operation 감사 이벤트 유형#

감사 이벤트 유형 repository_download_operation은 현재 공개 프로젝트와 비공개 프로젝트를 포함한 모든 프로젝트 다운로드에 대해 데이터베이스에 저장됩니다. 공개 프로젝트의 경우 인증되지 않은 사용자도 이 이벤트를 트리거할 수 있으므로 감사 목적으로는 그다지 유용하지 않습니다.

GitLab 17.0부터 repository_download_operation 감사 이벤트 유형은 비공개 또는 내부 프로젝트에서만 트리거됩니다. 새 감사 이벤트 유형인 public_repository_download_operation을 공개 프로젝트 다운로드용으로 추가하며, 이 새 이벤트 유형은 스트리밍 전용입니다.

npm 패키지 업로드가 이제 비동기로 처리됨#

GitLab 패키지 레지스트리는 npm과 Yarn을 지원합니다. npm 또는 Yarn 패키지를 업로드하면 이 업로드는 동기 방식으로 처리됩니다. 그러나 동기 업로드에는 알려진 문제가 있습니다. 예를 들어 GitLab은 오버라이드 같은 기능을 지원하지 않습니다.

17.0부터 npm과 Yarn 패키지는 비동기로 업로드됩니다. 패키지가 게시되는 즉시 사용 가능할 것으로 기대하는 파이프라인이 있을 수 있으므로 이는 브레이킹 체인지입니다.

우회 방법으로 패키지 API를 사용해 패키지를 확인해야 합니다.

GitLab 16.9#

lfs_check 기능 플래그 지원 종료#

  • GitLab 16.6에서 발표
  • GitLab 16.9에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

GitLab 16.9에서 lfs_check 기능 플래그를 제거합니다. 이 기능 플래그는 4 년 전에 도입되었으며 LFS 무결성 검사 활성화 여부를 제어합니다. 이 기능 플래그는 기본적으로 활성화되어 있지만, 일부 고객은 LFS 무결성 검사에서 성능 문제를 겪어 명시적으로 비활성화했습니다.

LFS 무결성 검사의 성능을 대폭 개선한 후, 이제 이 기능 플래그를 제거할 준비가 되었습니다. 플래그가 제거되면 현재 비활성화되어 있는 모든 환경에서 이 기능이 자동으로 켜집니다.

해당 환경에서 이 기능 플래그가 비활성화되어 있고 성능 문제가 우려된다면, 16.9에서 제거되기 전에 미리 활성화하여 성능을 모니터링합니다. 활성화 후 성능 문제가 발견되면 이 피드백 이슈에 알려주길 바랍니다.

GitLab 16.8#

openSUSE Leap 15.4 패키지#

  • GitLab 16.5에서 발표
  • GitLab 16.8에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

openSUSE Leap 15.4에 대한 지원 및 보안 업데이트는 2023 년 11 월 종료됩니다.

GitLab 15.4는 openSUSE Leap 15.5 용 패키지를 제공했습니다. GitLab 15.8 이후 버전은 openSUSE Leap 15.4 용 패키지를 제공하지 않습니다.

GitLab 15.8 이후 버전을 준비하려면 다음을 수행해야 합니다.

  1. 인스턴스를 openSUSE Leap 15.4에서 openSUSE Leap 15.5로 이전합니다.
  2. openSUSE Leap 15.4 용 GitLab 제공 패키지에서 openSUSE Leap 15.5 용 GitLab 제공 패키지로 전환합니다.

GitLab 16.7#

Shimo 통합#

Shimo Workspace 통합은 지원이 종료되었으며 JiHu GitLab 코드베이스로 이전됩니다.

user_email_lookup_limit API 필드#

user_email_lookup_limit API 필드는 GitLab 14.9에서 지원이 종료되고 GitLab 16.7에서 제거됩니다. 이 기능이 제거되기 전까지 user_email_lookup_limit은 search_rate_limit의 별칭으로 처리되어 기존 워크플로는 계속 동작합니다.

user_email_lookup_limit의 속도 제한을 변경하는 API 호출은 모두 search_rate_limit을 대신 사용해야 합니다.

GitLab 16.6#

작업 토큰 허용 목록이 공개 및 내부 프로젝트까지 적용됨#

16.6부터 이 프로젝트에 대한 접근 제한이 활성화되어 있으면, 공개(public) 또는 내부(internal) 프로젝트는 프로젝트의 허용 목록에 없는 프로젝트의 작업 토큰 요청을 더 이상 승인하지 않습니다.

이 프로젝트에 대한 접근 제한 설정이 활성화된 공개 또는 내부 프로젝트가 있다면, 계속 승인을 받으려면 작업 토큰 요청을 보내는 모든 프로젝트를 해당 프로젝트의 허용 목록에 추가해야 합니다.

GitLab 16.5#

잠긴 LDAP 그룹에 LDAP 미동기화 멤버 추가 지원 종료#

  • GitLab 16.0에서 발표
  • GitLab 16.5에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

ldap_settings_unlock_groups_by_owners 기능 플래그를 활성화하면 LDAP과 동기화되지 않은 사용자를 잠긴 LDAP 그룹에 추가할 수 있었습니다. 이 기능은 항상 기본적으로 비활성화되어 있었고 기능 플래그 뒤에 있었습니다. SAML 통합과의 일관성을 유지하기 위해, 그리고 동기화되지 않은 그룹 멤버를 허용하는 것이 디렉터리 서비스 사용의 "단일 진실 공급원" 원칙에 어긋나기 때문에 이 기능을 제거합니다. 이 기능이 제거되면 LDAP과 동기화되지 않은 모든 LDAP 그룹 멤버는 해당 그룹에 대한 접근 권한을 잃습니다.

Geo: Housekeeping Rake 작업#

복제와 검증을 Geo 셀프 서비스 프레임워크(SSF)로 마이그레이션하는 작업의 일환으로, 프로젝트 리포지터리용 레거시 복제 기능이 제거되었습니다. 그 결과 레거시 코드에 의존하던 다음 Rake 작업도 함께 제거되었습니다. 이 Rake 작업이 수행하던 작업은 이제 주기적으로, 또는 트리거 이벤트 기반으로 자동 실행됩니다.

Rake 작업 대체 방법
geo:git:housekeeping:full_repack UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.
geo:git:housekeeping:gc 새 리포지터리에서는 항상 실행되며, 이후에는 필요할 때 실행됩니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:git:housekeeping:incremental_repack 필요할 때 실행됩니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:run_orphaned_project_registry_cleaner 고아 레지스트리를 제거하는 레지스트리 일관성 워커가 정기적으로 실행합니다. SSF에는 동등한 Rake 작업이 없습니다.
geo:verification:repository:reset UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.
geo:verification:wiki:reset UI로 이동. SSF에는 동등한 Rake 작업이 없습니다.

GitLab 16.3#

번들 Grafana 지원 종료 및 비활성화#

Omnibus GitLab에 번들로 제공되는 Grafana 버전은 16.0에서 지원이 종료되고 비활성화되며 16.3에서 제거됩니다. 번들 Grafana를 사용 중이라면 다음 중 하나로 마이그레이션해야 합니다.

현재 제공되는 Grafana 버전은 더 이상 지원되는 버전이 아닙니다.

GitLab 16.0 ~ 16.2 버전에서는 여전히 번들 Grafana를 다시 활성화할 수 있습니다. 그러나 GitLab 16.3 부터는 번들 Grafana 활성화가 더 이상 동작하지 않습니다.

RSA 키 크기 제한#

Go 1.20.7 이상 버전에는 RSA 키를 최대 8192 비트로 제한하는 maxRSAKeySize 상수가 추가되었습니다. 그 결과 8192 비트보다 큰 RSA 키는 GitLab에서 더 이상 동작하지 않습니다. 8192 비트보다 큰 RSA 키는 더 작은 크기로 다시 생성해야 합니다.

로그에 tls: server sent certificate containing RSA key larger than 8192 bits와 같은 오류가 포함되어 있으면 이 문제를 알아챌 수 있습니다. 키 길이를 확인하려면 다음 명령을 사용합니다: openssl rsa -in <your-key-file> -text -noout | grep "Key:".

GitLab.com에서 Twitter OmniAuth 로그인 옵션 제거#

Twitter OAuth 1.0a OmniAuth는 낮은 사용률, gem 지원 부족, 그리고 이 기능의 로그인 옵션이 제대로 동작하지 않는다는 이유로 GitLab 16.3에서 GitLab.com에서 지원이 종료되어 제거됩니다. Twitter로 GitLab.com에 로그인하고 있었다면, 비밀번호나 다른 지원되는 OmniAuth 공급자로 로그인할 수 있습니다.

라이선스 준수 CI 템플릿#

업데이트: 이전에는 기존 라이선스 준수 CI/CD 템플릿을 GitLab 16.0에서 제거하겠다고 발표했습니다. 그러나 CycloneDX 파일의 라이선스 스캐닝에 성능 문제가 있어 대신 16.3에서 제거합니다.

GitLab 라이선스 준수 CI/CD 템플릿은 이제 지원이 종료되었으며 GitLab 16.3 릴리스에서 제거될 예정입니다.

라이선스 준수를 위해 계속 GitLab을 사용하려면, CI/CD 파이프라인에서 라이선스 준수 템플릿을 제거하고 의존성 스캐닝 템플릿을 추가합니다. 의존성 스캐닝 템플릿은 이제 필요한 라이선스 정보를 수집할 수 있으므로, 별도의 라이선스 준수 작업을 실행할 필요가 없습니다.

라이선스 준수 CI/CD 템플릿을 제거하기 전에, 인스턴스가 새로운 라이선스 스캐닝 방식을 지원하는 버전으로 업그레이드되었는지 확인합니다.

Dependency Scanner를 대규모로 빠르게 사용하려면, 그룹 레벨에서 스캔 실행 정책을 설정하여 그룹 내 모든 프로젝트에 SBOM 기반 라이선스 스캔을 강제할 수 있습니다. 그런 다음 CI/CD 설정에서 Jobs/License-Scanning.gitlab-ci.yml 템플릿 포함을 제거할 수 있습니다.

레거시 라이선스 준수 기능을 계속 사용하려면 LICENSE_MANAGEMENT_VERSION CI 변수를 4로 설정하면 됩니다. 이 변수는 프로젝트, 그룹, 또는 인스턴스 레벨에서 설정할 수 있습니다. 이 설정을 변경하면 새로운 방식을 도입하지 않고도 기존 버전의 라이선스 준수 기능을 계속 사용할 수 있습니다.

이 레거시 분석기의 버그와 취약점은 더 이상 수정되지 않습니다.

CI 파이프라인 포함 항목 GitLab <= 15.8 15.9 <= GitLab < 16.3 GitLab >= 16.3
DS·LS 템플릿 모두 포함 LS 작업의 라이선스 데이터 사용 LS 작업의 라이선스 데이터 사용 DS 작업의 라이선스 데이터 사용
DS 템플릿만 포함(LS 템플릿 미포함) 라이선스 데이터 없음 DS 작업의 라이선스 데이터 사용 DS 작업의 라이선스 데이터 사용
LS 템플릿만 포함(DS 템플릿 미포함) LS 작업의 라이선스 데이터 사용 LS 작업의 라이선스 데이터 사용 라이선스 데이터 없음

GitLab 16.1#

Alpine 3.12, 3.13, 3.14 기반 GitLab Runner 이미지#

  • GitLab 15.11에서 발표
  • GitLab 16.1에서 지원 종료(EOS)
  • GitLab 16.1에서 제거
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 지원 종료 이슈를 참고합니다.

다음의 수명 종료(EOL) Alpine 버전을 기반으로 하는 러너 이미지 게시를 중단합니다.

  • Alpine 3.12
  • Alpine 3.13
  • Alpine 3.14(2023-05-23 수명 종료)

GitLab 16.0#

Auto DevOps가 더 이상 기본적으로 PostgreSQL 데이터베이스를 프로비저닝하지 않음#

현재 Auto DevOps는 기본적으로 클러스터 내 PostgreSQL 데이터베이스를 프로비저닝합니다. GitLab 16.0에서는 옵트인한 사용자에 대해서만 데이터베이스가 프로비저닝됩니다. 이 변경 사항은 더 견고한 데이터베이스 관리가 필요한 프로덕션 배포를 지원합니다.

Auto DevOps가 클러스터 내 데이터베이스를 프로비저닝하도록 하려면 POSTGRES_ENABLED CI/CD 변수를 true로 설정합니다.

Azure Storage 드라이버가 올바른 루트 프리픽스로 기본 설정됨#

컨테이너 레지스트리의 Azure Storage 드라이버는 기본 루트 디렉터리로 //에 씁니다. 이 기본 루트 디렉터리는 Azure UI 일부 위치에서 /<no-name>/으로 표시됩니다. 이 스토리지 드라이버를 사용하는 이전 배포를 지원하기 위해 이 레거시 동작을 유지해 왔습니다. 그러나 다른 스토리지 드라이버에서 Azure로 이전할 때는, trimlegacyrootprefix: true를 설정하여 앞에 불필요한 슬래시가 없는 루트 경로를 만들도록 스토리지 드라이버를 구성하기 전까지 이 동작으로 인해 모든 데이터가 숨겨집니다.

스토리지 드라이버의 새 기본 설정은 trimlegacyrootprefix: true로 설정되며, /가 기본 루트 디렉터리가 됩니다. 문제를 방지하려면 현재 설정에 trimlegacyrootprefix: false를 추가할 수 있습니다.

이 브레이킹 체인지은 GitLab 16.0에서 발생합니다.

번들 Grafana Helm 차트 지원 종료#

GitLab Helm 차트에 번들로 제공되는 Grafana Helm 차트는 지원이 종료되며 GitLab Helm 차트 7.0 릴리스(GitLab 16.0과 함께 릴리스)에서 제거됩니다.

번들 Grafana Helm 차트는 GitLab Helm 차트의 Prometheus 지표에 연결된 Grafana UI를 제공하기 위해 켤 수 있는 선택적 서비스입니다.

GitLab Helm 차트가 현재 제공하는 Grafana 버전은 더 이상 지원되는 Grafana 버전이 아닙니다. 번들 Grafana를 사용 중이라면 Grafana Labs의 최신 차트 버전으로 전환하거나 신뢰할 수 있는 공급자의 Grafana Operator로 전환해야 합니다.

새 Grafana 인스턴스에서 GitLab 이 제공하는 Prometheus를 데이터 소스로 구성하고 Grafana를 GitLab UI에 연결할 수 있습니다.

CAS OmniAuth 공급자#

GitLab에 CAS OmniAuth 공급자를 제공하는 omniauth-cas3 gem은 다음 메이저 릴리스인 GitLab 16.0에서 제거됩니다. 이 gem은 사용률이 매우 낮고 업스트림 유지 관리가 부족하여 GitLab 이 OmniAuth 2.0으로 업그레이드하는 데 걸림돌이 되고 있습니다.

HashiCorp Vault에서 시크릿이 반환되지 않으면 CI/CD 작업이 실패함#

네이티브 HashiCorp Vault 통합을 사용할 때, Vault에서 시크릿이 반환되지 않으면 CI/CD 작업이 실패합니다. GitLab 16.0 이전에 설정이 항상 시크릿을 반환하도록 하거나, 이 변경 사항을 처리하도록 파이프라인을 업데이트해야 합니다.

다중 모듈 Android 프로젝트에서 MobSF 기반 SAST 분석기 동작 변경#

업데이트: 이전에는 MobSF 기반 GitLab SAST 분석기가 다중 모듈 Android 프로젝트를 스캔하는 방식을 변경하겠다고 발표했습니다. 이 변경 사항은 취소되었으며, 별도의 조치가 필요하지 않습니다.

스캔할 단일 모듈을 변경하는 대신, 다중 모듈 지원을 개선했습니다.

/approvals API 엔드포인트로 머지 리퀘스트 승인 변경#

머지 리퀘스트에 필요한 승인 수를 변경하려면, GitLab 14.0에서 지원이 종료된 /approvals API 엔드포인트를 더 이상 사용하지 않아야 합니다.

대신 /approval_rules 엔드포인트를 사용해 머지 리퀘스트의 승인 규칙을 생성하거나 업데이트합니다.

Conan 프로젝트 레벨 검색 엔드포인트가 프로젝트별 결과를 반환함#

GitLab Conan 리포지터리는 프로젝트 레벨 또는 인스턴스 레벨 엔드포인트로 사용할 수 있습니다. 각 레벨은 Conan 검색 명령을 지원합니다. 그러나 프로젝트 레벨 검색 엔드포인트는 대상 프로젝트 밖의 패키지도 함께 반환하고 있습니다.

이 의도하지 않은 동작은 GitLab 15.8에서 지원이 종료되고 GitLab 16.0에서 제거됩니다. 프로젝트 레벨 검색 엔드포인트는 대상 프로젝트의 패키지만 반환합니다.

GitLab Runner Helm 차트의 설정 필드#

GitLab 13.6부터 사용자는 GitLab Runner Helm 차트에서 러너 설정을 자유롭게 지정할 수 있습니다. 이 기능을 구현하면서 GitLab Runner에 특화된 GitLab Helm 차트 설정값의 지원을 종료했습니다. 지원이 종료된 값은 GitLab 16.0에서 제거됩니다.

환경 변수를 사용한 Redis 설정 파일 경로 지정 지원 종료#

더 이상 GITLAB_REDIS_CACHE_CONFIG_FILE 이나 GITLAB_REDIS_QUEUES_CONFIG_FILE 같은 환경 변수를 사용해 Redis 설정 파일 위치를 지정할 수 없습니다. 기본 설정 파일 위치를 대신 사용합니다. 예를 들어 config/redis.cache.yml 이나 config/redis.queues.yml 입니다.

컨테이너 레지스트리 pull-through 캐시#

컨테이너 레지스트리 pull-through 캐시는 GitLab 15.8에서 지원이 종료되고 GitLab 16.0에서 제거됩니다. pull-through 캐시는 업스트림 Docker Distribution 프로젝트의 일부입니다. 그러나 Docker Hub의 컨테이너 이미지를 프록시하고 캐시할 수 있는 GitLab Dependency Proxy로 대체하기 위해 pull-through 캐시를 제거합니다. pull-through 캐시를 제거하면 기능 손실 없이 업스트림 클라이언트 코드도 함께 제거할 수 있습니다.

Docker를 참조하는 컨테이너 스캐닝 변수#

변수 이름이 DOCKER_로 시작하는 모든 컨테이너 스캐닝 변수는 지원이 종료됩니다. 여기에는 DOCKER_IMAGE, DOCKER_PASSWORD, DOCKER_USER, DOCKERFILE_PATH 변수가 포함됩니다. 이 변수에 대한 지원은 GitLab 16.0 릴리스에서 제거됩니다. 지원이 종료된 이름 대신 새 변수 이름인 CS_IMAGE, CS_REGISTRY_PASSWORD, CS_REGISTRY_USER, CS_DOCKERFILE_PATH를 사용합니다.

GitLab for Jira Cloud 앱의 쿠키 인증#

GitLab for Jira Cloud 앱의 쿠키 인증은 이제 지원이 종료되고 OAuth 인증으로 대체됩니다. GitLab Self-Managed에서는 GitLab for Jira Cloud 앱을 계속 사용하려면 OAuth 인증을 설정해야 합니다. OAuth 없이는 연결된 네임스페이스를 관리할 수 없습니다.

DAST 템플릿을 사용한 DAST API 스캔 지원 종료#

DAST API 스캔을 위한 새 DAST API 분석기와 DAST-API.gitlab-ci.yml 템플릿으로 전환하면서, DAST 분석기로 API를 스캔하는 기능은 제거됩니다. API 스캔에 DAST.gitlab-ci.yml 또는 DAST-latest.gitlab-ci.yml 템플릿을 사용하는 방식은 GitLab 15.7부터 지원이 종료되었으며 GitLab 16.0에서는 더 이상 동작하지 않습니다. DAST-API.gitlab-ci.yml 템플릿을 사용하고, 설정 관련 세부 정보는 DAST API 분석기 문서를 참고합니다.

DAST API variables#

GitLab 15.6에서 새로운 DAST API 분석기로 전환되면서 기존 DAST API 변수 두 개가 폐기됩니다. DAST_API_HOST_OVERRIDE 변수와 DAST_API_SPECIFICATION 변수는 더 이상 DAST API 스캔에 사용되지 않습니다.

DAST_API_HOST_OVERRIDE는 폐기되었으며, 대신 DAST_API_TARGET_URL을 사용해 OpenAPI 스펙의 호스트를 자동으로 재정의합니다.

DAST_API_SPECIFICATION은 폐기되었으며 DAST_API_OPENAPI로 대체됩니다. OpenAPI 스펙을 계속 테스트 기준으로 사용하려면 DAST_API_SPECIFICATION 변수를 DAST_API_OPENAPI 변수로 교체해야 합니다. 값은 그대로 유지할 수 있지만 변수명은 반드시 교체해야 합니다.

이 두 변수는 GitLab 16.0에서 제거됩니다.

DAST report variables deprecation#

GitLab 15.7에서 브라우저 기반 DAST 분석기가 정식 출시(GA)되면서, 향후 이를 기본 DAST 분석기로 전환하는 작업을 진행하고 있습니다. 이를 준비하는 과정에서 다음 기존 DAST 변수가 폐기되며 GitLab 16.0에서 제거될 예정입니다: DAST_HTML_REPORT, DAST_XML_REPORT, DAST_MARKDOWN_REPORT. 이 리포트들은 기존 DAST 분석기에 의존하며, 새 브라우저 기반 분석기에는 구현할 계획이 없습니다. GitLab 16.0부터 이 리포트 아티팩트는 더 이상 생성되지 않습니다.

이 세 변수는 GitLab 16.0에서 제거됩니다.

Dependency scanning support for Java 13, 14, 15, and 16#

GitLab은 Java 13, 14, 15, 16 버전에 대한 의존성 스캐닝 지원을 폐기했으며, 다가오는 GitLab 16.0 릴리스에서 해당 지원을 제거할 계획입니다. 이는 해당 버전에 대한 Oracle Premier 및 Extended Support가 종료됨에 따라 Oracle 지원 정책과 일치합니다. 이를 통해 GitLab은 향후 의존성 스캐닝의 Java 지원을 LTS 버전에 집중할 수 있습니다.

Deployment API returns error when updated_at and updated_at are not used together#

이제 Deployment API는 updated_at 필터링과 updated_at 정렬을 함께 사용하지 않으면 오류를 반환합니다. 일부 사용자는 updated_at 정렬 없이 updated_at 필터링만으로 "최신" 배포를 가져오고 있었는데, 이는 잘못된 결과를 낳을 수 있습니다. 두 가지를 함께 사용하거나, finished_at 필터링과 finished_at 정렬로 마이그레이션하면 일관된 방식으로 "최신 배포"를 가져올 수 있습니다.

Deprecate legacy Gitaly configuration methods#

Gitaly 설정에 환경 변수 GIT_CONFIG_SYSTEM과 GIT_CONFIG_GLOBAL을 사용하는 방식은 폐기되었습니다. 이 변수들은 표준 config.toml Gitaly 설정으로 대체됩니다.

GIT_CONFIG_SYSTEM과 GIT_CONFIG_GLOBAL로 Gitaly를 설정하는 GitLab 인스턴스는 다음을 사용하는 설정 방식으로 전환해야 합니다 config.toml.

Deprecated Consul http metrics#

Linux 패키지에 포함된 Consul은 GitLab 16.0부터 기존에 폐기된 Consul 메트릭을 더 이상 제공하지 않습니다.

GitLab 14.0에서 Consul이 1.9.6으로 업데이트되면서 consul.http 경로에 있던 일부 텔레메트리 메트릭이 폐기되었습니다. GitLab 16.0에서는 consul.http 경로가 제거됩니다.

Consul 메트릭을 사용하는 모니터링이 있다면 consul.http 대신 consul.api.http를 사용하도록 업데이트합니다. 자세한 내용은 Consul 1.9.0 폐기 노트를 참고합니다.

Deprecation and planned removal for CI_PRE_CLONE_SCRIPT variable on GitLab.com#

GitLab.com Runner에서 지원하는 CI_PRE_CLONE_SCRIPT 변수는 GitLab 15.9부터 폐기되었으며 16.0에서 제거됩니다. CI_PRE_CLONE_SCRIPT 변수를 사용하면 러너가 Git init과 get fetch를 실행하기 전에 CI/CD job에서 명령을 실행할 수 있습니다. 이 기능의 동작 방식에 대한 자세한 내용은 사전 클론 스크립트를 참고합니다. 대안으로 pre_get_sources_script를 사용할 수 있습니다.

Developer role providing the ability to import projects to a group#

그룹에 대해 Developer 권한을 가진 사용자가 해당 그룹에 프로젝트를 임포트할 수 있는 기능은 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다. GitLab 16.0부터는 그룹에 대해 Maintainer 또는 Owner 권한을 가진 사용자만 해당 그룹에 프로젝트를 임포트할 수 있습니다.

Development dependencies reported for PHP and Python#

GitLab 16.0부터 GitLab 의존성 스캐닝 분석기는 Python/pipenv와 PHP/composer 프로젝트 모두에서 개발 의존성을 보고하기 시작합니다. 개발 의존성이 보고되지 않기를 원하는 사용자는 CI/CD 파일에 DS_INCLUDE_DEV_DEPENDENCIES: false를 설정해야 합니다.

Embedding Grafana panels in Markdown is deprecated#

GitLab Flavored Markdown에 Grafana 패널을 추가하는 기능은 15.9에서 폐기되었으며 16.0에서 제거됩니다. 이 기능은 GitLab Observability UI로 차트를 임베드하는 기능으로 대체할 예정입니다.

Enforced validation of CI/CD parameter character lengths#

CI/CD job 이름은 255자로 엄격히 제한되어 있지만, 다른 CI/CD 파라미터는 아직 이 제한을 강제하는 유효성 검사가 없습니다.

GitLab 16.0에서는 다음 항목도 255자로 엄격히 제한하는 유효성 검사가 추가됩니다.

  • stage 키워드
  • 파이프라인의 Git 브랜치 또는 태그 이름인 ref
  • 외부 CI/CD 통합에서 사용하는 description 및 target_url 파라미터

GitLab Self-Managed 사용자는 255자를 초과하는 파라미터를 사용하지 않도록 파이프라인을 업데이트해야 합니다. GitLab.com 사용자는 데이터베이스에서 이미 제한되어 있으므로 별도로 변경할 필요가 없습니다.

Environment search query requires at least three characters#

GitLab 16.0부터 API로 환경을 검색할 때는 최소 세 글자를 사용해야 합니다. 이 변경은 검색 작업의 확장성을 보장하기 위한 것입니다.

GraphQL API에서 ReleaseAssetLink 타입의 external 필드는 릴리스 링크가 GitLab 인스턴스 내부 링크인지 외부 링크인지를 나타내는 데 사용되었습니다. GitLab 15.9부터는 모든 릴리스 링크를 외부 링크로 취급하므로, 이 필드는 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 워크플로에 지장이 없도록 external 필드 사용을 중단합니다. 이 필드는 제거되며 대체되지 않습니다.

Releases API와 Release Links API에서 external 필드는 릴리스 링크가 GitLab 인스턴스 내부 링크인지 외부 링크인지를 나타내는 데 사용되었습니다. GitLab 15.9부터는 모든 릴리스 링크를 외부 링크로 취급하므로, 이 필드는 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 워크플로에 지장이 없도록 external 필드 사용을 중단합니다. 이 필드는 제거되며 대체되지 않습니다.

Geo: Project repository redownload is deprecated#

  • GitLab 15.11에서 발표
  • GitLab 16.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보조 Geo 사이트에서 프로젝트 리포지터리를 "재다운로드"하는 버튼은 폐기되었습니다. 재다운로드 로직에는 발생 시 해결하기 어려운 데이터 일관성 문제가 내재되어 있습니다. 이 버튼은 GitLab 16.0에서 제거됩니다.

GitLab administrators must have permission to modify protected branches or tags#

GitLab 관리자는 명시적으로 권한을 부여받지 않는 한 보호된 브랜치나 태그에 대한 작업을 더 이상 수행할 수 없습니다. 이러한 작업에는 보호된 브랜치에 대한 푸시와 머지, 브랜치 보호 해제, 보호된 태그 생성이 포함됩니다.

GitLab self-monitoring project#

GitLab 자체 모니터링은 인스턴스 관리자에게 인스턴스 상태를 모니터링할 수 있는 도구를 제공합니다. 이 기능은 GitLab 14.9에서 폐기되었으며 16.0에서 제거될 예정입니다.

GitLab.com importer#

  • GitLab 15.8에서 발표
  • GitLab 16.0에서 제거 예정

GitLab.com 임포터는 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다.

GitLab.com 임포터는 UI를 통해 GitLab.com의 프로젝트를 GitLab Self-Managed 인스턴스로 임포트하기 위해 2015년에 도입되었습니다. 이 기능은 GitLab Self-Managed에서만 사용할 수 있습니다. 직접 전송을 통한 GitLab 그룹 및 프로젝트 마이그레이션이 GitLab.com 임포터를 대체하며 더 통합된 임포트 기능을 제공합니다.

개요는 마이그레이션된 그룹 항목과 마이그레이션된 프로젝트 항목을 참고합니다.

GraphQL API Runner status will not return paused#

GitLab Runner GraphQL API 엔드포인트는 GitLab 16.0에서 상태로 paused 또는 active를 반환하지 않습니다. 향후 REST API v5에서도 GitLab Runner 엔드포인트는 paused 또는 active를 반환하지 않습니다.

러너의 상태는 다음과 같은 러너 연결 상태와만 관련됩니다. online, offline, not_connected. paused 또는 active 상태는 더 이상 표시되지 않습니다.

러너가 paused 상태인지 확인하려면 API 사용자는 대신 불리언 속성 paused가 true인지 확인해야 합니다. 러너가 active 상태인지 확인하려면 paused가 false인지 확인합니다.

Jira DVCS connector for Jira Cloud#

Jira Cloud용 Jira DVCS 커넥터는 폐기되었으며 GitLab 16.0에서 제거됩니다. Jira Cloud와 함께 Jira DVCS 커넥터를 사용 중이라면 GitLab for Jira Cloud 앱으로 마이그레이션합니다.

Jira DVCS 커넥터는 Jira 8.13 이하 버전에서도 폐기됩니다. Jira 8.14 이상에서는 Jira Server 또는 Jira Data Center에서만 Jira DVCS 커넥터를 사용할 수 있습니다.

KAS Metrics Port in GitLab Helm Chart#

gitlab.kas.metrics.port는 폐기되었으며, GitLab Helm Chart의 새로운 gitlab.kas.observability.port 설정 필드로 대체됩니다. 이 포트는 메트릭 용도 이외에도 훨씬 더 많이 사용되므로, 설정상의 혼동을 피하기 위해 이 변경이 이루어졌습니다.

Legacy Gitaly configuration method#

Omnibus GitLab 내 Gitaly 설정이 업데이트되어, Gitaly 관련 설정 키가 모두 표준 Gitaly 설정과 일치하는 단일 설정 구조 안에 있게 되었습니다. 이에 따라 이전 설정 구조는 폐기됩니다.

단일 설정 구조는 GitLab 15.10부터 사용할 수 있으며, 이전 방식과의 호환성은 유지됩니다. 제거된 이후에는 Gitaly를 반드시 단일 설정 구조로 설정해야 합니다. 가능한 한 빨리 Gitaly 설정을 업데이트합니다.

이 변경은 Omnibus GitLab과 소스 설치 간의 일관성을 높이며, 두 방식 모두에 대해 더 나은 문서와 도구를 제공할 수 있게 합니다.

가능한 한 빨리 다음 자료를 참고해 새 설정 구조로 업데이트합니다. 업그레이드 안내.

Legacy Praefect configuration method#

이전에는 Praefect 설정 키가 설정 파일 전체에 흩어져 있었습니다. 이제는 Praefect 설정과 일치하는 단일 설정 구조 안에 모여 있으므로 기존 설정 방식은 폐기됩니다.

단일 설정 구조는 GitLab 15.9부터 사용할 수 있으며, 이전 방식과의 호환성은 유지됩니다. 제거된 이후에는 Praefect를 반드시 단일 설정 구조로 설정해야 합니다. 가능한 한 빨리 다음 자료를 참고해 Praefect 설정을 업데이트합니다. 업그레이드 안내.

이 변경으로 Omnibus GitLab의 Praefect 설정이 Praefect 자체의 설정 구조와 일치하게 됩니다. 이전에는 계층 구조와 설정 키가 서로 일치하지 않았습니다. 이 변경은 Omnibus GitLab과 소스 설치 간의 일관성을 높이며, 두 방식 모두에 대해 더 나은 문서와 도구를 제공할 수 있게 합니다.

Legacy URLs replaced or removed#

GitLab 16.0에서는 GitLab 애플리케이션에서 기존 URL이 제거됩니다.

GitLab 9.0에서 하위 그룹이 도입되면서, 그룹 경로의 끝을 나타내기 위해 URL에 /-/ 구분자가 추가되었습니다. 이제 모든 GitLab URL은 프로젝트, 그룹, 인스턴스 수준 기능에 이 구분자를 사용합니다.

/-/ 구분자를 사용하지 않는 URL은 GitLab 16.0에서 제거될 예정입니다. 이러한 URL의 전체 목록과 대체 URL은 이슈 28848을 참고합니다.

기존 URL을 참조하는 스크립트나 북마크는 업데이트합니다. 이 변경은 GitLab API에는 영향을 주지 않습니다.

License-Check and the Policies tab on the license compliance page#

License-Check 기능은 현재 폐기되었으며 GitLab 16.0에서 제거될 예정입니다. 또한 라이선스 컴플라이언스 페이지의 policies 탭과 License-Check 기능과 관련된 모든 API도 폐기되어 GitLab 16.0에서 제거될 예정입니다. 감지된 라이선스를 기준으로 승인을 계속 강제하려는 사용자는 대신 새로운 라이선스 승인 정책을 생성하는 것이 좋습니다.

Limit personal access token and deploy token's access with external authorization#

외부 인가가 활성화된 경우, 개인 액세스 토큰(PAT)과 배포 토큰은 더 이상 컨테이너 레지스트리나 패키지 레지스트리에 접근할 수 없어야 합니다. 이 심층 방어 보안 조치는 16.0에 배포됩니다. PAT와 배포 토큰으로 이러한 레지스트리에 접근하는 사용자에게는 이 조치로 인해 토큰 사용이 중단됩니다. 컨테이너 레지스트리나 패키지 레지스트리에 토큰을 사용하려면 외부 인가를 비활성화합니다.

Major bundled Helm Chart updates for the GitLab Helm Chart#

GitLab 16.0에 맞춰 GitLab Helm Chart는 메이저 버전 7.0을 릴리스합니다. 다음과 같은 주요 번들 차트 업데이트가 포함됩니다.

GitLab Helm Chart 7.0의 전체 업그레이드 절차는 업그레이드 문서에서 확인할 수 있습니다.

Managed Licenses API#

Managed Licenses API는 현재 폐기되었으며 GitLab 16.0에서 제거될 예정입니다.

Maximum number of active pipelines per project limit (ci_active_pipelines)#

  • GitLab 15.3에서 발표
  • GitLab 16.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

프로젝트당 활성 파이프라인 최대 개수 제한은 기본적으로 활성화된 적이 없으며 GitLab 16.0에서 제거됩니다. 이 제한은 Rails 콘솔의 ci_active_pipelines 항목에서도 설정할 수 있습니다. 대신 유사한 보호 기능을 제공하는 다른 권장 속도 제한을 사용합니다.

Monitor performance metrics through Prometheus#

GitLab은 Prometheus 인스턴스에 저장된 데이터를 표시해 사용자가 성능 메트릭을 확인할 수 있게 합니다. GitLab은 또한 이러한 메트릭의 시각화를 대시보드에 표시합니다. 사용자는 사전에 설정된 외부 Prometheus 인스턴스에 연결하거나, Prometheus를 GitLab Managed App으로 설정할 수 있습니다. 하지만 Kubernetes 클러스터와의 인증서 기반 통합이 GitLab에서 폐기됨에 따라, Prometheus에 의존하는 GitLab의 메트릭 기능도 폐기됩니다. 여기에는 대시보드의 메트릭 시각화도 포함됩니다. GitLab은 Opstrace를 기반으로 한 단일한 사용자 경험을 개발하고 있습니다. Opstrace 통합 작업을 계속 확인하려면 관련 이슈를 참고합니다.

Non-expiring access tokens#

기존 프로젝트 액세스 토큰에 만료일이 자동으로 적용되는지 여부는 사용 중인 GitLab 제품과 GitLab 16.0 이상으로 업그레이드한 시점에 따라 달라집니다.

  • GitLab.com에서는 16.0 마일스톤 기간 중 만료일이 없는 기존 프로젝트 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다.
  • GitLab Self-Managed에서 GitLab 15.11 이하 버전에서 GitLab 16.0 이상으로 업그레이드한 경우:
    • 2024년 7월 23일 이전에는 만료일이 없는 기존 프로젝트 액세스 토큰에 현재 날짜로부터 365일 후의 만료일이 자동으로 부여되었습니다. 이 변경은 호환성이 깨지는 변경입니다.
    • 2024년 7월 24일 이후에는 만료일이 없는 기존 프로젝트 액세스 토큰에 만료일이 설정되지 않았습니다.

GitLab Self-Managed에서 다음 GitLab 버전 중 하나를 새로 설치하는 경우, 기존 프로젝트 액세스 토큰에는 만료일이 자동으로 적용되지 않습니다.

  • 16.0.9
  • 16.1.7
  • 16.2.10
  • 16.3.8
  • 16.4.6
  • 16.5.9
  • 16.6.9
  • 16.7.9
  • 16.8.9
  • 16.9.10
  • 16.10.9
  • 16.11.7
  • 17.0.5
  • 17.1.3
  • 17.2.1

만료일이 없는 액세스 토큰은 무기한 유효하며, 이는 액세스 토큰이 유출될 경우 보안 위험이 됩니다. 만료일이 있는 액세스 토큰이 더 안전하므로, GitLab 15.3부터 기본 만료일을 자동으로 설정합니다.

GitLab 16.0에서는 만료일이 없는 개인, 프로젝트, 또는 그룹 액세스 토큰에 자동으로 1년의 만료일이 설정됩니다.

기본값이 적용되기 전에 회사의 보안 정책에 맞춰 액세스 토큰에 만료일을 설정하는 것을 권장합니다.

  • GitLab.com에서는 16.0 마일스톤 기간 중
  • GitLab Self-Managed에서는 16.0으로 업그레이드될 때

Non-standard default Redis ports are deprecated#

Redis 설정 파일이 없는 상태로 GitLab이 시작되면 GitLab은 localhost:6380, localhost:6381, localhost:6382 세 개의 Redis 서버에 연결할 수 있다고 가정합니다. 이 동작을 변경하여 GitLab이 localhost:6379에 있는 하나의 Redis 서버만 있다고 가정하도록 합니다.

세 개의 서버를 계속 사용하려는 관리자는 config/redis.cache.yml, config/redis.queues.yml, config/redis.shared_state.yml 파일을 수정해 Redis URL을 설정해야 합니다.

Option to delete projects immediately is deprecated from deletion protection settings#

Admin 영역의 그룹 및 프로젝트 삭제 보호 설정에는 그룹과 프로젝트를 즉시 삭제하는 옵션이 있었습니다. 16.0부터는 이 옵션을 더 이상 사용할 수 없으며, 그룹과 프로젝트를 지연 삭제하는 방식이 기본 동작이 됩니다.

이 옵션은 더 이상 그룹 설정으로 표시되지 않습니다. GitLab Self-Managed 사용자는 여전히 삭제 지연 기간을 정의하는 옵션을 사용할 수 있으며, GitLab.com 사용자는 조정할 수 없는 기본 보존 기간인 7일이 적용됩니다. 사용자는 프로젝트 설정에서 프로젝트를, 그룹 설정에서 그룹을 여전히 즉시 삭제할 수 있습니다.

그룹과 프로젝트를 기본적으로 즉시 삭제하는 옵션은 사용자가 실수로 이 작업을 수행해 그룹과 프로젝트를 영구적으로 잃는 것을 방지하기 위해 폐기되었습니다.

PostgreSQL 12 deprecated#

PostgreSQL 12 지원은 GitLab 16.0에서 제거될 예정입니다. GitLab 16.0에서는 PostgreSQL 13이 최소 요구 PostgreSQL 버전이 됩니다.

PostgreSQL 12는 GitLab 15 릴리스 주기 전체에서 지원됩니다. GitLab 16.0 이전에 업그레이드하려는 인스턴스를 위해 PostgreSQL 13도 지원됩니다.

PostgreSQL 13에 대한 지원은 GitLab 15.2에서 Geo에 추가되었습니다.

Projects API field operations_access_level is deprecated#

Projects API의 operations_access_level 필드를 폐기합니다. 이 필드는 특정 기능을 제어하는 필드인 releases_access_level, environments_access_level, feature_flags_access_level, infrastructure_access_level, monitor_access_level로 대체되었습니다.

Rake task for importing bare repositories#

  • GitLab 15.8에서 발표
  • GitLab 16.0에서 제거 예정

bare 리포지터리를 임포트하는 Rake 태스크(gitlab:import:repos)는 GitLab 15.8에서 폐기되었으며 GitLab 16.0에서 제거됩니다.

이 Rake 태스크는 디렉터리 트리 구조의 리포지터리를 GitLab 인스턴스로 임포트합니다. 이 리포지터리는 이전에 GitLab에서 관리되었어야 합니다. 이 Rake 태스크가 동작하려면 특정 디렉터리 구조나 특정 커스텀 Git 설정(gitlab.fullpath)에 의존하기 때문입니다.

이 Rake 태스크로 리포지터리를 임포트하는 데는 제한 사항이 있습니다. 이 Rake 태스크는 다음과 같습니다.

  • 프로젝트와 프로젝트 위키 리포지터리만 인식하며, 디자인, 그룹 위키, 스니펫용 리포지터리는 지원하지 않습니다.
  • 지원되지 않음에도 불구하고 해시되지 않은 스토리지 프로젝트의 임포트를 허용합니다.
  • Git 설정 gitlab.fullpath가 설정되어 있는 것에 의존합니다. 에픽 8953에서는 이 설정에 대한 지원 제거를 제안합니다.

gitlab:import:repos Rake 태스크의 대안은 다음과 같습니다.

Redis 5 deprecated#

  • GitLab 15.3에서 발표
  • GitLab 15.6에서 지원 종료
  • GitLab 16.0에서 제거 예정(호환성이 깨지는 변경)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 13.9의 Omnibus GitLab 패키지와 GitLab Helm chart 4.9에서 Redis 버전이 Redis 6으로 업데이트되었습니다. Redis 5는 2022년 4월 수명 종료(EOL)에 도달했으며 GitLab 15.6부터 더 이상 지원되지 않습니다. 자체 Redis 5.0 인스턴스를 사용 중이라면 GitLab 16.0 이상으로 업그레이드하기 전에 Redis 6.0 이상으로 업그레이드해야 합니다.

Remove job_age parameter from POST /jobs/request Runner endpoint#

GitLab Runner와의 통신에 사용되는 POST /jobs/request API 엔드포인트에서 반환되는 job_age 파라미터는 어떤 GitLab이나 Runner 기능에서도 사용된 적이 없습니다. 이 파라미터는 GitLab 16.0에서 제거됩니다.

이 엔드포인트가 이 파라미터를 반환하는 것에 의존해 자체 러너를 개발한 경우, 이는 호환성이 깨지는 변경일 수 있습니다. GitLab.com의 퍼블릭 공유 러너를 포함해 공식 릴리스된 GitLab Runner 버전을 사용하는 경우에는 호환성이 깨지는 변경이 아닙니다.

SAST analyzer coverage changing in GitLab 16.0#

GitLab SAST는 다양한 분석기를 사용해 코드에서 취약점을 스캔합니다.

GitLab SAST에서 기본으로 사용되는 지원 분석기의 개수를 줄이고 있습니다. 이는 여러 프로그래밍 언어에 걸쳐 더 빠르고 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환입니다.

GitLab 16.0부터 GitLab SAST CI/CD 템플릿은 .NET용 Security Code Scan 기반 분석기를 더 이상 사용하지 않으며, 이 분석기는 지원 종료(End of Support) 상태가 됩니다. 이 분석기는 SAST CI/CD 템플릿에서 제거되며, Semgrep 기반 분석기의 GitLab 지원 C# 탐지 규칙으로 대체됩니다.

지금 이 순간부터 이 분석기는 보안 업데이트만 제공받으며, 그 밖의 일반적인 개선이나 업데이트는 보장되지 않습니다. 이 분석기가 GitLab 16.0에서 지원 종료에 도달한 이후에는 추가 업데이트가 제공되지 않습니다. 다만 이 분석기용으로 이전에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 job으로 이 분석기를 실행하는 기능을 제거하지는 않습니다.

폐기된 분석기에서 발견한 취약점을 이미 기각(dismiss)한 경우, 대체 분석기는 이전의 기각 상태를 최대한 유지하려고 시도합니다. 시스템 동작은 다음에 따라 달라집니다.

  • 이전에 Semgrep 기반 분석기의 실행을 제외했는지 여부
  • 프로젝트의 취약점 리포트에 표시된 취약점을 처음 발견한 분석기가 무엇인지

자세한 내용은 취약점 변환(translation) 문서를 참고합니다.

영향을 받는 분석기에 커스터마이징을 적용했거나, 현재 파이프라인에서 Semgrep 기반 분석기를 비활성화한 상태라면 이 변경 사항에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

업데이트: 이 변경 사항의 범위를 축소했습니다. GitLab 16.0에서는 다음 변경을 더 이상 적용하지 않습니다.

  1. PHPCS Security Audit 기반 분석기 지원을 제거하고 Semgrep 기반 분석기의 GitLab 관리 탐지 규칙으로 대체
  2. SpotBugs 기반 분석기의 대상 범위에서 Scala를 제거하고 Semgrep 기반 분석기의 GitLab 관리 탐지 규칙으로 대체

PHPCS Security Audit 기반 분석기를 대체하는 작업은 이슈 364060에서, Scala 스캔을 Semgrep 기반 분석기로 마이그레이션하는 작업은 이슈 362958에서 추적합니다.

Secure 분석기 메이저 버전 업데이트#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Secure 스테이지는 GitLab 16.0 릴리스와 함께 분석기의 메이저 버전을 올릴 예정입니다. 이 업데이트를 통해 다음 기준으로 분석기를 명확히 구분할 수 있습니다.

  • 2023년 5월 22일 이전에 릴리스된 것
  • 2023년 5월 22일 이후에 릴리스된 것

기본 제공 템플릿을 사용하지 않거나 분석기 버전을 고정(pin)해 사용 중이라면, CI/CD job 정의에서 고정된 버전을 제거하거나 최신 메이저 버전으로 업데이트해야 합니다. GitLab 13.0~15.10 사용자는 GitLab 16.0이 릴리스되기 전까지는 평소와 동일하게 분석기 업데이트를 계속 받습니다. GitLab 16.0 릴리스 이후에는 새로 수정된 버그와 새 기능이 분석기의 새 메이저 버전에서만 릴리스됩니다. 유지 관리 정책에 따라 폐기된 버전에는 버그와 기능을 백포트하지 않습니다. 필요한 경우 보안 패치는 최신 3개 마이너 릴리스 내에서 백포트됩니다. 구체적으로 다음 항목이 폐기되며 GitLab 16.0 릴리스 이후 더 이상 업데이트되지 않습니다.

  • API 퍼징: 버전 2
  • 컨테이너 스캐닝: 버전 5
  • 커버리지 기반 퍼즈 테스트: 버전 3
  • 의존성 스캐닝: 버전 3
  • Dynamic Application Security Testing(DAST): 버전 3
  • DAST API: 버전 2
  • IaC 스캐닝: 버전 3
  • 라이선스 스캐닝: 버전 4
  • 시크릿 탐지: 버전 4
  • Static Application Security Testing(SAST): 모든 분석기의 버전 3
    • brakeman: 버전 3
    • flawfinder: 버전 3
    • kubesec: 버전 3
    • mobsf: 버전 3
    • nodejs-scan: 버전 3
    • phpcs-security-audit: 버전 3
    • pmd-apex: 버전 3
    • security-code-scan: 버전 3
    • semgrep: 버전 3
    • sobelow: 버전 3
    • spotbugs: 버전 3

Secure 스캐닝 CI/CD 템플릿이 새로운 job rules를 사용합니다#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보안 스캐닝용 GitLab 관리 CI/CD 템플릿이 GitLab 16.0 릴리스에서 업데이트됩니다. 이번 업데이트에는 CI/CD 템플릿의 Latest 버전에서 이미 릴리스된 개선 사항이 포함됩니다. 이 변경 사항은 커스터마이즈된 CI/CD 파이프라인 구성을 손상시킬 가능성이 있어 Latest 템플릿 버전에서 먼저 릴리스했습니다.

업데이트된 모든 템플릿에서 SAST_DISABLED, DEPENDENCY_SCANNING_DISABLED 같은 변수의 정의를 변경해, 값이 "true"인 경우에만 스캐닝을 비활성화하도록 합니다. 이전에는 값이 "false"여도 스캐닝이 비활성화되었습니다.

다음 템플릿이 업데이트됩니다.

위에 나열된 템플릿 중 하나를 사용하면서 _DISABLED 변수에 "true"가 아닌 값을 설정한 경우, 16.0 릴리스 전에 파이프라인을 테스트할 것을 권장합니다.

업데이트: 이전에는 영향을 받는 템플릿의 rules를 업데이트해 기본적으로 머지 리퀘스트 파이프라인에서 실행되도록 한다고 발표했습니다. 하지만 폐기 이슈에서 논의된 호환성 문제로 인해, GitLab 16.0에서는 이 변경을 더 이상 적용하지 않습니다. 위에서 설명한 _DISABLED 변수 관련 변경 사항은 그대로 릴리스합니다.

보안 리포트 스키마 버전 14.x.x#

  • GitLab 15.3에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

버전 14.x.x 보안 리포트 스키마는 폐기되었습니다.

GitLab 15.8부터 스키마 버전 14.x.x를 사용하는 보안 리포트 스캐너 연동은 파이프라인의 Security 탭에 폐기 경고를 표시합니다.

GitLab 16.0부터 이 기능이 제거됩니다. 스키마 버전 14.x.x를 사용하는 보안 리포트는 파이프라인의 Security 탭에서 오류를 발생시킵니다.

자세한 내용은 보안 리포트 검증을 참고합니다.

Kubernetes 용 GitLab 에이전트 설정의 Starboard 지시어#

  • GitLab 15.4에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 컨테이너 스캐닝 기능은 더 이상 starboard 설치를 필요로 하지 않습니다. 따라서 Kubernetes 용 GitLab 에이전트 설정 파일의 starboard: 지시어 사용은 이제 폐기되었으며 GitLab 16.0에서 제거될 예정입니다. 설정 파일을 container_scanning: 지시어를 사용하도록 업데이트합니다.

Windows Server 2004 및 20H2 기반 GitLab Runner 이미지 게시 중단#

  • GitLab 16.0에서 발표됨
  • GitLab 16.0에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 16.0부터 Windows Server 2004 및 20H2는 수명 종료(EOL)되었으므로 이를 기반으로 한 GitLab Runner 이미지는 제공되지 않습니다.

Praefect 커스텀 메트릭 엔드포인트 설정 지원#

  • GitLab 15.9에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

prometheus_exclude_database_from_default_metrics 설정 값 사용 지원은 GitLab 15.9에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 이 설정 값은 성능에 부정적인 영향을 주기 때문에 제거합니다. 이 변경으로 인해 다음 메트릭을 /metrics에서 더 이상 사용할 수 없게 됩니다.

  • gitaly_praefect_unavailable_repositories.
  • gitaly_praefect_verification_queue_depth.
  • gitaly_praefect_replication_queue_depth.

이로 인해 메트릭 수집 대상이 /db_metrics도 함께 스크랩하도록 업데이트해야 할 수 있습니다.

Terraform 상태(state) 이름의 마침표(.) 지원으로 기존 상태가 깨질 수 있습니다#

  • GitLab 15.7에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에는 마침표가 포함된 Terraform 상태 이름을 지원하지 않았습니다. 다만 우회 방법을 사용하면 마침표가 포함된 상태 이름을 사용할 수 있었습니다.

GitLab 15.7은 마침표가 포함된 상태 이름을 완전히 지원합니다. 이런 상태 이름을 처리하기 위해 우회 방법을 사용했다면, job이 실패하거나 Terraform을 처음 실행한 것처럼 보일 수 있습니다.

이 문제를 해결하려면 다음과 같이 합니다.

  1. 상태 파일에 대한 참조에서 마침표와 그 뒤에 오는 문자를 제외하도록 변경합니다.
    • 예를 들어 상태 이름이 state.name이라면 모든 참조를 state로 변경합니다.
  2. Terraform 명령을 실행합니다.

마침표를 포함한 전체 상태 이름을 사용하려면 전체 상태 파일로 마이그레이션합니다.

API가 Kubernetes 용 에이전트의 폐기된 토큰을 더 이상 반환하지 않습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

현재 클러스터 에이전트 API의 엔드포인트에 대한 GET 요청은 폐기된 토큰을 반환할 수 있습니다. GitLab 16.0에서는 GET 요청이 폐기된 토큰을 반환하지 않습니다.

이 엔드포인트에 대한 호출을 검토해 폐기된 토큰을 사용하지 않는지 확인합니다.

이 변경 사항은 다음 REST 및 GraphQL API 엔드포인트에 영향을 줍니다.

Phabricator 작업 가져오기 도구가 폐기되었습니다#

Phabricator 작업 가져오기 도구가 폐기됩니다. Phabricator 프로젝트 자체가 2021년 6월 1일부터 더 이상 활발히 유지 관리되지 않고 있습니다. 이 도구를 사용한 가져오기 사례는 관찰되지 않았습니다. GitLab의 관련 열린 이슈에서도 별다른 활동이 없었습니다.

최신(latest) Terraform 템플릿이 현재 stable 템플릿을 덮어씁니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab의 메이저 버전이 나올 때마다 stable Terraform 템플릿을 현재의 latest 템플릿으로 업데이트합니다. 이 변경은 quickstart 및 기본 템플릿에 영향을 줍니다.

새 템플릿에는 기본 rules가 포함되어 있으므로, 이번 업데이트로 Terraform 파이프라인이 깨질 수 있습니다. 예를 들어 Terraform job이 다운스트림 파이프라인으로 트리거되는 경우, GitLab 16.0에서는 해당 rules가 job을 트리거하지 않습니다.

이 변경 사항에 대응하려면 .gitlab-ci.yml 파일의 rules를 조정해야 할 수 있습니다.

머지 리퀘스트의 /draft 퀵 액션 토글 동작#

  • GitLab 15.4에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

퀵 액션을 통해 머지 리퀘스트의 Draft 상태를 토글하는 동작을 더 명확하게 만들기 위해, /draft 퀵 액션의 토글 동작을 폐기하고 제거합니다. GitLab 16.0 릴리스부터 /draft는 머지 리퀘스트를 Draft 상태로 설정하는 용도로만 사용되며, Draft 상태를 해제하려면 새로운 /ready 퀵 액션을 사용합니다.

vulnerabilityFindingDismiss 뮤테이션에서의 id 필드 사용#

  • GitLab 15.3에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

vulnerabilityFindingDismiss GraphQL 뮤테이션을 사용하면 취약점 파인딩(finding)의 상태를 Dismissed로 설정할 수 있습니다. 이전에는 이 뮤테이션이 파인딩을 고유하게 식별하기 위해 id 필드를 사용했습니다. 하지만 이 방식은 파이프라인 Security 탭에서 파인딩을 dismiss하는 데는 동작하지 않았습니다. 따라서 식별자로 id 필드를 사용하는 방식을 없애고 uuid 필드를 사용하도록 변경했습니다. 식별자로 uuid 필드를 사용하면 파이프라인 Security 탭에서도 파인딩을 dismiss할 수 있습니다.

서드파티 컨테이너 레지스트리 사용이 폐기되었습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab을 인증 엔드포인트로 사용하는 서드파티 컨테이너 레지스트리 사용은 GitLab 15.8에서 폐기되었으며, 지원 종료는 GitLab 16.0으로 예정되어 있습니다. 이는 컨테이너 이미지를 찾고 보고 삭제하기 위해 외부 레지스트리를 GitLab 사용자 인터페이스에 연결한 GitLab Self-Managed 사용자에게 영향을 줍니다.

GitLab 컨테이너 레지스트리와 서드파티 컨테이너 레지스트리를 함께 지원하는 것은 유지 관리, 코드 품질, 하위 호환성 측면에서 어려움이 있으며 효율성을 유지하는 데도 걸림돌이 됩니다. 이에 따라 앞으로는 이 기능을 지원하지 않습니다.

이 변경 사항은 파이프라인을 사용해 외부 레지스트리에 컨테이너 이미지를 pull·push하는 기능에는 영향을 주지 않습니다.

GitLab.com용 새 GitLab 컨테이너 레지스트리 버전을 릴리스한 이후, 서드파티 컨테이너 레지스트리에서는 제공되지 않는 추가 기능을 구현하기 시작했습니다. 이런 새 기능 덕분에 정리 정책(cleanup policies)과 같은 상당한 성능 개선을 이뤄낼 수 있었습니다. 현재는 새 기능을 제공하는 데 집중하고 있으며, 이 기능 대부분은 GitLab 컨테이너 레지스트리에서만 제공되는 기능을 필요로 합니다. 이번 폐기를 통해 더 견고하고 통합된 레지스트리 경험과 기능 세트를 제공하는 데 집중함으로써, 장기적으로 기능 분산과 사용자 불편을 줄일 수 있습니다.

앞으로도 GitLab 컨테이너 레지스트리에서만 제공되는 새 기능을 개발하고 릴리스하는 데 계속 투자할 예정입니다.

경로 끝에 글로벌 ID를 사용하는 작업 항목(work item) 경로가 폐기되었습니다#

  • GitLab 15.10에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

작업 항목 URL에서 글로벌 ID를 사용하는 방식은 폐기되었습니다. 앞으로는 내부 ID(IID)만 지원됩니다.

GitLab은 여러 작업 항목 유형을 지원하기 때문에, https://gitlab.com/gitlab-org/gitlab/-/work_items/<global_id>와 같은 경로는 예를 들어 작업(task)이나 OKR을 표시할 수 있습니다.

GitLab 15.10에서는 경로 끝에 쿼리 파라미터를 추가해 (iid_path) 해당 경로에서 내부 ID(IID)를 사용할 수 있도록 지원을 추가했습니다. 형식은 다음과 같습니다. https://gitlab.com/gitlab-org/gitlab/-/work_items/<iid>?iid_path=true

GitLab 16.0에서는 작업 항목 경로에 글로벌 ID를 사용하는 기능을 제거합니다. 경로 끝의 숫자는 쿼리 파라미터를 추가하지 않아도 내부 ID(IID)로 간주됩니다. 다음 형식만 지원됩니다. https://gitlab.com/gitlab-org/gitlab/-/work_items/<iid>

CI_BUILD_* 사전 정의 변수#

  • GitLab 14.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

CI_BUILD_*로 시작하는 사전 정의 CI/CD 변수는 GitLab 9.0에서 폐기되었으며 GitLab 16.0에서 제거됩니다. 이 변수를 아직 사용 중이라면, 기능적으로 동일한 대체 사전 정의 변수로 반드시 변경합니다.

제거된 변수 대체 변수
CI_BUILD_BEFORE_SHA CI_COMMIT_BEFORE_SHA
CI_BUILD_ID CI_JOB_ID
CI_BUILD_MANUAL CI_JOB_MANUAL
CI_BUILD_NAME CI_JOB_NAME
CI_BUILD_REF CI_COMMIT_SHA
CI_BUILD_REF_NAME CI_COMMIT_REF_NAME
CI_BUILD_REF_SLUG CI_COMMIT_REF_SLUG
CI_BUILD_REPO CI_REPOSITORY_URL
CI_BUILD_STAGE CI_JOB_STAGE
CI_BUILD_TAG CI_COMMIT_TAG
CI_BUILD_TOKEN CI_JOB_TOKEN
CI_BUILD_TRIGGERED CI_PIPELINE_TRIGGERED

POST ci/lint API 엔드포인트 폐기#

  • GitLab 15.7에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

POST ci/lint API 엔드포인트는 15.7에서 폐기되었으며 16.0에서 제거됩니다. 이 엔드포인트는 CI/CD 설정 옵션 전체 범위를 검증하지 않습니다. 대신 CI/CD 설정을 올바르게 검증하는 POST /projects/:id/ci/lint를 사용합니다.

DORA API의 environment_tier 파라미터#

  • GitLab 15.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

혼란과 중복을 피하기 위해 environment_tier 파라미터는 폐기되고 environment_tiers 파라미터로 대체됩니다. 새로운 environment_tiers 파라미터를 사용하면 DORA API가 여러 티어의 데이터를 동시에 집계해 반환할 수 있습니다. environment_tier 파라미터는 GitLab 16.0에서 제거됩니다.

PipelineSecurityReportFinding GraphQL 타입의 name 필드#

  • GitLab 15.1에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에 PipelineSecurityReportFinding GraphQL 타입이 업데이트되어 새로운 title 필드가 추가되었습니다. 이 필드는 기존 name 필드의 별칭(alias)으로, 상대적으로 명확하지 않은 name 필드를 중복되게 만듭니다. name 필드는 GitLab 16.0에서 PipelineSecurityReportFinding 타입에서 제거됩니다.

started 이터레이션 상태#

  • GitLab 14.8에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이터레이션 GraphQL API 및 이터레이션 REST API의 started 이터레이션 상태는 폐기되었습니다.

GraphQL API 버전은 GitLab 16.0에서 제거됩니다. 이 상태는 마일스톤 등 다른 시간 기반 엔티티의 명명 방식과 맞추기 위해 이미 제공 중인 current 상태로 대체됩니다.

REST API 버전에서는 다음 v5 REST API 버전이 나오기 전까지 started 상태를 계속 지원할 계획입니다.

vulnerabilityFindingDismiss GraphQL 뮤테이션#

  • GitLab 15.5에서 발표됨
  • GitLab 16.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

VulnerabilityFindingDismiss GraphQL 뮤테이션은 폐기되며 GitLab 16.0에서 제거됩니다. 이 뮤테이션은 취약점 파인딩 ID를 사용자가 사용할 수 없었기 때문에(이 필드는 15.3에서 폐기됨) 자주 사용되지 않았습니다. 사용자는 대신 Vulnerability Report에서 취약점을 dismiss할 때는 VulnerabilityDismiss를, CI Pipeline Security 탭의 보안 파인딩에는 SecurityFindingDismiss를 사용해야 합니다.

GitLab 15.11#

openSUSE Leap 15.3 패키지#

  • GitLab 15.8에서 발표됨
  • GitLab 15.11에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

openSUSE Leap 15.3의 배포판 지원 및 보안 업데이트는 2022년 12월에 종료되었습니다.

GitLab 15.7부터 openSUSE Leap 15.4용 패키지 제공을 시작했으며, 15.11 마일스톤에서 openSUSE Leap 15.3용 패키지 제공을 중단합니다.

  • openSUSE Leap 15.3 패키지에서 제공되는 15.4 패키지로 전환합니다.

GitLab 15.10#

OpenStack Swift 및 Rackspace API를 사용한 자동 백업 업로드#

  • GitLab 15.8에서 발표됨
  • GitLab 15.10에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

OpenStack Swift 및 Rackspace API를 사용한 원격 스토리지로의 백업 업로드 지원을 폐기합니다. 이 API에 대한 지원은 더 이상 활발히 유지 관리되지 않고 Ruby 3용으로 업데이트되지 않은 서드파티 라이브러리에 의존하고 있습니다. GitLab은 보안 패치를 최신 상태로 유지하기 위해 Ruby 2의 EOL 전에 Ruby 3으로 전환합니다.

  • OpenStack을 사용 중이라면 Swift 대신 S3 API를 사용하도록 설정을 변경해야 합니다.
  • Rackspace 스토리지를 사용 중이라면 다른 공급자로 전환하거나, 백업 작업이 완료된 후 백업 파일을 수동으로 업로드해야 합니다.

GitLab 15.9#

Web IDE에서 Live Preview를 더 이상 사용할 수 없습니다#

  • GitLab 15.8에서 발표됨
  • GitLab 15.9에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Web IDE의 Live Preview 기능은 정적 웹 애플리케이션의 클라이언트 측 미리보기를 제공하기 위한 것이었습니다. 하지만 복잡한 설정 단계와 좁은 지원 프로젝트 유형 범위로 인해 활용도가 제한적이었습니다. GitLab 15.7에서 Web IDE Beta가 도입되면서 이제 완전한 서버 측 런타임 환경에 연결할 수 있게 되었습니다. 앞으로 Web IDE에 확장 프로그램 설치 지원이 추가되면 Live Preview보다 더 고급 워크플로도 지원할 예정입니다. GitLab 15.9부터 Web IDE에서 Live Preview를 더 이상 사용할 수 없습니다.

omniauth-authentiq gem을 더 이상 사용할 수 없습니다#

  • GitLab 15.9에서 발표됨
  • GitLab 15.9에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

omniauth-authentiq는 GitLab에 포함되어 있던 OmniAuth 전략(strategy) gem입니다. 인증 서비스를 제공하던 회사인 Authentiq가 문을 닫았습니다. 이에 따라 이 gem을 제거합니다.

GitLab 15.7#

.gitlab-ci.yml의 File 타입 변수 확장#

  • GitLab 15.5에서 발표됨
  • GitLab 15.7에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

이전에는 별칭(alias) 파일 변수를 참조하거나 적용하는 변수가 File 타입 변수의 값(예: 파일 내용)으로 확장되었습니다. 이 동작은 일반적인 셸 변수 확장 규칙을 따르지 않아 잘못된 것이었습니다. 사용자는 File 타입 변수를 입력 파라미터로 전달해 echo 명령을 실행함으로써 여기에 저장된 시크릿이나 민감한 정보를 유출할 수 있었습니다.

이번 브레이킹 체인지는 이 문제를 해결하지만, 기존 동작을 우회해 사용하던 사용자 워크플로를 손상시킬 수 있습니다. 이 변경으로 별칭 파일 변수를 참조하거나 적용하는 job 변수 확장은, 파일 내용 같은 값 대신 File 타입 변수의 파일 이름이나 경로로 확장됩니다.

Flowdock 연동#

  • GitLab 15.7에서 발표됨
  • GitLab 15.7에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

2022년 12월 22일부로 Flowdock 연동을 제거합니다. 이는 해당 서비스가 2022년 8월 15일에 종료되었기 때문입니다.

GitLab 15.6#

Git 리포지터리 스토리지용 NFS#

  • GitLab 14.0에서 발표됨
  • GitLab 15.6에서 제거됨

Gitaly Cluster의 정식 출시(GitLab 13.0에서 도입)에 따라, GitLab 14.0에서 Git 리포지터리 스토리지용 NFS에 대한 개발(버그 수정, 성능 개선 등)을 폐기했습니다. 14.x 버전 동안에는 Git 리포지터리용 NFS에 대한 기술 지원을 계속 제공하지만, 2022년 11월 22일에 NFS에 대한 모든 지원을 제거합니다. 이는 원래 2022년 5월 22일로 예정되어 있었지만, Gitaly Cluster가 더 성숙할 수 있는 시간을 확보하기 위해 지원 폐기 일정을 연장하기로 했습니다. 자세한 내용은 공식 지원 정책(Statement of Support)을 참고합니다.

Gitaly Cluster는 고객에게 다음과 같은 상당한 이점을 제공합니다.

현재 Git 리포지터리에 NFS를 사용 중인 고객은 Gitaly Cluster로 마이그레이션 문서를 참고해 마이그레이션을 계획할 것을 권장합니다.

GitLab 15.4#

번들 Grafana 폐기#

  • GitLab 15.3에서 발표됨
  • GitLab 15.4에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 15.4에서 번들 Grafana를 GitLab이 유지 관리하는 Grafana 포크로 교체합니다.

Grafana에서 확인된 CVE가 있었으며, 이 보안 취약점을 완화하려면 자체 포크로 전환해야 합니다. 기존에 번들하던 구버전 Grafana가 더 이상 장기 지원을 받지 않기 때문입니다.

이 변경으로 이전 버전 Grafana와의 호환성 문제가 발생할 것으로 예상되지 않습니다. 번들 버전을 사용하는 경우든 외부 Grafana 인스턴스를 사용하는 경우든 마찬가지입니다.

SAST 분석기 통합 및 CI/CD 템플릿 변경#

  • GitLab 14.8에서 발표됨
  • GitLab 15.4에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab SAST는 코드의 취약점을 스캔하기 위해 다양한 분석기를 사용합니다.

더 나은 일관된 사용자 경험을 제공하기 위한 장기 전략의 일환으로 GitLab SAST에서 사용하는 분석기 수를 줄이고 있습니다. 분석기 구성을 정리하면 더 빠른 반복 작업, 더 나은 결과, 더 높은 효율성(대부분의 경우 CI 러너 사용량 감소 포함)도 가능해집니다.

GitLab 15.4에서 GitLab SAST는 더 이상 다음 분석기를 사용하지 않습니다.

Note

이 변경은 원래 GitLab 15.0으로 계획되었으나 GitLab 15.4로 연기되었습니다.

이 분석기들은 GitLab 관리 SAST CI/CD 템플릿에서 제거되고 Semgrep 기반 분석기로 대체됩니다. 즉시 시행되며, 이후에는 보안 업데이트만 제공되고 일반적인 개선이나 업데이트는 보장되지 않습니다. 이 분석기들이 지원 종료(End of Support)에 도달한 이후에는 더 이상 업데이트가 제공되지 않습니다. 이 분석기들에 대해 이전에 게시된 컨테이너 이미지는 삭제하지 않습니다. 이런 변경이 있을 경우 폐기, 제거 또는 브레이킹 체인지 공지를 통해 안내합니다.

또한 SpotBugs 분석기의 범위에서 Java를 제거하고 Semgrep 기반 분석기로 대체합니다. 이 변경으로 Java 코드 스캔이 더 간단해지며, 더 이상 컴파일이 필요하지 않습니다. 이 변경은 GitLab 관리 SAST CI/CD 템플릿의 자동 언어 감지 부분에 반영됩니다. SpotBugs 기반 분석기는 Groovy, Kotlin, Scala는 계속 지원한다는 점에 유의합니다.

폐기된 분석기 중 하나에서 이미 취약점 파인딩을 dismiss했다면, 대체 분석기는 이전의 dismiss 상태를 최대한 유지하려고 시도합니다. 시스템 동작은 다음 사항에 따라 달라집니다.

  • 이전에 Semgrep 기반 분석기를 실행 대상에서 제외한 적이 있는지 여부
  • 프로젝트의 Vulnerability Report에 표시된 취약점을 처음 발견한 분석기가 무엇인지

자세한 내용은 취약점 변환(Vulnerability translation) 문서를 참고합니다.

영향을 받는 분석기 중 하나라도 커스터마이즈를 적용했거나, 파이프라인에서 현재 Semgrep 분석기를 비활성화하고 있다면 이 변경에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

GitLab 15.3#

Vulnerability Report의 State 기준 정렬#

  • GitLab 15.0에서 발표됨
  • GitLab 15.3에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Vulnerability Report를 State 열 기준으로 정렬하는 기능은 기반 데이터 모델의 리팩터링으로 인해 GitLab 14.10에서 비활성화되어 기능 플래그 뒤에 놓였습니다. 이 값 기준 정렬이 성능을 유지하려면 추가 리팩터링이 필요해 기능 플래그는 기본적으로 꺼진 상태로 유지되었습니다. State 열을 정렬 기준으로 사용하는 빈도가 매우 낮아, 코드베이스를 단순화하고 원치 않는 성능 저하를 방지하기 위해 이 기능 플래그를 대신 제거합니다.

Vulnerability Report의 Tool 기준 정렬#

  • GitLab 15.1에서 발표됨
  • GitLab 15.3에서 제거됨
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Vulnerability Report를 Tool 열(스캔 유형) 기준으로 정렬하는 기능은 기반 데이터 모델의 리팩터링으로 인해 GitLab 14.10에서 비활성화되어 기능 플래그 뒤에 놓였습니다. 이 값 기준 정렬이 성능을 유지하려면 추가 리팩터링이 필요해 기능 플래그는 기본적으로 꺼진 상태로 유지되었습니다. Tool 열을 정렬 기준으로 사용하는 빈도가 매우 낮아, 이 기능 플래그는 대신 GitLab 15.3에서 제거되어 코드베이스를 단순화하고 원치 않는 성능 저하를 방지합니다.

GitLab 15.1#

Debian 9 지원 폐기#

  • GitLab 14.9에서 발표됨
  • GitLab 15.1에서 제거됨

Debian 9 Stretch의 장기 서비스 및 지원(LTSS)은 2022년 7월에 종료됩니다. 따라서 GitLab 패키지에서 Debian 9 배포판을 더 이상 지원하지 않습니다. 사용자는 Debian 10 또는 Debian 11로 업그레이드할 수 있습니다.

GitLab 15.0#

리포지터리 푸시 이벤트용 감사 이벤트#

  • GitLab 14.3에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

리포지터리 이벤트용 감사 이벤트는 이제 폐기되었으며 GitLab 15.0에서 제거됩니다.

이 이벤트들은 항상 기본적으로 비활성화되어 있었으며 기능 플래그로 수동으로 활성화해야 했습니다. 이를 활성화하면 너무 많은 이벤트가 생성되어 GitLab 인스턴스 속도를 크게 저하시킬 수 있습니다. 이런 이유로 이 이벤트들을 제거합니다.

오브젝트 스토리지용 백그라운드 업로드#

  • GitLab 14.9에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

오브젝트 스토리지 기능의 전반적인 복잡성과 유지 관리 부담을 줄이기 위해, 파일 업로드에 background_upload를 사용하는 방식은 폐기되었으며 GitLab 15.0에서 완전히 제거됩니다. 오브젝트 스토리지의 제거된 백그라운드 업로드 설정에 대해서는 15.0 관련 변경 사항을 참고합니다.

이는 일부 오브젝트 스토리지 공급자에 영향을 줍니다.

  • OpenStack OpenStack을 사용하는 고객은 Swift 대신 S3 API를 사용하도록 설정을 변경해야 합니다.
  • RackSpace RackSpace 기반 오브젝트 스토리지를 사용하는 고객은 다른 공급자로 데이터를 마이그레이션해야 합니다.

GitLab은 영향을 받는 고객의 마이그레이션을 돕기 위해 추가 안내를 게시할 예정입니다.

CI/CD job 이름 길이 제한#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거됨(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 15.0에서는 CI/CD job 이름의 문자 수를 255자로 제한합니다. 255자 제한을 초과하는 job 이름을 가진 파이프라인은 15.0 릴리스 이후 동작을 멈춥니다.

인스턴스(공유) 러너를 프로젝트(전용) 러너로 변경#

GitLab 15.0에서는 인스턴스(공유) 러너를 프로젝트(전용) 러너로 더 이상 변경할 수 없습니다.

사용자가 인스턴스 러너를 프로젝트 러너로 실수로 변경한 후 다시 되돌리지 못하는 경우가 자주 발생합니다. GitLab은 보안상의 영향 때문에 프로젝트 러너를 공유 러너로 변경하는 것을 허용하지 않습니다. 한 프로젝트용으로 만들어진 러너가 인스턴스 전체의 작업을 실행하도록 설정될 수 있기 때문입니다.

여러 프로젝트에 러너를 추가해야 하는 관리자는 한 프로젝트에 러너를 등록한 다음, 관리자 화면으로 이동해 추가 프로젝트를 선택할 수 있습니다.

Container Network and Host Security#

GitLab 14.8에서 GitLab Container Network Security 및 Container Host Security 카테고리와 관련된 모든 기능이 폐기되었으며 GitLab 15.0에서 제거될 예정입니다. 이 기능의 대체제가 필요한 사용자는 GitLab 외부에서 설치하고 관리할 수 있는 잠재적 솔루션으로 다음 오픈소스 프로젝트를 검토할 것을 권장합니다. AppArmor, Cilium, Falco, FluentD, Pod Security Admission.

이러한 기술을 GitLab에 통합하려면, 원하는 Helm 차트를 다음 문서의 Cluster Management Project Template 사본에 추가합니다. 이러한 Helm 차트를 프로덕션에 배포하려면 GitLab CI/CD를 통해 명령을 호출합니다.

이 변경 사항의 일환으로 GitLab 내 다음 특정 기능이 폐기되었으며 GitLab 15.0에서 제거될 예정입니다.

  • Security & Compliance > Threat Monitoring 페이지.
  • Security & Compliance > Policies 페이지에 있는 Network Policy 보안 정책 유형.
  • GitLab을 통해 AppArmor, Cilium, Falco, FluentD, Pod Security Policies와의 통합을 관리하는 기능.
  • 위 기능과 관련된 모든 API.

이 변경 사항에 대한 추가 맥락을 얻거나 피드백을 제공하려면 공개된 폐기 이슈를 참고합니다.

14.0.0 미만 컨테이너 스캐닝 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

컨테이너 스캐닝 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 컨테이너 스캐닝 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

14.0.0 미만 커버리지 유도 퍼징 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

커버리지 유도 퍼징 리포트 스키마 14.0.0 미만 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 커버리지 유도 퍼징 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

14.0.0 미만 DAST 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

DAST 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 DAST 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 표시됩니다, 취약점 리포트에서.

의존성 스캐닝 Python 3.9 및 3.6 이미지 폐기#

Python 프로젝트에 의존성 스캐닝을 사용하는 사용자를 위해, Python 3.6을 사용하는 기본 gemnasium-python:2 이미지와 Python 3.9를 사용하는 커스텀 gemnasium-python:2-python-3.9 이미지를 폐기합니다. GitLab 15.0부터 새로운 기본 이미지는 지원되는 버전인 Python 3.9 용이 되며, 3.6은 더 이상 지원되지 않습니다.

Python 3.9 또는 3.9 호환 프로젝트를 사용하는 사용자는 별도 조치를 취할 필요가 없으며 GitLab 15.0에서 의존성 스캐닝이 정상 동작하기 시작합니다. 지금 새 컨테이너를 테스트하려면 프로젝트에서 이 컨테이너(15.0에서 제거될 예정)로 테스트 파이프라인을 실행합니다. Python 3.9 이미지를 사용합니다.

gemnasium-python-dependency_scanning:
  image:
    name: registry.gitlab.com/gitlab-org/security-products/analyzers/gemnasium-python:2-python-3.9

Python 3.6을 사용하는 사용자는 GitLab 15.0부터 의존성 스캐닝의 기본 템플릿을 더 이상 사용할 수 없습니다. 폐기된 gemnasium-python:2 분석기 이미지로 전환해야 합니다. 이 변경의 영향을 받는 경우 이 이슈에 댓글을 남기면, 필요 시 제거 일정을 연장할 수 있습니다.

3.9 특별 예외 이미지를 사용하는 사용자는 대신 기본값을 사용해야 하며 더 이상 컨테이너를 재정의하지 않아야 합니다. 3.9 특별 예외 이미지를 사용 중인지 확인하려면 .gitlab-ci.yml 파일에서 다음 참조가 있는지 확인합니다.

gemnasium-python-dependency_scanning:
  image:
    name: registry.gitlab.com/gitlab-org/security-products/analyzers/gemnasium-python:2-python-3.9

의존성 스캐닝 기본 Java 버전이 17로 변경#

GitLab 15.0에서는 의존성 스캐닝에서 스캐너가 기대하는 기본 Java 버전이 11에서 17로 업데이트됩니다. Java 17은 가장 최신의 장기 지원(Long Term Support, LTS) 버전입니다. 의존성 스캐닝은 계속해서 동일한 버전 범위(8, 11, 13, 14, 15, 16, 17)를 지원하며, 기본 버전만 변경됩니다. 프로젝트에서 이전 기본값인 Java 11을 사용한다면 DS_Java_Version 변수를 맞게 설정합니다.

14.0.0 미만 의존성 스캐닝 스키마#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거

의존성 스캐닝 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 의존성 스캐닝 보안 리포트를 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 표시됩니다, 취약점 리포트에서.

Geo 관리자 UI 경로 폐기#

  • GitLab 14.8에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 13.0에서 Geo 관리자 UI에 새로운 프로젝트 및 디자인 복제 상세 경로를 도입했습니다. 이 경로는 /admin/geo/replication/projects와 /admin/geo/replication/designs 입니다. 이전 경로는 유지하며 새 경로로 리다이렉트했습니다. GitLab 15.0에서는 이전 경로인 /admin/geo/projects와 /admin/geo/designs에 대한 지원을 제거합니다. 이전 경로를 사용하는 북마크나 스크립트가 있다면 업데이트합니다.

커스텀 Geo:db:* Rake 작업 폐기#

  • GitLab 14.8에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.8에서는 Geo 추적 데이터베이스가 Rails 6의 다중 데이터베이스 지원을 사용하도록 전환한 이후 가능해진 방식으로 geo:db:* Rake 작업을 내장 작업으로 교체합니다. 다음 geo:db:* 작업은 해당하는 db:*:geo 작업으로 교체됩니다.

  • geo:db:drop -> db:drop:geo
  • geo:db:create -> db:create:geo
  • geo:db:setup -> db:setup:geo
  • geo:db:migrate -> db:migrate:geo
  • geo:db:rollback -> db:rollback:geo
  • geo:db:version -> db:version:geo
  • geo:db:reset -> db:reset:geo
  • geo:db:seed -> db:seed:geo
  • geo:schema:load:geo -> db:schema:load:geo
  • geo:db:schema:dump -> db:schema:dump:geo
  • geo:db:migrate:up -> db:migrate:up:geo
  • geo:db:migrate:down -> db:migrate:down:geo
  • geo:db:migrate:redo -> db:migrate:redo:geo
  • geo:db:migrate:status -> db:migrate:status:geo
  • geo:db:test:prepare -> db:test:prepare:geo
  • geo:db:test:load -> db:test:load:geo
  • geo:db:test:purge -> db:test:purge:geo

기능 플래그 PUSH_RULES_SUPERSEDE_CODE_OWNERS 폐기#

기능 플래그 PUSH_RULES_SUPERSEDE_CODE_OWNERS는 GitLab 15.0에서 제거됩니다. 제거되면 푸시 규칙이 코드 소유자보다 우선하게 됩니다. 코드 소유자 승인이 필요한 경우에도, 특정 사용자의 코드 푸시를 명시적으로 허용하는 푸시 규칙이 코드 소유자 설정보다 우선합니다.

Elasticsearch 6.8#

Elasticsearch 6.8은 GitLab 14.8에서 폐기되었으며 GitLab 15.0에서 제거될 예정입니다. Elasticsearch 6.8을 사용하는 고객은 GitLab 15.0으로 업그레이드하기 전에 Elasticsearch 버전을 7.x로 업그레이드해야 합니다. Elasticsearch의 모든 개선 사항을 활용할 수 있도록 최신 버전의 Elasticsearch 7 사용을 권장합니다.

Elasticsearch 6.8은 GitLab 15.0에서 지원 예정인 Amazon OpenSearch 와도 호환되지 않습니다.

보안 리포트 스키마 검증 강제화#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

보안 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대한 검증을 통과하지 못한 리포트 역시 GitLab 15.0에서 더 이상 지원되지 않습니다.

파이프라인 작업 아티팩트로 보안 리포트를 출력하여 GitLab과 통합하는 보안 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 따르도록 해야 합니다. 버전이 낮거나 명시된 스키마 버전에 대한 검증에 실패한 리포트는 처리되지 않으며, 취약점 발견 사항이 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

외부 상태 확인 API 브레이킹 체인지#

외부 상태 확인 API는 원래 상태 확인을 통과 상태로 표시하는 기본 통과 요청을 지원하기 위해 구현되었습니다. 이제 기본 통과 요청은 폐기됩니다. 구체적으로 다음이 폐기됩니다.

  • status 필드를 포함하지 않는 요청.
  • status 필드가 approved로 설정된 요청.

GitLab 15.0부터 상태 확인은 status 필드가 존재하고 passed로 설정된 경우에만 통과 상태로 업데이트됩니다. 다음 요청은:

  • status 필드를 포함하지 않으면 422 오류로 거부됩니다. 자세한 내용은 관련 이슈를 참고합니다.
  • passed 이외의 값을 포함하면 상태 확인이 실패합니다. 자세한 내용은 관련 이슈를 참고합니다.

이 변경 사항에 맞추어, 외부 상태 확인을 나열하는 API 호출도 통과한 상태 확인에 대해 approved 대신 passed 값을 반환합니다.

데몬으로 실행되는 GitLab Pages#

  • GitLab 14.9에서 공지
  • GitLab 15.0에서 제거

GitLab 15.0에서 GitLab Pages의 데몬 모드 지원이 제거됩니다.

GitLab Serverless#

GitLab Serverless는 자동 배포 및 모니터링과 함께 Knative 기반 서버리스 개발을 지원하는 기능 세트입니다.

GitLab Serverless 기능이 사용자에게 실질적인 공감을 얻지 못해 제거하기로 결정했습니다. 또한 Kubernetes와 Knative가 계속 발전하면서, 현재 구현은 최신 버전에서 제대로 동작하지도 않습니다.

라이선스 준수에서 Godep 지원#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Go 용 Godep 의존성 관리자는 2020 년 Go에 의해 폐기되었으며 Go 모듈로 대체되었습니다. 유지보수 비용을 줄이기 위해 14.7부터 Godep 프로젝트의 라이선스 준수 기능을 폐기하며 GitLab 15.0에서 제거할 예정입니다.

GraphQL ID 및 GlobalID 호환성#

하위 호환성을 위해 추가했던 GraphQL 프로세서의 비표준 확장을 제거합니다. 이 확장은 GraphQL 쿼리의 검증 방식을 수정하여, 평소라면 거부될 인자에 ID 타입을 사용할 수 있게 했습니다. 일부 인자는 원래 ID 타입이었습니다. 이들은 특정 종류의 ID로 변경되었습니다. 다음 경우에 해당하면 이 변경 사항이 브레이킹 체인지이 될 수 있습니다.

  • GraphQL을 사용하는 경우.
  • 쿼리 시그니처의 인자에 ID 타입을 사용하는 경우.

일부 필드 인자는 여전히 ID 타입을 갖습니다. 이는 일반적으로 IID 값이나 네임스페이스 경로에 해당합니다. 예를 들어 Query.project(fullPath: ID!)가 있습니다.

영향을 받는 필드 인자와 받지 않는 필드 인자의 목록은 폐기 이슈를 참고합니다.

GitLab 서버에서 가져온 스키마 데이터를 사용해 쿼리를 로컬에서 검증하면 이 변경 사항이 자신에게 영향을 미치는지 테스트할 수 있습니다. 해당 GitLab 인스턴스의 GraphQL 탐색기 도구를 사용하면 이를 수행할 수 있습니다. 예: https://gitlab.com/-/graphql-explorer.

예를 들어 다음 쿼리는 이 브레이킹 체인지을 보여줍니다.

# a query using the deprecated type of Query.issue(id:)
# WARNING: This will not work after GitLab 15.0
query($id: ID!) {
  deprecated: issue(id: $id) {
    title, description
  }
}

위 쿼리는 GitLab 15.0 출시 이후 동작하지 않습니다. Query.issue(id:)의 타입이 실제로는 IssueID! 이기 때문입니다.

대신 다음 두 가지 형식 중 하나를 사용해야 합니다.

# This will continue to work
query($id: IssueID!) {
  a: issue(id: $id) {
    title, description
  }
  b: issue(id: "gid://gitlab/Issue/12345") {
    title, description
  }
}

이 쿼리는 현재 동작하며 GitLab 15.0 이후에도 계속 동작합니다. 시그니처에서 ID를 명명된 타입으로 사용하는 첫 번째 형식의 쿼리는, 시그니처에서 올바른 타입을 사용하거나 인라인 인자 표현식을 사용하는 나머지 두 형식 중 하나로 변환해야 합니다.

Package 설정에 대한 GraphQL 권한 변경#

GitLab Package 단계는 GitLab을 사용해 모든 의존성을 관리할 수 있도록 Package Registry, 컨테이너 레지스트리, Dependency Proxy를 제공합니다. 이들 각 제품 카테고리에는 API로 조정할 수 있는 다양한 설정이 있습니다.

GraphQL의 권한 모델이 업데이트됩니다. 15.0 이후, Guest, Reporter, Developer 권한을 가진 사용자는 다음 설정을 더 이상 업데이트할 수 없습니다.

GitLab Runner SSH 실행자에 Known Host 필요#

GitLab 14.3에서 GitLab Runner config.toml 파일에 설정 항목을 추가했습니다. 이 설정인 [runners.ssh.disable_strict_host_key_checking]는 SSH 실행자에서 엄격한 호스트 키 확인을 사용할지 여부를 제어합니다.

GitLab 15.0 이상에서는 이 설정 항목의 기본값이 true에서 false로 변경됩니다. 이는 GitLab Runner SSH 실행자를 사용할 때 엄격한 호스트 키 확인이 강제된다는 것을 의미합니다.

라이선스 준수 API의 이전 승인 상태 이름#

managed_licenses API에서 라이선스 정책의 승인 상태에 대한 이전 이름(blacklisted, approved)을 폐기했지만, API 쿼리와 응답에서는 여전히 사용되고 있습니다. 이는 15.0에서 제거됩니다.

라이선스 준수 API를 사용 중이라면 approved 및 blacklisted 쿼리 매개변수 사용을 중단해야 합니다. 이제는 allowed와 denied를 사용합니다. 15.0에서는 응답에서도 approved와 blacklisted 사용이 중단되므로, 15.0 릴리스에서 문제가 발생하지 않도록 커스텀 도구가 기존 값과 새 값을 모두 사용하도록 조정해야 합니다.

이전 데이터베이스 설정#

database.yml에 위치한 GitLab 데이터베이스 설정 문법이 변경되며 이전 형식은 폐기됩니다. 이전 형식은 단일 PostgreSQL 어댑터 사용을 지원했지만, 새 형식은 다중 데이터베이스를 지원하도록 변경됩니다. main: 데이터베이스를 첫 번째 설정 항목으로 정의해야 합니다.

이 폐기는 Omnibus가 이 설정을 자동으로 처리하기 때문에 주로 소스에서 GitLab을 컴파일하는 사용자에게 영향을 미칩니다.

GitLab의 로깅#

GitLab의 로깅 기능을 사용하면 애플리케이션 로그를 수집하고 관리하기 위해 ELK 스택(Elasticsearch, Logstash, Kibana)을 설치할 수 있습니다. 사용자는 GitLab에서 관련 로그를 검색할 수 있습니다. 그러나 Kubernetes 클러스터 및 GitLab Managed Apps와의 인증서 기반 통합을 폐기한 이후로는 GitLab 내 로깅에 대한 권장 솔루션이 없습니다. 자세한 내용은 GitLab과 Opstrace 통합 이슈를 참고합니다.

custom_hooks_dir 설정을 GitLab Shell에서 Gitaly로 이동#

  • GitLab 14.9에서 공지
  • GitLab 15.0에서 제거

custom_hooks_dir 설정은 이제 Gitaly에서 구성하며, GitLab 15.0에서 GitLab Shell 로부터 제거됩니다.

OAuth 암시적 부여(implicit grant)#

OAuth 암시적 부여 인가 흐름은 다음 주요 릴리스인 GitLab 15.0에서 제거됩니다. OAuth 암시적 부여를 사용하는 애플리케이션은 대체 가능한 지원되는 OAuth 흐름으로 전환해야 합니다.

만료되지 않는 OAuth 토큰#

기본적으로 모든 신규 애플리케이션은 액세스 토큰이 2 시간 후 만료됩니다. GitLab 14.2 이하 버전에서는 OAuth 액세스 토큰에 만료 기한이 없었습니다. GitLab 15.0에서는 만료 기한이 없는 기존 토큰에 대해 자동으로 만료 기한이 생성됩니다.

GitLab 15.0 출시 전에 토큰 만료를 옵트인해야 합니다.

  1. 애플리케이션을 편집합니다.
  2. Expire access tokens를 선택해 활성화합니다. 토큰은 폐기하지 않으면 만료되지 않습니다.

OmniAuth Kerberos gem#

omniauth-kerberos gem은 다음 주요 릴리스인 GitLab 15.0에서 제거됩니다.

이 gem은 유지 관리되지 않고 있으며 사용량도 매우 적습니다. 따라서 이 인증 방식에 대한 지원을 제거할 계획이며 대신 Kerberos SPNEGO 통합 사용을 권장합니다. omniauth-kerberos 통합에서 지원되는 통합으로 업그레이드하려면 업그레이드 안내를 참고합니다.

Kerberos SPNEGO 통합은 폐기하지 않으며, 이전의 비밀번호 기반 Kerberos 통합만 폐기한다는 점에 유의합니다.

PAT 만료 강제 적용의 선택적 사용#

PAT 만료 강제 적용을 비활성화하는 기능은 보안 관점에서 이례적입니다. 이 이례적인 기능이 사용자에게 예상치 못한 동작을 일으킬 수 있다는 우려가 있습니다. 보안 기능에서의 예상치 못한 동작은 본질적으로 위험하므로, 이 기능을 제거하기로 결정했습니다.

SSH 만료 강제 적용의 선택적 사용#

SSH 만료 강제 적용을 비활성화하는 기능은 보안 관점에서 이례적입니다. 이 이례적인 기능이 사용자에게 예상치 못한 동작을 일으킬 수 있다는 우려가 있습니다. 보안 기능에서의 예상치 못한 동작은 본질적으로 위험하므로, 이 기능을 제거하기로 결정했습니다.

Java 8에 대한 기본 제공 SAST 지원#

GitLab SAST SpotBugs 분석기는 보안 취약점을 찾기 위해 Java, Scala, Groovy, Kotlin 코드를 스캔합니다. 기술적인 이유로, 분석기는 스캔에 앞서 먼저 코드를 컴파일해야 합니다. 사전 컴파일 전략을 사용하지 않는 한, 분석기는 프로젝트의 코드를 자동으로 컴파일하려고 시도합니다.

15.0 이전 버전의 GitLab에서는 컴파일을 돕기 위해 분석기 이미지에 Java 8 및 Java 11 런타임이 포함되어 있습니다.

GitLab 15.0에서는 다음과 같이 변경됩니다.

  • 이미지 크기를 줄이기 위해 분석기 이미지에서 Java 8을 제거합니다.
  • Java 17로 더 쉽게 컴파일할 수 있도록 분석기 이미지에 Java 17을 추가합니다.

분석기 환경에 Java 8 이 있어야 하는 경우, 이 변경에 대한 폐기 이슈에 자세히 설명된 대로 조치해야 합니다.

고급 검색 마이그레이션의 오래된 인덱스#

고급 검색 마이그레이션은 보통 오랜 기간 여러 코드 경로를 지원해야 하므로, 안전하게 정리할 수 있을 때 정리하는 것이 중요합니다. 완전히 마이그레이션되지 않은 인덱스에 대한 하위 호환성을 제거하는 안전한 시점으로 GitLab 주요 버전 업그레이드를 활용합니다. 자세한 내용은 업그레이드 문서를 참고합니다.

Pseudonymizer#

  • GitLab 14.7에서 공지
  • GitLab 15.0에서 제거
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Pseudonymizer 기능은 일반적으로 사용되지 않으며, 대규모 데이터베이스에서 프로덕션 문제를 일으킬 수 있고, 오브젝트 스토리지 개발을 방해할 수 있습니다. 이제 폐기된 것으로 간주되며, GitLab 15.0에서 제거됩니다.

instanceStatisticsMeasurements GraphQL 노드를 통한 사용 추이 조회#

instanceStatisticsMeasurements GraphQL 노드는 13.10에서 usageTrendsMeasurements로 이름이 변경되었으며 이전 필드 이름은 폐기된 것으로 표시되었습니다. 기존 GraphQL 쿼리를 수정하려면 instanceStatisticsMeasurements를 usageTrendsMeasurements로 교체합니다.

요청 프로파일링#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

요청 프로파일링은 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다.

현재 프로파일링 도구를 통합하여 더 쉽게 접근할 수 있도록 작업하고 있습니다. 이 기능의 사용 현황을 평가한 결과, 널리 사용되지 않는다는 것을 확인했습니다. 또한 더 이상 활발히 유지 관리되지 않거나 최신 버전의 Ruby에 맞게 업데이트되지 않았거나, 부하가 큰 페이지 로드를 프로파일링할 때 자주 충돌하는 일부 서드파티 gem에 의존하고 있습니다.

자세한 내용은 폐기 이슈의 요약 섹션을 확인합니다.

Premium 티어의 필수 파이프라인 구성#

필수 파이프라인 구성 기능은 Premium 고객을 대상으로 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다. 이 기능은 GitLab Ultimate 고객에게는 폐기되지 않습니다.

이 기능을 GitLab Ultimate 티어로 이전하는 이번 변경은, 이 기능에 대한 수요가 주로 경영진에서 발생한다는 점을 고려해 기능을 가격 정책 철학에 더 잘 맞추기 위한 것입니다.

또한 이번 변경은 다음과 같은 관련 Ultimate 티어 기능들과 티어 전략의 일관성을 유지하는 데 도움이 됩니다.

보안 정책 및 컴플라이언스 프레임워크 파이프라인입니다.

Retire-JS 의존성 스캐닝 도구#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

14.8부터 retire.js job은 의존성 스캐닝에서 폐기됩니다. 폐기 기간 동안에도 CI/CD 템플릿에는 계속 포함됩니다. GitLab 15.0에서는 2022년 5월 22일에 의존성 스캐닝에서 retire.js를 제거합니다. JavaScript 스캐닝 기능은 여전히 Gemnasium이 담당하므로 영향을 받지 않습니다.

DS_EXCLUDED_ANALYZERS를 사용해 retire.js를 명시적으로 제외한 경우, 15.0에서 해당 참조를 정리(제거)해야 합니다. retire-js-dependency_scanning job과 관련해 파이프라인의 의존성 스캐닝 구성을 커스터마이징한 경우, 파이프라인이 실패하지 않도록 15.0에서 제거되기 전에 gemnasium-dependency_scanning으로 전환해야 합니다. DS_EXCLUDED_ANALYZERS로 retire.js를 참조하지 않았거나 retire.js에 특화된 템플릿 커스터마이징을 하지 않았다면 별도 조치가 필요하지 않습니다.

14.0.0 미만 버전의 SAST 스키마#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정

SAST 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대해 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

SAST 보안 리포트를 파이프라인 job 아티팩트로 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 준수하도록 해야 합니다. 버전이 더 낮거나 선언된 스키마 버전에 대한 검증에 실패하는 리포트는 처리되지 않으며, 취약점 검출 결과가 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

.NET 2.1에 대한 SAST 지원#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab SAST Security Code Scan 분석기는 .NET 코드의 보안 취약점을 스캔합니다. 기술적인 이유로, 이 분석기는 코드를 스캔하기 전에 먼저 빌드해야 합니다.

GitLab 15.0 이전 버전에서는 기본 분석기 이미지(버전 2)가 다음을 지원합니다.

  • .NET 2.1
  • .NET 3.0 및 .NET Core 3.0
  • .NET Core 3.1
  • .NET 5.0

GitLab 15.0에서는 이 분석기의 기본 메이저 버전을 버전 2에서 버전 3으로 변경합니다. 이 변경 사항은 다음과 같습니다.

버전 3은 GitLab 14.6에서 발표되었으며 선택적 업그레이드로 제공되었습니다.

분석기 이미지에 기본으로 .NET 2.1 지원이 포함되어 있다는 점에 의존하고 있다면, 이 변경 사항에 대한 폐기 이슈에 설명된 대로 조치를 취해야 합니다.

시크릿 탐지 구성 변수 폐기#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 시크릿 탐지를 커스터마이징하는 과정을 더 간단하고 안정적으로 만들기 위해, 기존에 CI/CD 구성에서 설정할 수 있었던 일부 변수를 폐기합니다.

다음 변수들은 현재 기록 스캔(historical scanning) 옵션을 커스터마이징할 수 있게 해주지만, GitLab 관리형 CI/CD 템플릿과 잘 맞지 않아 이번에 폐기됩니다.

  • SECRET_DETECTION_COMMIT_FROM
  • SECRET_DETECTION_COMMIT_TO
  • SECRET_DETECTION_COMMITS
  • SECRET_DETECTION_COMMITS_FILE

SECRET_DETECTION_ENTROPY_LEVEL은 이전에는 코드베이스의 문자열 엔트로피 수준만 고려하는 규칙을 구성할 수 있게 해주었으나, 이번에 폐기됩니다. 이 엔트로피 전용 규칙은 허용할 수 없을 만큼 많은 잘못된 결과(오탐)를 발생시켰으며, 더 이상 지원되지 않습니다.

GitLab 15.0에서는 시크릿 탐지 분석기가 이 폐기된 옵션들을 무시하도록 업데이트합니다. 커밋 기록에 대한 기록 스캔은 SECRET_DETECTION_HISTORIC_SCAN CI/CD 변수를 설정하여 계속 구성할 수 있습니다.

자세한 내용은 이 변경 사항에 대한 폐기 이슈를 참고합니다.

14.0.0 미만 버전의 시크릿 탐지 스키마#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정

시크릿 탐지 리포트 스키마 14.0.0 이전 버전은 GitLab 15.0에서 더 이상 지원되지 않습니다. 리포트에 명시된 스키마 버전에 대해 검증을 통과하지 못한 리포트 역시 GitLab 15.0부터 더 이상 지원되지 않습니다.

시크릿 탐지 보안 리포트를 파이프라인 job 아티팩트로 출력하여 GitLab과 통합하는 서드파티 도구가 영향을 받습니다. 출력되는 모든 리포트가 최소 버전 14.0.0의 올바른 스키마를 준수하도록 해야 합니다. 버전이 더 낮거나 선언된 스키마 버전에 대한 검증에 실패하는 리포트는 처리되지 않으며, 취약점 검출 결과가 머지 리퀘스트, 파이프라인, 취약점 리포트에 표시되지 않습니다.

전환을 돕기 위해 GitLab 14.10부터 규정을 준수하지 않는 리포트에는 경고가 취약점 리포트에 표시됩니다.

Secure 및 Protect 분석기 이미지의 새 위치 게시#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab은 다양한 분석기를 사용해 보안 취약점을 스캔합니다. 각 분석기는 컨테이너 이미지 형태로 배포됩니다.

GitLab 14.8부터 GitLab Secure 및 Protect 분석기의 새 버전은 registry.gitlab.com/security-products 하위의 새 레지스트리 위치에 게시됩니다.

이 변경 사항을 반영하도록 GitLab 관리형 CI/CD 템플릿의 기본값을 업데이트할 예정입니다.

  • 컨테이너 스캐닝을 제외한 모든 분석기의 경우, SECURE_ANALYZERS_PREFIX 변수를 새 이미지 레지스트리 위치로 업데이트합니다.
  • 컨테이너 스캐닝의 경우 기본 이미지 주소가 이미 업데이트되어 있습니다. 컨테이너 스캐닝에는 SECURE_ANALYZERS_PREFIX 변수가 없습니다.

향후 릴리스에서는 registry.gitlab.com/gitlab-org/security-products/analyzers로의 이미지 게시를 중단합니다. 이렇게 되면, 이미지를 수동으로 pull하여 별도의 레지스트리에 push하는 경우 조치를 취해야 합니다. 이는 오프라인 배포에서 흔히 해당되는 경우입니다. 그렇지 않으면 이후 업데이트를 받을 수 없습니다.

자세한 내용은 폐기 이슈를 참고합니다.

Secure 및 Protect 분석기 메이저 버전 업데이트#

  • GitLab 14.8에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Secure 및 Protect Stage는 GitLab 15.0 릴리스와 함께 분석기의 메이저 버전을 올립니다. 이 메이저 버전 업그레이드를 통해 분석기를 다음과 같이 명확하게 구분할 수 있습니다.

  • 2022년 5월 22일 이전에 릴리스되어, 엄격한 스키마 검증 대상이 아닌 리포트를 생성하는 분석기
  • 2022년 5월 22일 이후에 릴리스되어, 엄격한 스키마 검증 대상_인_ 리포트를 생성하는 분석기

기본 include 템플릿을 사용하지 않거나 분석기 버전을 고정(pin)해두었다면, 고정된 버전을 제거하거나 최신 메이저 버전으로 업데이트하도록 CI/CD job 정의를 수정해야 합니다. GitLab 12.0~14.10 사용자는 GitLab 15.0 릴리스 전까지는 평소와 같이 분석기 업데이트를 계속 받습니다. 이후에는 유지 관리 정책에 따라 버그와 새 기능을 백포트하지 않으므로, 분석기 새 메이저 버전에서 새로 수정된 버그와 새로 출시된 기능을 폐기된 버전에서는 사용할 수 없습니다. 필요한 보안 패치는 최신 3개의 마이너 릴리스 내에서 백포트됩니다. 구체적으로 다음 항목들이 폐기되며, GitLab 15.0 릴리스 이후로는 더 이상 업데이트되지 않습니다.

  • API security: 버전 1
  • Container scanning: 버전 4
  • Coverage-guided fuzz testing: 버전 2
  • Dependency scanning: 버전 2
  • Dynamic application security testing (DAST): 버전 2
  • Infrastructure as Code (IaC) scanning: 버전 1
  • License scanning: 버전 3
  • Secret detection: 버전 3
  • Static application security testing (SAST): 모든 분석기의 버전 2, 단 현재 버전 3인 gosec은 제외
    • bandit: 버전 2
    • brakeman: 버전 2
    • eslint: 버전 2
    • flawfinder: 버전 2
    • gosec: 버전 3
    • kubesec: 버전 2
    • mobsf: 버전 2
    • nodejs-scan: 버전 2
    • phpcs-security-audit: 버전 2
    • pmd-apex: 버전 2
    • security-code-scan: 버전 2
    • semgrep: 버전 2
    • sobelow: 버전 2
    • spotbugs: 버전 2

Sidekiq 메트릭 및 헬스 체크 구성#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

단일 프로세스와 포트를 사용해 Sidekiq 메트릭과 헬스 체크를 내보내는 방식은 폐기됩니다. 지원은 15.0에서 제거됩니다.

안정성과 가용성을 개선하고 예외 상황에서의 데이터 손실을 방지하기 위해, 메트릭과 헬스 체크를 두 개의 별도 프로세스에서 내보내도록 Sidekiq를 업데이트했습니다. 이 둘은 별도의 서버이므로, 15.0에서는 메트릭과 헬스 체크에 대해 별도의 포트를 명시적으로 설정하도록 구성 변경이 필요합니다. 새로 도입된 sidekiq['health_checks_*'] 설정은 항상 gitlab.rb에 설정해야 합니다. 자세한 내용은 Sidekiq 구성 문서를 확인합니다.

이 변경 사항이 제대로 동작하려면 Prometheus가 새 엔드포인트를 스크랩하도록 업데이트하거나, k8s 헬스 체크가 새 헬스 체크 포트를 대상으로 하도록 업데이트해야 합니다. 그렇지 않으면 메트릭이나 헬스 체크 중 하나가 사라집니다.

폐기 기간 동안에는 이 설정들이 선택 사항이며, GitLab은 Sidekiq 헬스 체크 포트를 기본적으로 sidekiq_exporter와 동일한 포트로 설정하여 서버 하나만 실행합니다(현재 동작 방식은 변경되지 않습니다). 두 설정이 모두 지정되고 서로 다른 포트가 제공된 경우에만, Sidekiq 메트릭을 제공하기 위한 별도의 메트릭 서버가 기동되며, 이는 15.0에서 Sidekiq가 동작하는 방식과 유사합니다.

Static Site Editor#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Static Site Editor는 GitLab 15.0부터 더 이상 사용할 수 없습니다. GitLab 전반의 Markdown 편집 경험 개선을 통해 유사한 이점을 더 넓은 범위로 제공할 예정입니다. Static Site Editor로 들어오는 요청은 Web IDE로 리디렉션됩니다.

Static Site Editor를 현재 사용 중인 사용자는 기존 프로젝트에서 구성 파일을 제거하는 방법 등 자세한 내용을 문서에서 확인할 수 있습니다.

SLES 12 SP2 지원#

SUSE Linux Enterprise Server(SLES) 12 SP2의 장기 서비스 및 지원(LTSS)은 2021년 3월 31일에 종료되었습니다. SP2의 CA 인증서에는 만료된 DST 루트 인증서가 포함되어 있으며, 새로운 CA 인증서 패키지 업데이트를 받지 못하고 있습니다. 일부 우회 방법을 구현했지만, 빌드가 계속 정상적으로 동작하도록 유지할 수는 없습니다.

Gitaly와 나머지 GitLab 사이에 배포된 gRPC 인식 프록시 지원#

권장되지도 문서화되지도 않았지만, Gitaly와 나머지 GitLab 사이에 gRPC 인식 프록시(예: NGINX, Envoy)를 배포하는 것이 가능했습니다. gRPC 인식 프록시를 배포하는 기능은 폐기됩니다. 현재 Gitaly 연결에 gRPC 인식 프록시를 사용하고 있다면, 대신 TCP 또는 TLS 프록시(OSI 레이어 4)를 사용하도록 프록시 구성을 변경해야 합니다.

Gitaly Cluster는 GitLab 13.12에서 gRPC 인식 프록시와 호환되지 않게 되었습니다. 이제는 Gitaly Cluster를 사용하지 않아도 모든 GitLab 설치본이 gRPC 인식 프록시와 호환되지 않습니다.

일부 내부 RPC 트래픽을 gRPC 대신 커스텀 프로토콜로 전송함으로써 처리량을 늘리고 Go 가비지 컬렉션 지연 시간을 줄입니다. 자세한 내용은 관련 에픽을 참고합니다.

테스트 커버리지 프로젝트 CI/CD 설정#

테스트 커버리지 패턴 설정을 단순화하기 위해, GitLab 15.0에서는 테스트 커버리지 파싱을 위한 프로젝트 설정이 제거됩니다.

대신 프로젝트의 .gitlab-ci.yml에서 coverage 키워드에 정규 표현식을 지정해 머지 리퀘스트에 테스트 커버리지 결과를 설정합니다.

GitLab의 트레이싱#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab의 트레이싱은 오픈소스 엔드투엔드 분산 트레이싱 시스템인 Jaeger와의 통합 기능입니다. GitLab 사용자는 Jaeger 인스턴스로 이동해 배포된 애플리케이션의 성능에 대한 인사이트를 얻고, 주어진 요청을 처리하는 각 함수 또는 마이크로서비스를 추적할 수 있습니다. GitLab의 트레이싱은 GitLab 14.7에서 폐기되며 15.0에서 제거될 예정입니다. 가능한 대체 기능에 대한 작업을 추적하려면 GitLab과 Opstrace 통합 이슈를 참고합니다.

컨테이너 레지스트리 그룹 레벨 API 업데이트#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

마일스톤 15.0에서는, 그룹에서 레지스트리 리포지터리를 가져오는 컨테이너 레지스트리 API에서 tags 및 tags_count 매개변수 지원이 제거됩니다.

GET /groups/:id/registry/repositories 엔드포인트는 그대로 유지되지만 태그에 대한 정보는 반환하지 않습니다. 태그에 대한 정보를 얻으려면 기존의 GET /registry/repositories/:id 엔드포인트를 사용할 수 있으며, 이 엔드포인트는 현재와 마찬가지로 tags 및 tag_count 옵션을 계속 지원합니다. 이 엔드포인트는 이미지 리포지터리마다 한 번씩 호출해야 합니다.

Value Stream Analytics 필터링 계산 방식 변경#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Value Stream Analytics에서 날짜 필터가 동작하는 방식을 변경합니다. 이슈나 머지 리퀘스트가 생성된 시점을 기준으로 필터링하는 대신, 날짜 필터는 해당 스테이지의 종료 이벤트 시점을 기준으로 필터링합니다. 이 변경 사항이 적용되면 이전과 완전히 다른 수치가 나타납니다.

Value Stream Analytics 메트릭을 모니터링하면서 날짜 필터에 의존하고 있다면, 데이터 손실을 방지하기 위해 이번 변경 사항이 적용되기 전에 데이터를 저장해야 합니다.

Vulnerability Check#

Vulnerability Check 기능은 GitLab 14.8에서 폐기되며 GitLab 15.0에서 제거될 예정입니다. 대신 새로운 보안 승인 기능으로 마이그레이션할 것을 권장합니다. Security & Compliance > Policies로 이동해 새 Scan Result Policy를 생성하면 마이그레이션할 수 있습니다.

새로운 보안 승인 기능은 Vulnerability Check와 유사합니다. 예를 들어 둘 다 보안 취약점이 포함된 머지 리퀘스트에 대해 승인을 요구할 수 있습니다. 다만 보안 승인은 다음과 같은 여러 측면에서 기존 경험을 개선합니다.

  • 보안 승인 규칙을 편집할 수 있는 사용자를 선택할 수 있습니다. 따라서 독립적인 보안 또는 컴플라이언스 팀이 개발 프로젝트 관리자가 규칙을 수정하지 못하도록 규칙을 관리할 수 있습니다.
  • 여러 규칙을 만들어 서로 연결함으로써 스캐너 유형별로 서로 다른 심각도 임계값을 기준으로 필터링할 수 있습니다.
  • 보안 승인 규칙에 대한 원하는 변경 사항에 2단계 승인 프로세스를 적용할 수 있습니다.
  • 단일 중앙 집중형 규칙 세트를 유지 관리하기 쉽도록, 하나의 보안 정책 세트를 여러 개발 프로젝트에 적용할 수 있습니다.

기본 PackageType의 Versions#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

Package Registry GraphQL API를 만드는 작업의 일환으로, Package 그룹은 기본 PackageType 타입의 Version 타입을 폐기하고 이를 PackageDetailsType으로 옮겼습니다.

마일스톤 15.0에서는 PackageType에서 Version을 완전히 제거합니다.

apiFuzzingCiConfigurationCreate GraphQL mutation#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

API 퍼징 구성 스니펫은 이제 클라이언트 측에서 생성되며 더 이상 API 요청이 필요하지 않습니다. 따라서 더 이상 GitLab에서 사용되지 않는 apiFuzzingCiConfigurationCreate mutation을 폐기합니다.

artifacts:reports:cobertura 키워드#

  • GitLab 14.7에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

현재 GitLab의 테스트 커버리지 시각화는 Cobertura 리포트만 지원합니다. 15.0부터는 artifacts:reports:cobertura 키워드가 artifacts:reports:coverage_report로 대체됩니다. 15.0에서는 Cobertura가 유일하게 지원되는 리포트 파일이지만, 이는 GitLab이 다른 리포트 유형을 지원하기 위한 첫걸음입니다.

defaultMergeCommitMessageWithDescription GraphQL API 필드#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL API 필드 defaultMergeCommitMessageWithDescription은 폐기되었으며 GitLab 15.0에서 제거됩니다. 커밋 메시지 템플릿이 설정된 프로젝트의 경우, 이 필드는 템플릿을 무시합니다.

dependency_proxy_for_private_groups 기능 플래그#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab-#11582에서 public 그룹이 Dependency Proxy를 사용하는 방식이 변경됨에 따라 기능 플래그를 추가했습니다. 이 변경 이전에는 인증 없이 Dependency Proxy를 사용할 수 있었습니다. 이 변경으로 인해 Dependency Proxy를 사용하려면 인증이 필요합니다.

마일스톤 15.0에서는 이 기능 플래그를 완전히 제거합니다. 이후로는 Dependency Proxy를 사용할 때 반드시 인증해야 합니다.

컨테이너 레지스트리를 위한 htpasswd 인증#

컨테이너 레지스트리는 htpasswd를 사용한 인증을 지원합니다. 이는 Apache htpasswd 파일을 기반으로 하며, 비밀번호는 bcrypt로 해시됩니다.

GitLab(제품) 컨텍스트에서는 사용되지 않으므로, htpasswd 인증은 GitLab 14.9에서 폐기되고 GitLab 15.0에서 제거됩니다.

version 필드의 pipelines 필드#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GraphQL에는 패키지 버전에 대한 파이프라인을 가져오기 위해 PackageDetailsType에서 사용할 수 있는 pipelines 필드가 두 개 있습니다.

  • versions 필드의 pipelines 필드입니다. 이 필드는 패키지의 모든 버전과 연관된 모든 파이프라인을 반환하며, 메모리에 제한 없는 수의 객체를 불러올 수 있어 성능 문제를 일으킬 수 있습니다.
  • 특정 version의 pipelines 필드입니다. 이 필드는 해당 단일 패키지 버전과 연관된 파이프라인만 반환합니다.

발생 가능한 성능 문제를 완화하기 위해, 마일스톤 15.0에서 versions 필드의 pipelines 필드를 제거합니다. 패키지의 모든 버전에 대한 모든 파이프라인을 가져올 수는 없게 되지만, 남아 있는 해당 버전의 pipelines 필드를 통해 단일 버전의 파이프라인은 계속 가져올 수 있습니다.

PipelineSecurityReportFinding GraphQL의 projectFingerprint#

PipelineSecurityReportFinding GraphQL 객체의 projectFingerprint 필드가 폐기됩니다. 이 필드에는 고유성을 판단하는 데 사용되는 보안 발견 사항의 "핑거프린트"가 담겨 있습니다. 핑거프린트를 계산하는 방식이 변경되어 값이 달라집니다. 앞으로 새 값은 UUID 필드에 노출됩니다. 기존에 projectFingerprint 필드에서 제공되던 데이터는 결국 완전히 제거됩니다.

gitlab-ctl의 promote-db 명령#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.5에서는 장애 조치(failover) 중 Geo 보조 노드를 프라이머리로 승격시키는 gitlab-ctl promote 명령을 도입했습니다. 이 명령은 다중 노드 Geo 보조 사이트에서 데이터베이스 노드를 승격시키는 데 사용되던 gitlab-ctl promote-db를 대체합니다. gitlab-ctl promote-db는 GitLab 15.0까지는 기존과 동일하게 계속 동작하며 사용할 수 있습니다. Geo 고객은 스테이징 환경에서 새로운 gitlab-ctl promote 명령을 테스트하고, 이를 장애 조치 절차에 반영하기 시작할 것을 권장합니다.

gitlab-ctl의 promote-to-primary-node 명령#

  • GitLab 14.5에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.5에서는 장애 조치 중 Geo 보조 노드를 프라이머리로 승격시키는 gitlab-ctl promote 명령을 도입했습니다. 이 명령은 단일 노드 Geo 사이트에서만 사용할 수 있었던 gitlab-ctl promote-to-primary-node를 대체합니다. gitlab-ctl promote-to-primary-node는 GitLab 15.0까지는 기존과 동일하게 계속 동작하며 사용할 수 있습니다. Geo 고객은 스테이징 환경에서 새로운 gitlab-ctl promote 명령을 테스트하고, 이를 장애 조치 절차에 반영하기 시작할 것을 권장합니다.

CI/CD 구성의 type 및 types 키워드#

type 및 types CI/CD 키워드는 GitLab 15.0에서 제거됩니다. 이 키워드를 사용하는 파이프라인은 동작을 멈추므로, 동일한 동작을 하는 stage 및 stages로 전환해야 합니다.

bundler-audit 의존성 스캐닝 도구#

  • GitLab 14.6에서 발표됨
  • GitLab 15.0에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

14.6부터 bundler-audit는 의존성 스캐닝에서 폐기됩니다. 폐기 기간 동안에도 CI/CD 템플릿에는 계속 포함됩니다. 15.0에서는 2022년 5월 22일에 의존성 스캐닝에서 bundler-audit를 제거합니다. 이 제거 이후에도 Ruby 스캐닝 기능은 여전히 Gemnasium이 담당하므로 영향을 받지 않습니다.

DS_EXCLUDED_ANALYZERS를 사용해 bundler-audit를 명시적으로 제외한 경우, 15.0에서 해당 참조를 정리(제거)해야 합니다. 예를 들어 bundler-audit-dependency_scanning job을 수정하는 등 파이프라인의 의존성 스캐닝 구성을 커스터마이징한 경우, 파이프라인이 실패하지 않도록 15.0에서 제거되기 전에 gemnasium-dependency_scanning으로 전환해야 합니다. DS_EXCLUDED_ANALYZERS로 bundler-audit를 참조하지 않았거나 bundler-audit에 특화된 템플릿 커스터마이징을 하지 않았다면 별도 조치가 필요하지 않습니다.

GitLab 14.10#

Composer 의존성 다운로드 권한 변경#

GitLab Composer 리포지터리는 PHP 의존성을 push, 검색, 메타데이터 조회, 다운로드하는 데 사용할 수 있습니다. 의존성 다운로드를 제외한 모든 작업에는 인증이 필요합니다.

인증 없이 Composer 의존성을 다운로드하는 기능은 GitLab 14.9에서 폐기되며 GitLab 15.0에서 제거됩니다. GitLab 15.0부터는 Composer 의존성을 다운로드하려면 인증해야 합니다.

GitLab 14.9#

구성 가능한 Gitaly per_repository election 전략#

  • GitLab 14.8에서 발표됨
  • GitLab 14.9에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

per_repository Gitaly election 전략을 구성하는 기능은 폐기됩니다. per_repository는 GitLab 14.0부터 유일한 옵션이었습니다.

이 변경은 코드베이스를 깔끔하게 유지하기 위한 정기 유지 관리의 일환입니다.

통합 오류 추적 기본 비활성화#

  • GitLab 14.9에서 발표됨
  • GitLab 14.9에서 제거 예정(브레이킹 체인지)
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

GitLab 14.4에서 GitLab은 Sentry를 대체하는 통합 오류 추적 백엔드를 출시했습니다. 이 기능은 데이터베이스 성능 문제를 일으켰습니다. GitLab 14.9에서 통합 오류 추적은 GitLab.com에서 제거되었으며 GitLab Self-Managed에서는 기본적으로 꺼집니다. 이 기능의 향후 개발 방향을 검토하는 동안, 프로젝트 설정에서 오류 추적을 Sentry로 변경하여 Sentry 백엔드로 전환하는 것을 고려하기 바랍니다.

이번 제거에 대한 추가 배경 정보는 기본적으로 통합 오류 추적 비활성화를 참고합니다. 의견이 있다면 피드백: 통합 오류 추적 제거에 댓글을 남겨 주기 바랍니다.

GitLab 14.8#

openSUSE Leap 15.2 패키지#

  • GitLab 14.5에서 발표됨
  • GitLab 14.8에서 제거 예정
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.

openSUSE Leap 15.2에 대한 배포판 지원 및 보안 업데이트는 2021년 12월에 종료됩니다.

14.5부터 openSUSE Leap 15.3용 패키지를 제공하며, 14.8 마일스톤에서 openSUSE Leap 15.2용 패키지 제공을 중단합니다.

GitLab 14.6#

제네릭 패키지로 배포되는 Release CLI#

  • GitLab 14.2에서 발표됨
  • GitLab 14.6에서 제거 예정

release-cli는 GitLab 14.2부터 제네릭 패키지로 릴리스됩니다. GitLab 14.5까지는 계속 바이너리 형태로 S3에 배포하며, GitLab 14.6에서 S3를 통한 배포를 중단합니다.

GitLab 14.5#

Task Runner pod를 Toolbox로 이름 변경#

  • GitLab 14.2에서 발표됨
  • GitLab 14.5에서 제거 예정

Task Runner pod는 GitLab 애플리케이션 내에서 정기적인 하우스키핑 작업을 실행하는 데 사용되며, GitLab Runner와 자주 혼동됩니다. 이에 따라 Task Runner는 Toolbox로 이름이 변경됩니다.

이에 따라 서브차트 이름도 gitlab/task-runner에서 gitlab/toolbox로 변경됩니다. 결과적으로 생성되는 pod는 {{ .Release.Name }}-toolbox 형태로 이름이 지정되며, 보통 gitlab-toolbox가 됩니다. 이 pod들은 app=toolbox 레이블로 찾을 수 있습니다.

보류 중인 변경 사항#

다음 변경 사항들은 원래의 마일스톤에서 제거되었으며 재평가 중입니다.

CodeClimate 기반 코드 품질 스캔이 제거됩니다#

  • GitLab 17.3에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

향후 릴리스에서 CodeClimate 기반 코드 품질 스캔을 제거할 예정입니다. 이 변경 사항은 원래 GitLab 18.0으로 예정되어 있었으나 지연되었습니다.

대신 CI/CD 파이프라인에서 품질 도구를 직접 사용하고 도구의 리포트를 아티팩트로 제공합니다. 이미 여러 도구를 직접 통합하는 방법을 문서화해 두었으며, 문서를 따라 통합할 수 있습니다.

다음과 같은 방식으로 이 변경 사항을 구현할 예정입니다.

  1. Code-Quality.gitlab-ci.yml CI/CD 템플릿을 변경해 더 이상 스캔을 실행하지 않도록 합니다. 현재 이 템플릿은 CodeClimate 기반 스캔을 실행합니다. (제거 이후에도 이 템플릿을 include 하는 파이프라인에 미치는 영향을 줄이기 위해, 템플릿을 삭제하지 않고 변경할 예정입니다.)
  2. Auto DevOps의 일부로 CodeClimate 기반 스캔을 더 이상 실행하지 않습니다.

즉시 적용되어 CodeClimate 기반 스캔은 제한된 업데이트만 받습니다. 지원 종료(End of Support) 이후에는 추가 업데이트를 제공하지 않습니다. 다만 이전에 게시된 컨테이너 이미지를 삭제하거나, 커스텀 CI/CD 파이프라인 job 정의를 사용해 이를 실행하는 기능을 제거하지는 않습니다.

자세한 내용은 코드 품질 위반 스캔을 참고합니다.

컨테이너 레지스트리의 레거시 메타데이터 저장 방식#

  • GitLab 18.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 컨테이너 레지스트리의 레거시 메타데이터 저장 방식은 폐기 예정이며, 컨테이너 레지스트리 메타데이터 데이터베이스로 대체됩니다.

GitLab.com은 이미 메타데이터 데이터베이스를 사용하고 있습니다. 이번 폐기는 스토리지 백엔드(오브젝트 스토리지든 로컬 파일 시스템이든)에 메타데이터 정보를 직접 저장하는 레거시 컨테이너 레지스트리를 현재 사용 중인 GitLab Self-Managed 인스턴스에 영향을 줍니다.

레거시 메타데이터 저장 방식은 유지 관리(maintenance) 모드로 계속 지원되지만, 새로운 기능이나 개선 사항은 제공되지 않습니다. 가능한 한 빨리 컨테이너 레지스트리 메타데이터 데이터베이스로 마이그레이션할 것을 강력히 권장합니다.

이 변경 사항은 컨테이너 레지스트리가 이미지와 태그에 대한 메타데이터를 저장하는 방식에만 영향을 줍니다. 스토리지 백엔드(오브젝트 스토리지 또는 파일 시스템) 선택은 그대로 유지됩니다. 메타데이터 데이터베이스와 함께 오브젝트 스토리지 또는 파일 시스템 스토리지를 계속 사용할 수 있습니다.

레거시 메타데이터 저장 방식에서 메타데이터 데이터베이스로 마이그레이션하려면 컨테이너 레지스트리 메타데이터 데이터베이스 마이그레이션 가이드를 따릅니다. 마이그레이션 과정에는 메타데이터 데이터베이스 기능을 활성화하고 가져오기(import) 도구를 실행해 기존 레지스트리 데이터를 옮기는 작업이 포함됩니다.

메타데이터 데이터베이스는 더 나은 성능과 안정성을 제공하며, 레거시 메타데이터 저장 방식에서는 사용할 수 없는 새로운 컨테이너 레지스트리 기능을 제공합니다.

커버리지 기반 퍼즈 테스트가 폐기됩니다#

  • GitLab 18.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

커버리지 기반 퍼즈 테스트는 폐기 예정이며 GitLab 18.0부터 지원되지 않습니다. 이 기능은 GitLab 19.0에서 완전히 제거됩니다.

커버리지 기반 퍼즈 테스트는 여러 오픈소스 퍼저(fuzzer)를 GitLab에 통합했습니다. 영향을 받는 경우, 오픈소스 퍼저를 독립 애플리케이션으로 통합하거나, GitLab Advanced SAST와 같은 다른 보안 기능으로 마이그레이션할 수 있습니다.

JavaScript 벤더 라이브러리에 대한 의존성 스캔#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gemnasium 분석기(analyzer)가 의존성 스캔용으로 제공하는 JavaScript 벤더 라이브러리에 대한 의존성 스캔 기능은 GitLab 17.9에서 폐기 예정입니다.

이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 마이그레이션 가이드를 참고합니다.

대체 기능은 벤더 라이브러리에 대한 의존성 스캔으로 개발될 예정이지만, 제공 일정은 아직 정해지지 않았습니다.

의존성 스캔이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

의존성 스캔 기능이 GitLab SBOM 취약점 스캐너로 업그레이드됩니다. 이 변경의 일환으로, 이전에 CI/CD 파이프라인에서 사용되던 Gemnasium 분석기는 GitLab 17.9에서 폐기 예정입니다.

이 기능은 SBOM을 사용한 의존성 스캔 기능과 의존성 및 그 관계(의존성 그래프)를 탐지하는 데 초점을 맞추고, 취약점 식별을 위해 이미 연속 취약점 스캔에서 사용 중인 GitLab 내장 SBOM 취약점 스캐너에 의존하는 새로운 의존성 스캔 분석기로 대체됩니다.

GitLab 18.5 기준으로 이 새로운 기능은 제한적 제공(Limited Availability) 상태입니다. 대다수 사용자가 새로운 의존성 스캔 기능으로 마이그레이션할 때까지 GitLab은 Gemnasium 분석기를 계속 지원합니다. 그 이후에야 Gemnasium 분석기는 지원 종료에 도달합니다.

이번 업그레이드가 가져오는 중대한 변경 사항과 기능 제거로 인해, 이 업그레이드는 자동으로 적용되지 않습니다. 기존 CI/CD job은 CI/CD 구성에 지장을 주지 않도록 기본적으로 Gemnasium 분석기를 사용해 계속 작동합니다.

아래의 자세한 변경 사항을 검토하고, 전환에 도움이 되도록 마이그레이션 가이드를 참고합니다.

  • CI/CD 구성에 지장이 없도록, 애플리케이션이 안정(stable) 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.gitlab-ci.yml)을 사용하는 경우, 의존성 스캔은 Gemnasium 분석기 기반의 기존 CI/CD job만 사용합니다.
  • 애플리케이션이 최신(latest) 의존성 스캔 CI/CD 템플릿(Dependency-Scanning.latest.gitlab-ci.yml)을 사용하는 경우, 의존성 스캔은 Gemnasium 분석기 기반의 기존 CI/CD job을 사용하며, 지원되는 파일 형식에 대해서는 새로운 의존성 스캔 분석기도 함께 실행됩니다. 모든 프로젝트에 새로운 의존성 스캔 분석기를 강제 적용하도록 옵트인할 수도 있습니다.
  • 기능이 성숙해짐에 따라 다른 마이그레이션 경로도 고려될 수 있습니다.
  • Gemnasium 분석기 프로젝트는 폐기 예정이며, 해당 컨테이너 이미지(모든 태그와 변형)인 gemnasium, gemnasium-maven, gemnasium-python도 마찬가지입니다. 이 이미지들은 GitLab 컨테이너 레지스트리에서 제거되지 않습니다.
  • Gemnasium 분석기와 관련된 다음 CI/CD 변수도 폐기 예정입니다. 이 변수들은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 적용되지 않습니다. 변수가 다른 컨텍스트에서도 사용되는 경우, 폐기는 의존성 스캔 기능에만 적용됩니다(예: GOOS와 GOARCH는 의존성 스캔 기능에 특화된 변수가 아닙니다). DS_EXCLUDED_ANALYZERS, DS_GRADLE_RESOLUTION_POLICY, DS_IMAGE_SUFFIX, DS_JAVA_VERSION, DS_PIP_DEPENDENCY_PATH, DS_PIP_VERSION, DS_REMEDIATE_TIMEOUT, DS_REMEDIATE, GEMNASIUM_DB_LOCAL_PATH, GEMNASIUM_DB_REF_NAME, GEMNASIUM_DB_REMOTE_URL, GEMNASIUM_DB_UPDATE_DISABLED, GEMNASIUM_LIBRARY_SCAN_ENABLED, GOARCH, GOFLAGS, GOOS, GOPRIVATE, GRADLE_CLI_OPTS, GRADLE_PLUGIN_INIT_PATH, MAVEN_CLI_OPTS, PIP_EXTRA_INDEX_URL, PIP_INDEX_URL, PIPENV_PYPI_MIRROR, SBT_CLI_OPTS.
  • 다음 CI/CD 컴포넌트는 폐기 예정입니다: Android, Rust, Swift, CocoaPods. 이들은 지원되는 모든 언어와 패키지 매니저를 아우르는 메인 의존성 스캔 CI/CD 컴포넌트로 대체됩니다.
  • Yarn 프로젝트에 대한 취약점 해결(Resolve a vulnerability) 기능은 GitLab 17.9에서 폐기 예정입니다. 이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 해당 폐기 공지를 참고합니다.
  • JavaScript 벤더 라이브러리에 대한 의존성 스캔 기능은 GitLab 17.9에서 폐기 예정입니다. 이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 해당 폐기 공지를 참고합니다.

GitLab Advanced SAST가 기본으로 활성화됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 19.0에서 SAST CI/CD 템플릿을 업데이트하여 GitLab Ultimate를 사용하는 프로젝트에서 GitLab Advanced SAST를 기본으로 활성화합니다. 이 변경 이전에는 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLED를 true로 설정한 경우에만 GitLab Advanced SAST 분석기가 활성화되었습니다. 이 변경 사항은 원래 GitLab 18.0으로 예정되어 있었으나 지연되었습니다.

Advanced SAST는 크로스 파일, 크로스 함수 스캔과 새로운 규칙 집합(ruleset)을 사용해 더 정확한 결과를 제공합니다. Advanced SAST는 지원되는 언어의 커버리지를 넘겨받고, 해당 언어에 대한 이전 스캐너의 스캔을 비활성화합니다. 각 프로젝트의 기본 브랜치에서 첫 스캔을 수행한 후, 이전 스캐너의 결과가 여전히 탐지되는 경우 자동화된 프로세스가 이를 마이그레이션합니다.

프로젝트를 더 상세히 스캔하기 때문에, Advanced SAST는 프로젝트를 스캔하는 데 더 많은 시간이 걸릴 수 있습니다. 필요한 경우 CI/CD 변수 GITLAB_ADVANCED_SAST_ENABLED를 false로 설정해 GitLab Advanced SAST를 비활성화할 수 있습니다. GitLab 19.0에서 Advanced SAST가 기본으로 활성화되지 않도록 지금 프로젝트, 그룹, 정책에서 이 변수를 설정할 수 있습니다.

GitLab Runner Docker Machine executor가 폐기됩니다#

  • GitLab 17.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab Runner Docker Machine executor는 폐기 예정이며, GitLab 20.0(2027년 5월)에서 지원 기능으로서 제품에서 완전히 제거됩니다. Docker Machine의 대체 기능인 GitLab Runner Autoscaler는 Amazon Web Services(AWS) EC2, Google Compute Engine(GCE), Microsoft Azure 가상 머신(VM)용 GitLab 개발 플러그인과 함께 일반 제공(GA) 중입니다. 이번 발표와 함께 GitLab Runner 팀은 GitLab 이 유지 관리하는 Docker Machine 포크에 대한 커뮤니티 기여를 더 이상 받지 않으며, 새로 발견된 버그도 해결하지 않습니다.

GraphQL API의 GitLab Runner 플랫폼 및 설정 안내#

  • GitLab 15.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab Runner 플랫폼과 설치 안내를 가져오는 runnerPlatforms, runnerSetup 쿼리는 폐기 예정이며 GraphQL API에서 제거됩니다. 설치 안내가 필요한 경우 이 API 쿼리 대신 GitLab Runner 문서를 참고합니다.

GitLab Self-Managed의 Kubernetes 인증서 기반 연동#

  • GitLab 14.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Kubernetes와의 인증서 기반 연동은 폐기되어 제거될 예정입니다.

GitLab Self-Managed의 경우, 인증서 기반 연동을 계속 활성화할 수 있도록 GitLab 15.0에서 기능 플래그 certificate_based_clusters를 도입합니다. 다만 이 기능 플래그는 기본적으로 비활성화되므로, 이 변경 사항은 **호환성이 깨지는 변경(breaking change)**입니다.

더 견고하고 안전하며 향후 지속될 신뢰할 수 있는 Kubernetes 연동을 위해서는 Kubernetes 용 에이전트를 사용해 Kubernetes 클러스터를 GitLab에 연결합니다. 이 마이그레이션에 대한 자세한 내용은 Kubernetes 용 에이전트로 마이그레이션을 참고합니다.

새로운 솔루션이 기능 동등성(feature parity)을 확보할 때까지 GitLab은 이 기능을 제거하지 않습니다. 제거를 가로막는 요인에 대한 자세한 내용은 이슈 199를 참고합니다.

이 폐기에 대한 업데이트와 자세한 내용은 에픽 8을 참고합니다.

GitLab.com의 Kubernetes 인증서 기반 연동#

  • GitLab 14.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Kubernetes와의 인증서 기반 연동은 폐기되어 제거될 예정입니다. GitLab.com 사용자의 경우, GitLab 15.0부터 새 네임스페이스에서는 인증서 기반 방식으로 GitLab과 클러스터를 연동할 수 없습니다. 기존 사용자에 대한 연동은 네임스페이스별로 활성화됩니다.

더 견고하고 안전하며 향후 지속될 신뢰할 수 있는 Kubernetes 연동을 위해 Kubernetes 용 에이전트를 사용해 Kubernetes 클러스터를 GitLab에 연결할 것을 권장합니다. 마이그레이션 방법은?

이 폐기에 대한 업데이트와 자세한 내용은 이 에픽을 참고합니다.

GitLab Self-Managed 고객은 기능 플래그를 사용해 이 기능을 계속 사용할 수 있습니다.

GraphQL dependencyProxyTotalSizeInBytes 필드 폐기#

  • GitLab 16.1에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL을 사용해 GitLab Dependency Proxy가 사용하는 스토리지 용량을 조회할 수 있습니다. 다만 dependencyProxyTotalSizeInBytes 필드는 약 2기가바이트로 제한되어 있어, Dependency Proxy에는 항상 충분한 크기가 아닙니다. 그 결과 dependencyProxyTotalSizeInBytes는 폐기 예정입니다.

대신 GitLab 16.1에서 도입된 dependencyProxyTotalSizeBytes를 사용합니다.

OWASP top 10 2017 기준 그룹 취약점 리포트 그룹화가 폐기됩니다#

  • GitLab 17.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

OWASP top 10 2017 기준 취약점 리포트 그룹화는 폐기 예정이며, OWASP top 10 2021 기준 그룹화로 대체됩니다. 앞으로는 취약점 리포트 그룹화에 최신 버전의 OWASP top 10을 지원할 예정입니다. 이 변경과 함께, 이 기능이 사용하는 2017 GraphQL API 열거형(enum)도 폐기하여 제거합니다. 추가 세부 사항은 이 이슈에 포함되어 있습니다.

파이프라인 변수 사용에 대한 기본 보안 강화#

  • GitLab 17.7에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab은 기본 보안(secure-by-default) 관행을 지향합니다. 이를 위해 CI/CD 변수 사용과 관련한 최소 권한 원칙을 지원하도록 일부 변경을 진행합니다. 현재는 Developer 권한 이상의 사용자가 별도의 확인이나 옵트인 없이 기본적으로 파이프라인 변수를 사용할 수 있습니다.

최소 권한을 권장 설정인 Owner 전용 또는 아무도 허용 안 함으로 상향하면, 파이프라인 변수에 대해 더 안전한 기본 환경을 지금 바로 사용할 수 있습니다. 17.7부터 GitLab.com의 새 네임스페이스에 있는 모든 신규 프로젝트에서 no one allowed가 기본값입니다.

OpenTofu CI/CD 템플릿#

  • GitLab 17.1에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

당시 GitLab Self-Managed에서 CI/CD 컴포넌트를 아직 사용할 수 없었기 때문에, 16.8에서 OpenTofu CI/CD 템플릿을 도입했습니다. GitLab Self-Managed 용 GitLab CI/CD 컴포넌트가 도입됨에 따라 중복되는 OpenTofu CI/CD 템플릿을 제거하고 CI/CD 컴포넌트를 사용하도록 전환합니다.

CI/CD 템플릿에서 컴포넌트로 마이그레이션하는 방법은 OpenTofu 컴포넌트 문서를 참고합니다.

파이프라인 실행 정책의 inject_ci 전략이 inject_policy로 대체됩니다#

  • GitLab 17.11에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

파이프라인 실행 정책에 커스텀 스테이지(custom stages)가 도입됨에 따라(GitLab 17.9부터 제공), 폐기 예정인 inject_ci를 대체할 구성 옵션 inject_policy를 도입했습니다.

이 새로운 전략을 통해, inject_ci 전략을 사용하는 기존 파이프라인 실행 정책을 가진 사용자도 커스텀 스테이지 기능을 점진적으로 적용할 수 있습니다.

예정된 제거에 대비하려면, inject_ci를 사용하는 모든 파이프라인 실행 정책을 inject_policy를 사용하도록 업데이트합니다.

일반적인 User, Project, Group API 엔드포인트에 대한 요청 제한#

  • GitLab 17.4에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

자주 사용되는 User, Project, Group 엔드포인트에 대해 요청 제한이 기본으로 활성화됩니다. 이러한 요청 제한을 기본으로 활성화하면 전체 시스템 안정성을 개선하는 데 도움이 될 수 있습니다. 과도한 API 사용이 전반적인 사용자 경험에 부정적인 영향을 줄 가능성을 줄이기 때문입니다. 제한을 초과하는 요청은 HTTP 429 오류 코드와 추가 요청 제한 헤더를 반환합니다.

기본 요청 제한은 GitLab.com에서 관측되는 요청률을 기준으로, 대부분의 사용에 지장이 없도록 의도적으로 다소 높게 설정되었습니다. 인스턴스 관리자는 이미 적용되어 있는 다른 요청 제한과 마찬가지로, 관리자 영역에서 필요에 따라 제한을 더 높이거나 낮게 설정할 수 있습니다.

ContainerRepository GraphQL API의 migrationState 필드 제거#

  • GitLab 17.6에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab GraphQL API의 ContainerRepositoryType에 있는 migrationState 필드는 폐기 예정입니다. 이 폐기는 API를 간소화하고 개선하려는 노력의 일환입니다.

이 변경에 대비하려면, ContainerRepositoryType과 상호작용하는 GraphQL 쿼리를 검토하고 업데이트할 것을 권장합니다. migrationState 필드에 대한 참조를 모두 제거하고 그에 맞게 애플리케이션 로직을 조정합니다.

GraphQL에서 previousStageJobsOrNeeds 제거#

  • GitLab 17.0에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL의 previousStageJobsOrNeeds 필드는 previousStageJobs 필드와 needs 필드로 대체되어 제거됩니다.

PipelineSchedulePermissions의 GraphQL 필드 take_ownership_pipeline_schedule를 admin_pipeline_schedule로 교체#

  • GitLab 15.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GraphQL 필드 take_ownership_pipeline_schedule는 폐기 예정입니다. 사용자가 파이프라인 스케줄의 소유권을 가져갈 수 있는지 확인하려면 대신 admin_pipeline_schedule 필드를 사용합니다.

Yarn 프로젝트의 의존성 스캔에 대한 취약점 해결#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gemnasium 분석기가 의존성 스캔용으로 제공하는 Yarn 프로젝트용 취약점 해결(Resolve a vulnerability) 기능은 GitLab 17.9에서 폐기 예정입니다.

이 기능은 Gemnasium 분석기를 사용하는 동안에는 계속 작동하지만, 새로운 의존성 스캔 분석기로 마이그레이션한 후에는 사용할 수 없습니다. 자세한 내용은 마이그레이션 가이드를 참고합니다.

대체 기능은 Auto Remediation 비전의 일환으로 계획되어 있지만, 제공 일정은 아직 정해지지 않았습니다.

공개 API의 구독 관련 엔드포인트가 폐기됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

공개 REST API의 다음 엔드포인트가 제거됩니다.

  • PUT /api/v4/user/:id/credit_card_validation
  • POST /api/v4/namespaces/:namespace_id/minutes
  • PATCH /api/v4/namespaces/:previous_namespace_id/minutes/move/:target_namespace_id
  • GET /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • PUT /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • POST /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  • POST /api/v4/namespaces/:id/gitlab_subscription
  • PUT /api/v4/namespaces/:id/gitlab_subscription
  • PUT /api/v4/namespaces/:id

이 엔드포인트들은 Subscription Portal 이 GitLab.com의 구독 정보를 관리하는 데 사용해 왔습니다. 이들의 사용은 향후 도입될 Cells 아키텍처를 지원하기 위해 JWT 인증을 사용하는 내부 엔드포인트로 대체되었습니다. 공개 API의 엔드포인트는 실수로 다시 사용되는 일을 막고, 기능이 어긋나기 시작하면서 발생하는 유지 관리 부담을 줄이기 위해 제거됩니다.

이 엔드포인트는 내부적으로 사용되던 것이므로, 이 변경으로 인한 영향은 없습니다.

agentk 컨테이너 레지스트리가 Cloud Native GitLab으로 이전됩니다#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

agentk 컨테이너 레지스트리를 프로젝트 전용 레지스트리에서 Cloud Native GitLab(CNG) 레지스트리로 이전합니다. GitLab 18.0부터 CNG에서 빌드된 agentk 이미지는 프로젝트 전용 레지스트리로 미러링됩니다. 새 이미지는 amd64, arm64 아키텍처만 지원한다는 점을 제외하면 기존 이미지와 동일합니다. 32비트 arm 아키텍처는 지원하지 않습니다. GitLab 19.0부터 프로젝트 전용 레지스트리는 agentk 업데이트를 받지 않습니다. agentk 컨테이너를 로컬 레지스트리로 미러링하는 경우, 미러 소스를 CNG 레지스트리로 변경해야 합니다.

공식 GitLab Agent Helm 차트를 사용하는 경우, GitLab 18.0에서 새로운 agentk 이미지가 새 위치에서 매끄럽게 배포되기 시작합니다.

CI/CD job 토큰의 JWT 표준 전환#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

GitLab 19.0에서 CI/CD job 토큰은 문자열 토큰 형식에서 JWT 토큰 형식으로 전환됩니다. 이 변경은 모든 프로젝트의 신규 및 기존 CI/CD job 토큰에 영향을 줍니다. 문제가 발생하면 GitLab 20.0 릴리스까지는 CI/CD 토큰에 레거시 형식을 계속 사용할 수 있습니다.

알려진 문제:

  1. GitLab Runner의 AWS Fargate Drive 0.5.0 이하 버전은 JWT 표준과 호환되지 않습니다. job 이 file name too long 오류와 함께 실패합니다. AWS Fargate 커스텀 executor 드라이버 사용자는 0.5.1 이상으로 업그레이드해야 합니다. 마이그레이션 방법은 문서를 참고합니다.
  2. 훨씬 길어진 JWT 표준으로 인해 일부 CI/CD 구성 파일에서 사용하는 echo $CI_JOB_TOKEN | base64 명령이 깨집니다. 대신 echo $CI_JOB_TOKEN | base64 -w0 명령을 사용할 수 있습니다.

Gitaly의 bin_path, use_bundled_binaries 구성 옵션#

  • GitLab 18.2에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

Gitaly에서 bin_path, use_bundled_binaries 구성 옵션 사용에 대한 지원은 폐기 예정이며 GitLab 19.0에서 제거됩니다.

Gitaly가 제공하는 Git 바이너리만이 Git을 실행하는 유일한 지원 방식이 됩니다.

mergeTrainIndex, mergeTrainsCount GraphQL 필드 폐기#

  • GitLab 17.5에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

MergeRequest의 GraphQL 필드 mergeTrainIndex, mergeTrainsCount는 폐기 예정입니다. 머지 트레인(merge train)에서 머지 리퀘스트의 위치를 확인하려면 대신 MergeTrainCar의 index 필드를 사용합니다. 머지 트레인에 포함된 MR 수를 구하려면 대신 MergeTrains::TrainType의 cars에서 count를 사용합니다.

scanResultPolicies GraphQL 필드가 폐기됩니다#

  • GitLab 17.8에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 원래 마일스톤에서 제외되었으며 재검토 중입니다.

16.10에서 scan result policies는 정책 유형의 범위와 기능 변화를 더 정확히 반영하도록 merge request approval policies로 이름이 변경되었습니다.

이에 따라 GraphQL 엔드포인트도 업데이트했습니다. scanResultPolicies 대신 approvalPolicies를 사용합니다.

취소된 변경 사항#

다음 변경 사항은 취소되었습니다.

컨테이너 스캔 기본 심각도 임계값이 medium으로 설정#

  • GitLab 17.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

컨테이너 스캔 보안 기능은 많은 보안 발견 항목(finding)을 생성하며, 이 양은 엔지니어링 팀이 관리하기 어려운 경우가 많습니다. 심각도 임계값을 medium으로 변경함으로써, medium 미만의 심각도를 가진 발견 항목은 보고되지 않는 더 합리적인 기본값을 사용자에게 제공합니다. GitLab 18.0부터 환경 변수 CS_SEVERITY_THRESHOLD의 기본값이 unknown 대신 medium으로 설정됩니다. 그 결과 low, unknown 심각도 수준의 보안 발견 항목은 기본적으로 더 이상 보고되지 않습니다. 따라서 기본 브랜치에서 이전에 보고되었던 이러한 심각도의 취약점은 다음 컨테이너 스캔 실행 시 더 이상 탐지되지 않음으로 표시됩니다. 이러한 발견 항목을 계속 표시하려면 CS_SEVERITY_THRESHOLD 변수를 원하는 수준으로 설정해야 합니다.

License Scanning CI/CD 아티팩트 리포트 유형 폐기#

  • GitLab 16.9에서 발표
  • 이 변경 사항에 대해 논의하거나 더 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

CI/CD 아티팩트 리포트(artifact report) 유형은 GitLab 16.9에서 폐기 예정이며 GitLab 18.0에서 제거됩니다. 이 키워드를 사용하는 CI/CD 구성은 GitLab 18.0에서 작동을 멈춥니다.

이 아티팩트 리포트 유형은 GitLab 16.3에서 레거시 License Scanning CI/CD job 이 제거됨에 따라 더 이상 사용되지 않습니다. 대신 CycloneDX 파일의 라이선스 스캔을 사용해야 합니다.

CI/CD 템플릿에서 지원 종료된 SAST job 이 제거됩니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

GitLab 18.0에서는 이전 릴리스에서 지원 종료된 분석기 job을 제거하도록 SAST CI/CD 템플릿을 업데이트할 예정입니다. 다음 job 이 SAST.gitlab-ci.yml 및 SAST.latest.gitlab-ci.yml에서 제거됩니다:

각 분석기가 지원 종료되었을 당시, 기본적으로 실행되지 않도록 해당 job의 rules를 업데이트하고 업데이트 배포를 중단했습니다. 다만 이러한 job을 계속 사용하거나 파이프라인에 이러한 job 이 존재하는 것에 의존하도록 템플릿을 커스터마이징했을 수 있습니다. 위 job에 의존하는 커스터마이징이 있다면, CI/CD 파이프라인 중단을 방지하기 위해 18.0으로 업그레이드하기 전에 필요한 작업을 수행합니다.

Secure 컨테이너 레지스트리의 공개 사용이 폐기됩니다#

  • GitLab 17.4에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

registry.gitlab.com/gitlab-org/security-products/ 아래의 컨테이너 레지스트리는 GitLab 18.0에서 더 이상 액세스할 수 없습니다. GitLab 14.8 부터 올바른 위치는 registry.gitlab.com/security-products 아래입니다(주소에 gitlab-org가 없음에 유의합니다).

이 변경 사항은 GitLab 취약점 스캐너의 릴리스 프로세스 보안을 개선합니다.

사용자는 registry.gitlab.com/security-products/ 아래의 동등한 레지스트리를 사용하는 것이 권장됩니다. 이는 GitLab 보안 스캐너 이미지의 정규 위치입니다. 관련 GitLab CI 템플릿은 이미 이 위치를 사용하므로, 수정하지 않은 템플릿을 사용하는 사용자는 변경할 필요가 없습니다.

오프라인 배포 환경에서는 필요한 스캐너 이미지를 미러링할 때 올바른 위치가 사용되고 있는지 확인하기 위해 특정 스캐너 안내를 검토해야 합니다.

SAST job 이 더 이상 전역 캐시 설정을 사용하지 않습니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

GitLab 18.0에서는 기본적으로 CI/CD job 캐시 사용을 명시적으로 비활성화 하도록 SAST 및 IaC 스캐닝을 업데이트할 예정입니다.

이 변경 사항은 다음에 대한 CI/CD 템플릿에 영향을 미칩니다.

  • SAST: SAST.gitlab-ci.yml.
  • IaC 스캐닝: SAST-IaC.gitlab-ci.yml.

latest 템플릿인 SAST.latest.gitlab-ci.yml 및 SAST-IaC.latest.gitlab-ci.yml은 이미 업데이트되었습니다. 이러한 템플릿 버전에 대한 자세한 내용은 stable 및 latest 템플릿을 참고합니다.

대부분의 프로젝트에서 캐시 디렉터리는 스캔 대상 범위에 포함되지 않으므로, 캐시를 가져오면 타임아웃이나 오탐 결과가 발생할 수 있습니다.

프로젝트를 스캔할 때 캐시를 사용해야 한다면, 프로젝트의 CI 설정에서 cache 속성을 재정의 하여 이전 동작을 복원할 수 있습니다.

시크릿 탐지 분석기가 기본적으로 root 사용자로 실행되지 않습니다#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

시크릿 탐지 분석기에 대한 이 계획된 변경 사항은 취소되었습니다. 기본적으로 root 사용자를 계속 사용할 수 있습니다.

SpotBugs 스캔의 일부로 프로젝트 빌드 지원#

  • GitLab 17.9에서 발표되었습니다.
  • 이 변경 사항에 대해 논의하거나 자세히 알아보려면 폐기 이슈를 참고합니다.
Note

이 변경 사항은 취소되었습니다.

SpotBugs SAST 분석기는 스캔할 아티팩트가 없을 때 빌드를 수행할 수 있습니다. 이는 대체로 간단한 프로젝트에서는 잘 동작하지만, 더 복잡한 빌드에서는 실패할 수 있습니다.

GitLab 18.0부터, SpotBugs 분석기의 빌드 실패를 해결하려면 다음을 수행해야 합니다.

  1. 프로젝트를 사전 컴파일 합니다.
  2. 스캔하려는 아티팩트를 분석기에 전달합니다.

이는 기능 변경이 아니므로, 명확성을 위해 이 발표를 "Cancelled(취소됨)"로 표시했습니다.

Disclaimer

이 페이지에는 개발 중인 제품, 기능에 대한 정보가 포함되어 있습니다. 이 정보는 참고 목적으로만 제공되며, 구매 또는 계획 시 이 정보에 의존하지 마십시오.