본문 바로가기
WIKI 기술 지식 베이스

lakeFS에 기여하기

원문 보기 위키 갱신

프로젝트에 기여하려고 관심을 가져 주셔서 고마워요. 버그 리포트든, 새 기능이든, 수정이든, 문서 보충이든, 커뮤니티의 피드백과 기여를 아주 소중히 여겨요. 이슈나 풀 리퀘스트를 보내기 전에 이 문서를 꼭 읽어 주세요. 여러분의 버그 리포트나 기여에 효과적으로 대응하는 데 필요한 모든 정보를 확보할 수 있거든요.

출처: 문서

본문

우리 프로젝트에 기여하려고 관심을 가져 주셔서 고마워요. 버그 리포트든, 새 기능이든, 수정이든, 추가 문서든, 커뮤니티 여러분의 피드백과 기여를 크게 감사히 생각해요.

이슈나 풀 리퀘스트를 제출하기 전에 이 문서를 끝까지 읽어 주세요. 여러분의 버그 리포트나 기여에 효과적으로 대응하는 데 필요한 정보를 모두 갖출 수 있도록요.

시작할 지점을 모르겠나요?

Slack의 #dev 채널로 오세요. 시작을 도와줄 거예요. OSS 프로젝트에 기여하는 방법을 다룬 이 무료 시리즈도 추천해요.

시작하기

시작하기 전에 부탁드려요:

  • 행동 강령을 확인해 주세요.

  • 첫 풀 리퀘스트를 만들 때 lakeFS CLA에 서명해 주세요(개인 / 법인)

  • 보안 관련 이슈는 [email protected]로 직접 보내 주세요.

  • 기여에는 대응하는 GitHub 이슈가 있어야 해요.

  • 큰 기여를 하기 전에 Slack의 #dev 채널로 먼저 연락 주세요. 다른 사람이 같은 기능을 작업 중이지 않게 확인해 줄 거예요.

환경 설정하기

이 섹션은 macOS와 Linux(Fedora 32, Ubuntu 20.04)에서 테스트됐어요 - 여러분의 환경에서는 결과가 다를 수 있어요

Go 릴리스 워크플로에 현재 사용 중인 Go와 Node.js 버전이 go-version과 node-version으로 호환되게 기록되어 있어요. Java 워크플로는 Maven 3.8.x를 사용해요(하지만 최근 버전의 Maven이면 어떤 것이든 동작할 거예요).

  • OS에 필요한 의존성을 설치하세요:

  • Git

  • GNU make (apt나 brew 같은 OS 패키지 매니저로 설치하는 게 가장 좋을 거예요)

  • Docker

  • Go

  • Node.js & npm

  • Java 8

  • Apple Silicon Mac 사용자는 Azul Zulu Builds for Java JDK에서 설치할 수 있어요(버전 17까지). Intel 기반 Mac용 빌드는 java.com에서 구할 수 있어요.

  • Maven

  • Spark 클라이언트 코드와 hadoopfs 클라이언트를 빌드·테스트하는 데 필요해요.

  • 선택 - PostgreSQL 11 (로컬에서 실행하고 디버깅할 때 유용해요)

  • 선택 - Rust & Cargo (Rust SDK를 빌드할 때 유용해요)

  • 선택 - Buf CLI (Protocol Buffer 파일을 업데이트하고 싶을 때만 필요해요)

  • 저장소를 GitHub에서 클론하세요(저장소). 이렇게 하면 저장소에 읽기 전용으로 접근하게 돼요. 기여하려면 다음 섹션을 보세요.

  • 프로젝트를 빌드하세요:

make build

Warning

make build는 Windows 사용자에게는 동작하지 않아요.

  • 테스트가 통과하는지 확인하세요. 다음 명령은 오류를 하나도 내지 않아야 해요:
make test

풀 리퀘스트를 만들기 전에

  • 이 문서를 전부 읽어 주세요.

  • 이 풀 리퀘스트가 다루는 GitHub 이슈가 열려 있고, x/wontfix 라벨이 붙어 있지 않은지 확인하세요.

  • lakeFS 저장소를 포크하세요.

  • 새 기능을 추가하는 거라면 feature/<DESCRIPTIVE NAME>이라는 이름의 새 브랜치를 만드세요.

  • 버그를 고치는 거라면 fix/<DESCRIPTIVE NAME>-<ISSUE NUMBER>라는 이름의 새 브랜치를 만드세요.

