[Node.js] GitHub Webhook 을 이용하여 push 될 때 마다 자동으로 pull 하기


요새 한동안 vim 을 사용하여 서버에서 직접 작업하다가 오랜만에 IDE가 사용하고싶어져서 Atom 을 사용하고있다.
그나저나, Atom이 처음 나왔을때는 솔직히 별로라고 생각했는데 지금보니 꽤나 괜찮은 것 같다.
Atom에서 작업 후, push 하면 서버에서 자동으로 pull 하는 환경을 만들고 싶어서 Node.js 로 직접 Webhook 서버를 만들었다.

1. 환경

  • Linux
  • Nodejs

2. 시작하기

Github에 SSH Key 등록

이미지 3

당연하지만, 사용하고자 하는 컴퓨터의 SSH 키가 github에 등록되어있어야 한다. (그렇지 않으면 pull 할 떄 마다 ID/PW 를 입력해야하기 떄문)

등록되어있지 않다면, 다음 절차를 통해 키를 만들고 id_rsa.pub 의 내용을 github에 등록하면 된다.

참고로 passphrase는 비워놓아야한다.

프로젝트 clone

자신의 컴퓨터에서 webhook 을 사용하기 위해 프로젝트를 clone 한다.

 

3. 설정하기

index.js 파일에서 서버의 포트와 비밀 키를 설정한다

hook.sh 파일에서 git repository의 디렉터리를 설정한다.

 

4. 서버 실행

 

5. Github repository Settings 에서  Webhook 설정

이미지 5

Payload URL 은 http://URI/push 이다. Secret 키는 index.js 에서 입력했었던 키를 입력한다.


이렇게 설정이 끝나면, push 할떄마다 서버에서 자동으로 pull 하는 환경이 완성된다.

서버를 background 에서 실행 할 수 있도록 screen 을 사용하면 유용하다.

  • 서재민

    서버컴퓨터에 nodejs app을 올려두고 작업하는 컴퓨터에서 git push 를 하면
    서버컴퓨터에서 자동을 git pull 이 되게하려면 위의 방법으로 설정하면 되는건가요?

    • 넵.

      참고로 프로젝트가 꼭 Node.js app 일 필요는 없고 위 코드를 도구로서 사용하는 것 입니다.