- 레포지토리 X-Ray 작동 방식
- 레포지토리 X-Ray 활성화
- 지원되는 언어 및 종속성 관리자
- CI 파이프라인에서 Repository X-Ray 활성화하기 (더 이상 사용되지 않음)
레포지토리 X-Ray
Offering: GitLab.com, Self-managed
- 도입됨 GitLab 16.7에서.
레포지토리 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 활성화
- 도입됨 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 이상 |
각주:
- 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 추가 기능이 있습니다.