레포지토리 X-Ray

Tier: Premium with GitLab Duo Pro or Ultimate with GitLab Duo Pro or Enterprise
Offering: GitLab.com, Self-managed

레포지토리 X-Ray는 코드 생성 요청을 자동으로 보강하여 GitLab Duo Code Suggestions에 대한 프로젝트의 종속성에 대한 추가 컨텍스트를 제공하여 코드 추천의 정확성과 관련성을 개선합니다.

레포지토리 X-Ray는 다음을 통해 코드 어시스턴트에 프로젝트의 코드베이스 및 종속성에 대한 더 많은 통찰력을 제공합니다:

  • 종속성 관리자 구성 파일 검색 (예: Gemfile.lock, package.json, go.mod).
  • 콘텐츠에서 라이브러리 목록 추출.
  • 추출된 목록을 GitLab Duo Code Suggestions의 코드 생성 요청에 사용할 추가 컨텍스트로 제공.

사용 중인 라이브러리 및 기타 종속성을 이해함으로써, 레포지토리 X-Ray는 코드 어시스턴트가 프로젝트에서 사용되는 코딩 패턴, 스타일 및 기술에 맞게 제안을 조정하도록 도와줍니다. 이로 인해 코드 제안이 보다 매끄럽게 통합되고 주어진 스택에 대한 모범 사례를 따르게 됩니다.

note
레포지토리 X-Ray는 코드 생성 요청만 향상시키고 코드 완성 요청은 향상시키지 않습니다.

레포지토리 X-Ray 작동 방식

프로젝트의 기본 브랜치에 새 커밋이 푸시되면 레포지토리 X-Ray가 백그라운드 작업을 트리거하여 자동으로 레포지토리의 적용 가능한 구성 파일을 스캔하고 구문 분석합니다.

일반적으로 각 프로젝트에서 한 번에 하나의 스캔 작업만 실행됩니다. 이는 스캔이 진행 중일 때 두 번째 스캔이 트리거되면, 두 번째 스캔이 첫 번째 스캔이 완료될 때까지 기다린다는 것을 의미합니다. 이로 인해 최신 구성 파일 데이터가 구문 분석되고 데이터베이스에 업데이트되기까지 작은 지연이 발생할 수 있습니다.

레포지토리 X-Ray 활성화

  • 도입됨 GitLab 17.4에서 ai_enable_internal_repository_xray_service라는 플래그와 함께. 기본적으로 비활성화되어 있습니다.

이 기능의 가용성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 이력을 참조하세요.
이 기능은 테스트용으로 제공되지만, 프로덕션 사용을 위한 준비가 되어 있지 않습니다.

레포지토리 X-Ray 서비스는 다음 경우 자동으로 활성화됩니다:

  • ai_enable_internal_repository_xray_service 기능 플래그를 활성화한 경우.
  • 프로젝트가 GitLab Duo Code Suggestions에 접근할 수 있는 경우.

지원되는 언어 및 종속성 관리자

레포지토리 X-Ray는 레포지토리의 루트에서 최대 두 개의 디렉터리 수준을 검색합니다. 예를 들어, Gemfile.lock, api/Gemfile.lock 또는 api/client/Gemfile.lock을 지원하지만 api/v1/client/Gemfile.lock은 지원하지 않습니다. 각 언어에 대해 첫 번째 일치하는 종속성 관리자만 처리됩니다. 가능한 경우, 잠금 파일은 비잠금 파일보다 우선시됩니다.

언어 종속성 관리자 구성 파일 GitLab 버전
C/C++ Conan conanfile.py 17.5 이상
C/C++ Conan conanfile.txt 17.5 이상
C/C++ vcpkg vcpkg.json 17.5 이상
C# NuGet *.csproj 17.5 이상
Go Go Modules go.mod 17.4 이상
Java Gradle build.gradle 17.4 이상
Java Maven pom.xml 17.4 이상
JavaScript NPM package-lock.json, package.json 17.5 이상
Kotlin Gradle build.gradle.kts 17.5 이상
PHP Composer composer.lock, composer.json 17.5 이상
Python Conda environment.yml 17.5 이상
Python Pip *requirements*.txt 1 17.5 이상
Python Poetry poetry.lock, pyproject.toml 17.5 이상
Ruby RubyGems Gemfile.lock 17.4 이상

