개요
Git 커넥터는 Git 리포지토리의 파일을 가져와서 Fess 인덱스에 등록하는 기능을 제공합니다.
이 기능을 사용하려면 fess-ds-git 플러그인이 필요합니다.
지원 리포지토리
GitHub(퍼블릭/프라이빗)
GitLab(퍼블릭/프라이빗)
Bitbucket(퍼블릭/프라이빗)
로컬 Git 리포지토리
기타 Git 호스팅 서비스
전제조건
플러그인 설치가 필요합니다
프라이빗 리포지토리의 경우 인증 정보가 필요합니다
리포지토리에 대한 읽기 액세스 권한이 필요합니다
플러그인 설치
관리 화면의 “시스템” → “플러그인”에서 설치합니다.
또는 자세한 내용은 플러그인 를 참조하세요.
설정 방법
관리 화면에서 “크롤러” → “데이터 스토어” → “새로 만들기”에서 설정합니다.
기본 설정
| 항목 | 설정 예 |
|---|---|
| 이름 | Project Git Repository |
| 핸들러 이름 | GitDataStore |
| 활성화 | 켬 |
파라미터 설정
퍼블릭 리포지토리 예:
프라이빗 리포지토리 예(인증 있음):
파라미터 목록
| 파라미터 | 필수 | 설명 |
|---|---|---|
uri | 예 | Git 리포지토리의 URI(clone용) |
base_url | 아니오 | 파일 표시용 기본 URL. 설정하지 않으면 URL이 비어 있고 삭제된 파일의 자동 삭제도 비활성화됩니다 |
username | 아니오 | Git 인증 사용자 이름. URI에 인증 정보를 포함하는 대안으로 ``password``와 함께 사용합니다 |
password | 아니오 | Git 인증 비밀번호 또는 토큰. ``username``과 함께 사용합니다 |
extractors | 아니오 | MIME 타입별 추출기 설정 |
default_extractor | 아니오 | MIME 패턴이 일치하지 않을 때의 폴백 추출기 (기본값: tikaExtractor) |
prev_commit_id | 아니오 | 이전 커밋 ID(차등 크롤링용). 크롤링 성공 후 자동으로 업데이트됩니다 |
commit_id | 아니오 | 대상 커밋 ID (기본값: HEAD). 브랜치 또는 태그 지정 가능 |
ref_specs | 아니오 | Git ref 스펙 (기본값: +refs/heads/*:refs/heads/*) |
repository_path | 아니오 | 로컬 리포지토리 경로. 설정하지 않으면 임시 디렉토리가 생성되고 크롤링 후 삭제됩니다 |
include_pattern | 아니오 | 파일 경로 포함 필터 (정규표현식) |
exclude_pattern | 아니오 | 파일 경로 제외 필터 (정규표현식) |
max_size | 아니오 | 인덱싱할 최대 파일 크기(바이트 단위, 기본값: 10000000) |
cache_threshold | 아니오 | 메모리와 디스크 버퍼링 전환 임계값(바이트 단위, 기본값: 1000000) |
스크립트 설정
사용 가능한 필드
| 필드 | 설명 |
|---|---|
url | 파일 URL |
path | 리포지토리 내 파일 경로 |
name | 파일명 |
content | 파일 텍스트 콘텐츠 |
contentLength | 콘텐츠 길이 |
timestamp | 최종 수정 일시 |
mimetype | 파일 MIME 타입 |
author | 최종 커밋 작성자 정보 (PersonIdent) |
committer | 커미터 정보 (PersonIdent). author와 다를 수 있습니다 |
uri | Git 리포지토리 URI |
Git 리포지토리 인증
GitHub Personal Access Token
1. GitHub에서 Personal Access Token 생성
https://github.com/settings/tokens 에 접속:
“Generate new token” → “Generate new token (classic)” 클릭
토큰명 입력(예: Fess Crawler)
범위에서 “repo” 체크
“Generate token” 클릭
생성된 토큰 복사
2. URI에 인증 정보 포함
GitLab Private Token
1. GitLab에서 Access Token 생성
GitLab의 User Settings → Access Tokens:
토큰명 입력
범위에서 “read_repository” 체크
“Create personal access token” 클릭
생성된 토큰 복사
2. URI에 인증 정보 포함
SSH 인증
SSH 키를 사용하는 경우:
참고
SSH 인증을 사용하는 경우, |Fess|를 실행하는 사용자의 SSH 키를 설정해야 합니다.
추출기 설정
MIME 타입별 추출기
extractors 파라미터로 파일 타입별 추출기를 지정:
형식: <MIME 타입 정규표현식>:<추출기명>,
기본 추출기
textExtractor- 텍스트 파일용tikaExtractor- 바이너리 파일용(PDF, Word 등)
텍스트 파일만 크롤링
모든 파일 크롤링
특정 파일 타입만
차등 크롤링
이전 커밋 이후 변경 사항만 크롤링
초기 크롤링 후 ``prev_commit_id``에 이전 커밋 ID를 설정:
참고
``prev_commit_id``는 크롤링 성공 후 자동으로 최신 커밋 ID로 업데이트됩니다. 초기 크롤링 시 비워두면 모든 파일이 처리되고, 이후 크롤링에서는 변경 사항만 처리됩니다.
삭제된 파일 처리
base_url``이 설정된 경우, Git DiffEntry에서 감지된 삭제 파일(``ChangeType.DELETE)은 자동으로 인덱스에서 제거됩니다.
사용 예
GitHub 퍼블릭 리포지토리
파라미터:
스크립트:
GitHub 프라이빗 리포지토리
파라미터:
스크립트:
GitLab(셀프 호스팅)
파라미터:
스크립트:
문서만 크롤링(Markdown 파일)
파라미터:
스크립트:
특정 디렉토리만 크롤링
스크립트로 필터링:
문제 해결
인증 오류
증상: Authentication failed 또는 Not authorized
확인 사항:
Personal Access Token이 올바른지 확인
토큰에 적절한 권한이 있는지 확인(
repo범위)URI 형식이 올바른지 확인:
토큰 유효기간 확인
리포지토리를 찾을 수 없음
증상: Repository not found
확인 사항:
리포지토리 URL이 올바른지 확인
리포지토리가 존재하고 삭제되지 않았는지 확인
인증 정보가 올바른지 확인
리포지토리에 대한 액세스 권한이 있는지 확인
파일을 가져올 수 없음
증상: 크롤링은 성공하지만 파일이 0개
확인 사항:
extractors설정이 적절한지 확인리포지토리에 파일이 존재하는지 확인
스크립트 설정이 올바른지 확인
대상 브랜치에 파일이 존재하는지 확인
MIME 타입 오류
증상: 특정 파일이 크롤링되지 않음
해결 방법:
추출기 설정 조정:
대형 리포지토리
증상: 크롤링에 시간이 오래 걸리거나 메모리 부족
해결 방법:
``extractors``로 대상 파일 제한
스크립트로 특정 디렉토리만 필터링
차등 크롤링 사용(
prev_commit_id설정)크롤링 간격 조정
브랜치 지정
기본 브랜치가 아닌 다른 브랜치를 크롤링하려면 commit_id 파라미터로 브랜치 이름이나 태그를 지정합니다:
URL 생성
base_url 설정 패턴
GitHub:
GitLab:
Bitbucket:
``base_url``과 파일 경로가 결합되어 URL이 생성됩니다.
스크립트에서 URL 생성
또는 커스텀 URL:
참고 정보
데이터스토어 커넥터 개요 - 데이터 스토어 커넥터 개요
데이터베이스 커넥터 - 데이터베이스 커넥터
데이터 저장소 크롤링 - 데이터 스토어 설정 가이드