변경 사항 테스트하기

코드에 필요한 변경을 마쳤다면, 테스트가 통과하는지 확인하세요:

유닛 테스트를 실행해요:

make test

린트 규칙이 통과하는지 확인해요.

make checks-validator

Note

이걸 실행하려면 GNU diff가 필요해요. macOS에서는 brew install diffutils로 설치할 수 있어요.

lakeFS는 Go 코드의 스타일 가이드로 go fmt를 사용해요.

system-tests를 실행해요:

make system-tests

Info

시스템 테스트 인프라를 더 깊이 파고들고 싶나요? 테스트를 디버깅해야 하나요? 이 문서를 따라가 보세요.

풀 리퀘스트 제출하기

변경 사항으로 GitHub 풀 리퀘스트를 여세요. PR 설명에는 변경 사항에 대한 간략한 설명이 들어 있어야 해요. 관련 GitHub 이슈도 언급해 주세요. 머지 후 이슈가 자동으로 닫혀야 한다면, 이슈를 PR에 링크해 주세요.

풀 리퀘스트를 제출하면 GitHub Actions가 변경 사항에 대해 자동으로 테스트를 돌리고, 업데이트된 코드가 Go 1.19.x에서 빌드·실행되는지 확인해요.

풀 리퀘스트를 제출한 직후에 다시 확인해서 코드가 이 검사들을 통과하는지 보세요. 검사 중 빨간 X가 나오면 최선을 다해 오류를 고쳐 주세요.

우리 팀의 개발자가 풀 리퀘스트를 리뷰하고, 변경을 요청할 수도 있어요. 요청이 승인되면 main 브랜치로 머지될 거예요.

문서

문서 페이지에서 부정확하거나 오래됐거나 빠진 내용을 발견하셨나요? lakeFS 저장소에 이슈를 열어 해당 페이지의 링크를 포함해 주세요. 추적할 수 있도록요.

CHANGELOG.md

사용자에게 보이는 변경은 반드시 include-changelog 라벨이 붙어야 해요.

PR 제목에는 기능이나 수정에 대한 간결한 요약이 들어가고, 설명에는 GitHub 이슈 번호가 들어가야 해요. lakeFS의 새 버전을 발행할 때 체인지로그의 해당 버전 섹션에 추가할 거예요. 체인지로그에 포함되지 않아야 하는 변경이라면 exclude-changelog 라벨을 붙이세요.

사용자에게 보이는 변경 예시

  • UI/UX 수정: 레이아웃, 색 구성, 내비게이션 구조의 변경.

  • 새 기능: 내부(internal)로 정의되지 않는 한 사용자가 직접 상호작용하는 기능 추가.

  • 설정 변경: 사용자가 조정할 수 있는 설정의 업데이트.

  • 성능 개선: 애플리케이션을 눈에 띄게 빠르게 만드는 향상.

  • 버그 수정.

  • 보안 업데이트: 취약점이나 개인정보 문제를 다루는 변경.

사용자에게 보이지 않는 변경:

  • 코드 리팩토링: 외부 동작을 바꾸지 않으면서 코드베이스 구조를 재편.

  • 백엔드 최적화: 성능에 눈에 띄는 영향을 주지 않는 서버 측 프로세스 개선.

  • 데이터베이스 스키마 변경: 사용자 인터페이스를 바꾸지 않으며 그리고 데이터 마이그레이션이 필요하지 않은 데이터 구조 수정.

  • 개발 도구 업데이트: 빌드 프로세스나 개발 환경의 변경.

  • 내부 API: internal로 태그된 API의 추가/변경.

  • 문서 업데이트.

  • 임포트된 라이브러리: 보안 업데이트를 포함하지 않는 서드파티 라이브러리 업데이트.

더 알아보기 (Learn more)

공식 문서의 자세한 내용은 https://docs.lakefs.io/project/contributing/에서 확인하실 수 있어요.