Crenata 기여에 관심을 가져주셔서 정말 감사합니다!
Crenata는 자원봉사자로 유지되는 오픈 소스 프로젝트이며 모든 형태의 기여를 환영합니다.
아래 섹션은 개발, 테스트를 시작하는 데 도움이 됩니다.
Crenata를 작업하려면 먼저 git에서 소스코드를 가져와야 합니다.
소스코드는 GitHub에서 사용할 수 있습니다.
git clone https://github.com/team-crescendo/Crenata
cd Crenata
Crenata는 Python으로 개발된 디스코드 봇입니다.
Crenata는 Python 3.10 이상에서 개발 및 테스트 되었으며, 3.10 미만의 버전에서는 정상적인 작동을 보장하기 어렵습니다.
Crenata의 개발 환경은 VSCode에 최적화되어있습니다.
코드 스타일 적용, 테스트, 타입 체크 등 여러 환경이 미리 준비되어 있습니다.
따라서 VSCode에서 작업하는 것을 권장합니다.
Crenata는 Poetry를 이용해 종속성을 관리하고 있습니다.
로컬에 Poetry가 이미 설치되어있다면 다음 명령어를 사용하여 종속성을 설치할 수 있습니다.
poetry install
Poetry를 로컬에 설치하기 부담스럽다면 가상환경을 사용하여 개발할 수도 있습니다.
먼저 다음 명령어를 사용하여 가상 환경을 만들어 줍니다.
python -m venv .venv
가상 환경을 활성화해 줍니다.
Windows
.venv/Scripts/Activate.ps1
Linux/macOS
. .venv/bin/activate
활성화가 완료되었다면 다음 명령어를 사용해 가상 환경에 Poetry를 설치합니다.
Windows
.venv/Scripts/pip install -U pip setuptools
.venv/Scripts/pip install poetry
Linux/macOS
.venv/bin/pip install -U pip setuptools
.venv/bin/pip install poetry
종속성을 설치합니다.
poetry install
또한 개발을 위해서는 aiosqlite
종속성이 필요할 수도 있습니다.
Crenata는 PostgreSQL을 권장하지만, 개발 환경에서 DB를 구성하기에는 부담스러운 부분이 있습니다.
이를 해결하기 위해 aiosqlite모듈을 사용해 DB를 구성하지 않고 인메모리로 DB 작업을 수행하도록 합니다.
python -m pip install aiosqlite
Crenata는 정적 타이핑을 사용하고 있습니다.
이는 쉬운 유지보수와 디버깅을 제공하며, 안정성을 높일 수 있습니다.
mypy를 사용해 유형을 검사합니다.
다음 명령어를 사용하여 유형을 검사 할 수 있습니다.
poetry run mypy
Crenata는 pytest를 이용해 일부 코드를 테스트하고 있습니다.
다음 명령어를 사용하여 테스트를 실행할 수 있습니다.
poetry run pytest
black 및 isort를 사용하여 코드 스타일을 일관성 있게 유지 하고 있습니다.
가상환경에서는 .vscode\settings.json
에서 isort의 경로를 다음과 같이 수정해 주어야 할 수도 있습니다.
Windows
{
"python.sortImports.path": "${workspaceRoot}/.venv/Scripts/isort.exe"
}
Linux/macOS
{
"python.sortImports.path": "${workspaceRoot}/.venv/bin/isort.exe"
}
다음 명령어를 사용하여 포맷팅할 수 있습니다.
poetry run black .
poetry run isort
Crenata를 실행하기 위해서는 Config를 전달해야 합니다.
다음과 같이 명령줄 인수 또는 JSON으로 전달할 수 있습니다.
추가로 환경변수로도 Config를 전달할 수 있습니다.
# 자세한 인수는 --help 인수를 사용해 확인할 수 있습니다.
python -m crenata --token <YOUR_TOKEN>
# tests 폴더에 있는 config.json 파일을 참고하세요.
python -m crenata --config <YOUR_CONFIG_PATH>
// 다음 파일을 .vscode/launch.json에 저장하세요.
// tests 폴더에 있는 config.json 파일을 참고하세요.
{
version: "0.2.0",
configurations: [
{
name: "Crenata",
type: "python",
request: "launch",
module: "crenata",
args: "--config <YOUR_CONFIG_PATH>",
},
],
}
# 모든 환경변수는 CRENATA_ 로 시작해야 합니다.
set CRENATA_USE_ENV = true # 해당 값이 true여야만 환경변수에서 값을 가져올 수 있습니다.
set CRENATA_TOKEN = <YOUR_TOKEN>
python -m crenata
Docker를 사용해 배포할 수 있습니다.
docker build -t crenata . # 이미지 빌드
# docker-compose.yml
- CRENATA_USE_ENV=true
- CRENATA_TOKEN=토큰
- CRENATA_NEIS_API_KEY=나이스 API 키
- CRENATA_TEST_GUILD_ID=테스트 서버 ID
- CRENATA_PRODUCTION=프로덕션 여부
- CRENATA_DB_URL=postgresql+asyncpg://<유저>:<비번>@db/crenata
- POSTGRES_USER=<유저>
- POSTGRES_PASSWORD=<비번>
docker-compose up -d # 컨테이너 실행