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에 필요한 의존성을 설치하세요:
-
Java 8
-
Apple Silicon Mac 사용자는 Azul Zulu Builds for Java JDK에서 설치할 수 있어요(버전 17까지). Intel 기반 Mac용 빌드는 java.com에서 구할 수 있어요.
-
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/에서 확인하실 수 있어요.