django 서비스를 운영할 경우 서버에서 소스를 받은 후 수동으로 해주어야 하는 일들이 있다.
migrate나 특정 파일의 복사 같은.
그럴경우 깃 훅을 사용하면 쉽게 사용이 가능하다.
해당 예제는 서버에서 배포를 위해 깃허브의 소스를 Pull 할 경우 특정 파일을 복사하는 방법에 대해서 설명한다.
1. 프로젝트 폴더의 .git 폴더로 이동
프로젝트 폴더로 이동하면 .git 이라는 폴더가 존재한다. 훅을 사용하기 위해 해당 경로로 이동
ce projcet/.git/hook
2. pull을 받으면 자동으로 실행 될 post-merge 훅 파일을 생성
vi project/.git/hook/post-merge
#!/bin/sh
rm -rf /home/ubuntu/app/modules
cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules
해당 코드의 실행 순서는 다음과 같다.
1) rm -rf /home/ubuntu/app/modules
해당 경로의 기존 modules 폴더를 삭제
2) cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules
/home/ubuntu/app/project/static/modules/ 경로에 있는 modules 폴더를 /home/ubuntu/app/modules 경로로 복사
3. post-merge 파일의 권한 변경
chmod +x post-merge
이제 해당 저장소에서 pull을 받으면 위에서 설정한대로 modules 폴더를 업데이트 한다.
! 부록 - 깃훅이 작동하면 로그 남기기
#!/bin/sh
rm -rf /home/ubuntu/app/modules
timestamp=$(date)
echo "Post-merge : $timestamp : remove /home/ubuntu/app/modules" >> /home/ubuntu/app/git_hook_log.txt
cp -r /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules
timestamp=$(date)
echo "Post-merge : $timestamp : Copy /home/ubuntu/app/project/static/modules/ /home/ubuntu/app/modules" >> /home/ubuntu/app/git_hook_log.txt
만일 깃훅 작업을 로그로 보고 싶다면 위와 같이 수정하면 된다.
그리고 로그 파일 위치에 txt 파일을 생성 하면 끝!
'개발관련' 카테고리의 다른 글
Ubuntu 서버에 nginx 설치하기 (0) | 2023.08.12 |
---|---|
우분투에 Mariadb 설치 및 셋팅 (0) | 2023.03.30 |
Nginx post가 get으로 바뀌는 경우 (0) | 2023.02.03 |
Ubuntu + Nginx + Cafe24 SSL 적용(Django, Vue) (0) | 2023.02.03 |
Ubuntu nginx에 Vue 배포 (0) | 2023.01.31 |