각주:

  1. Python Pip의 경우 *requirements*.txt 패턴과 일치하는 모든 구성 파일이 처리됩니다.

CI 파이프라인에서 Repository X-Ray 활성화하기 (더 이상 사용되지 않음)

경고:

이 기능은 더 이상 사용되지 않음으로 GitLab 17.4에서 제거되었습니다.

사전 요구 사항:

  • 이 프로젝트에서 GitLab Duo Code Suggestions에 액세스할 수 있어야 합니다.

  • GitLab Runner는 프로젝트에 설정되고 활성화되어야 하며, Repository X-Ray는 GitLab 러너를 사용하여 분석 파이프라인을 실행합니다.

Repository X-Ray를 활성화하려면 프로젝트의 .gitlab-ci.yml에 다음 정의 작업을 추가하십시오.

xray:
  stage: build
  image: registry.gitlab.com/gitlab-org/code-creation/repository-x-ray:latest
  allow_failure: true
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  variables:
    OUTPUT_DIR: reports
  script:
    - x-ray-scan -p "$CI_PROJECT_DIR" -o "$OUTPUT_DIR"
  artifacts:
    reports:
      repository_xray: "$OUTPUT_DIR/*/*.json"
  • $OUTPUT_DIR 환경 변수는 다음을 정의합니다:

    • 보고서의 출력 디렉토리.

    • 아티팩트가 업로드되는 경로.

  • 추가된 규칙은 작업을 기본 브랜치로 제한합니다. 이렇게 작업을 제한하면 개발 변경 사항이 생산 코드 제안에 사용되는 기준 X-Ray 데이터에 영향을 미치지 않도록 보장합니다.

초기 x-ray 작업이 완료되고 저장소 분석 보고서를 업로드한 후에는 추가 작업이 필요하지 않습니다. Repository X-Ray는 이후 모든 코드 생성 요청을 자동으로 향상시킵니다.

프로젝트에 대한 X-Ray 데이터는 xray 작업이 포함된 CI/CD 파이프라인이 실행될 때마다 업데이트됩니다. 파이프라인 구성 및 트리거에 대해 더 알아보려면 파이프라인 문서를 참조하십시오.

지원되는 언어 및 패키지 관리자

언어 패키지 관리자 구성 파일
Go Go Modules go.mod
JavaScript NPM, Yarn package.json
Ruby RubyGems Gemfile.lock
Python Poetry pyproject.toml
Python Pip requirements.txt
Python Conda environment.yml
PHP Composer composer.json
Java Maven pom.xml
Java Gradle build.gradle
Kotlin Gradle build.gradle.kts
C# NuGet *.csproj
C/C++ Conan conanfile.txt
C/C++ Conan conanfile.py
C/C++ vcpkg vcpkg.json

문제 해결

Repository X-Ray 실행 시 401: Unauthorized 오류

Repository X-Ray를 실행할 때 401: Unauthorized라는 오류가 발생할 수 있습니다.

Duo Pro 추가 기능은 해당 추가 기능을 구매할 때 그룹에 연결됩니다. 오류를 해결하려면 현재 프로젝트가 Duo Pro 추가 기능이 있는 그룹의 일부인지 확인하십시오.

이 링크는 다음 중 하나일 수 있습니다:

  • 직접 링크, 즉 프로젝트가 Duo Pro 추가 기능이 있는 그룹에 포함되어 있습니다.

  • 간접 링크, 예를 들어 현재 프로젝트 그룹의 상위 그룹이 Duo Pro 추가 기능이 있습니다.