신입부원 모집을 위한 backend API server
Stack
- Django
- drf_yasg (swagger)
- django_rest_framework
- Docker
로컬에서 개발할 때 가이드
로컬에서 sqlite3 local DB를 사용함 (서비스용 DB와 별도)
git clone https://github.com/CSPCLAB/cspc_apply_server.gitcd ./app
conda activate env # 가상환경 세팅
pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver한번 실행하면 자동으로 secret_key를 저장하는 .env파일 생성
SECRET_KEY는 소스코드, 깃허브에 올리지 말 것!
master 브런치로 바로 push는 불가능
작업 시, 새로운 브런치 추가
git branch new_branch
git checkout new_branchvscode git 기능 사용 or
git add file
git commit -m "커밋 메세지"
git push --set-upstream origin new_branch 이후 github 페이지에서 PR 생성 후 테스트 통과 시, merge
git action을 통해 master 브런치에 push or PR merge 시, 자동으로 배포
웬만해서 master로 바로 push하지 말고, PR을 통해 test후 배포하는 것을 권장
직접 배포해야 하는 상황이 있다면 (ex DB migration 충돌)
cd $PROJECT_PATH
docker-compose down
docker-compose up --build -dInfra 쪽은 거의 완성되어서 개발할 때, django쪽 구현만 신경
- /swagger : API test
- /redoc : API 문서
각 API endpoint마다 django-rest-api 테스트 form 구현
이 endpoint 말고 swagger 테스트 추천
student_id를 통해 로그인하도록 custom model 구현
다만 custom user model만 만들고 아직 authenticate 모듈은 구현 및 연동 안된 상태
TODO :
user.view.py,user.backends수정
workflow에 push시, test 실행되도록 구현
다만 아직 테스트 코드 구현 X
TODO : 각 모듈별
tests.py내 테스트 코드 작성
빌드 및 배포는 전부 docker를 통해서 진행
- 소스코드 푸시
- main 브런치 push trigger
- test 및 build & deploy workflow 실행
- build 시, dockerhub에 image push
- deploy 시, ec2 인스턴스 접속 및 이미지 pull, 및 컨테이너 재실행
git action 은 깃허브에서 지원하는 workflow
github으로 코드 push, pr 등의 이벤트를을 트리거삼아 원하는 스크립트 실행 (test, deploy)
workflow 여기서 실행되는 스크립트 확인가능
vscode 사용 권장
- Black Formatter
해당 extension 설치 후
//settings.json
{
//...
"[python]": {
"editor.formatOnType": true,
"editor.defaultFormatter": "ms-python.black-formatter"
},
}