저장소 X-Ray
- 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는 자동으로 해당 저장소의 적용 가능한 구성 파일을 스캔하고 파싱하는 백그라운드 작업을 트리거합니다.
일반적으로, 각 프로젝트에서 한 번에 하나의 스캔 작업이 실행됩니다. 따라서 스캔이 이미 진행 중인 동안 두 번째 스캔이 트리거되면, 두 번째 스캔은 첫 번째 스캔이 완료될 때까지 대기한 후 실행됩니다. 이로 인해 최신 구성 파일 데이터가 파싱되어 데이터베이스에서 업데이트되기까지 약간의 지연이 발생할 수 있습니다.
저장소 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 이상 |
각주:
- 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 추가 기능이 있는 경우.