동작을 위해서는 웹 훅으로 등록해놓은 시크릿 번호가 필요합니다.
하지만 인라인 코드로 작성하면 비밀번호 유출 위험이 있어 .env
파일에 작성합니다.
.env
파일은 .gitignore
에 포함되어 있으며, 로컬에서 생성하면 됩니다.
# .env 파일
SECRET=YOUR_SECRET
백그라운드에서 서비스 형태로 실행시키기 위해 pm2
명령어가 포함된 start.sh
스크립트를 작성해뒀습니다.
start.sh
을 실행시키면 index.js가 서비스로 실행됩니다.
실행하기전에 index.js에서 port
변수를 확인해서 원하는 포트로 변경해주세요.
pm2 list
를 확인하시면 정상 동작하는지 확인 할 수 있습니다.
더 자세한 사항은 pm2 공식 홈페이지에 방문하여 학습하시기 바랍니다.
웹 훅이 동작하면 hook.sh
이 실행되는데, 여기에는 실제 git
명령어가 포함되어 있습니다.
REPOSITORY
변수에 이 프로젝트에서 실제 webhook을 적용하고자하는 로컬 레포지토리 까지의 상대경로를 입력해주세요.
원리는 간단한데, 그 레포지토리로 이동해서 git pull
을 하는 겁니다.
패스워드 입력이 어렵기 때문에, https나 ssh 방식 사용시, 비밀번호 입력 없이 pull이 가능하도록 설정해주십시오.
github 레포지토리 - Settings - Webhooks - Add webhook에서 등록합니다.
Content Type은 application/json
두고, Secret 값을 위에서 설정한 값으로 해주세요. (Content Type이 뭔지는 구글링해서 학습해주세요.)
Payload URL이 중요한데, github 서버에서 어떤 주소로 접근해 웹 훅을 실행시킬 수 있냐는 겁니다.
외부에서 접근 가능한 주소/push
로 Payload URL을 설정해주세요.
공유기를 사용하는 경우 적절한 포트포워딩이 필요할 겁니다.
해당 건 관련해서는,
겜마루 회원이시고 어둠의 겜마루 서버를 이용하실 분들은 어둠의 겜마루 디스코드에서 문의해주세요.
hook.log
에 모든 활동이 기록됩니다.