저장소 X-Ray

Tier: 프리미엄 with GitLab Duo Pro 또는 얼티메이트 with GitLab Duo Pro 또는 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는 코드 어시스턴트가 프로젝트에서 사용된 코딩 패턴, 스타일 및 기술과 매치되는 추천을 제공합니다. 이는 더 매끄럽게 통합되고 해당 스택에 대한 모베스트 프랙티스를 따르는 코드 추천으로 이어집니다.

참고: 저장소 X-Ray는 코드 완성 요청이 아닌 코드 생성 요청만 향상시킵니다.

저장소 X-Ray 동작 방식

프로젝트의 기본 브랜치로 새로운 커밋이 푸시되면, 저장소 X-Ray는 자동으로 해당 저장소의 적용 가능한 구성 파일을 스캔하고 파싱하는 백그라운드 작업을 트리거합니다.

일반적으로, 각 프로젝트에서 한 번에 하나의 스캔 작업이 실행됩니다. 따라서 스캔이 이미 진행 중인 동안 두 번째 스캔이 트리거되면, 두 번째 스캔은 첫 번째 스캔이 완료될 때까지 대기한 후 실행됩니다. 이로 인해 최신 구성 파일 데이터가 파싱되어 데이터베이스에서 업데이트되기까지 약간의 지연이 발생할 수 있습니다.

저장소 X-Ray 활성화

  • GitLab 17.4(https://gitlab.com/gitlab-org/gitlab/-/issues/476180)에서 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 파이프라인에서 저장소 X-Ray 활성화 (지원 중단됨)

경고: 이 기능은 17.4에서 지원이 중단되었습니다.

전제 조건:

  • 프로젝트에 GitLab Duo Code Suggestions에 액세스해야 합니다.
  • 저장소 X-Ray는 GitLab Runner를 통해 분석 파이프라인을 실행하기 때문에 GitLab Runner가 설정되고 프로젝트에서 활성화되어 있어야 합니다.

저장소 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 환경 변수는 다음을 정의합니다:
    • 보고서의 출력 디렉토리.
    • 아티팩트가 업로드되는 경로.
  • 추가된 규칙은 작업을 기본 브랜치에만 제한합니다. 작업을 이러한 방식으로 제한하면 개발 변경 사항이 프로덕션 Code Suggestions에 사용되는 기준선 X-Ray 데이터에 영향을 미치지 않도록 합니다.

초기 x-ray 작업이 완료되고 저장소 분석 보고서를 업로드한 후 추가 조치가 필요하지 않습니다. 저장소 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 추가 기능이 있는 경우.