nc 명령으로 만드는 간단한 webhook 배포 서버
1515 단어 ShellScriptWebhooknetcat
nc 명령이란?
nc는 netcat의 약자로 TCP, UDP의 원시 패킷을 읽고 쓰는 명령입니다.
예를 들어, netcat에서 HTTP 요청을 발행하려면
echo “GET / HTTP/1.0\n”
와 HTTP 요청을 nc 명령으로 리디렉션하여 실행할 수 있습니다.nc 명령은 클라이언트 측뿐만 아니라
-l
선택적으로 TCP 서버로 실행할 수 있으므로 여기에서 사용합니다.webhook이란?
Webhook은 서로 다른 서비스간에 애플리케이션 업데이트 정보 등을 실시간으로 제공하는 개념이다.
예를 들어, GitHub에는 리포지토리에 push되었을 때에, 지정한 Webhook URL에 HTTP POST 리퀘스트를 보내 주는 기능등이 있다.
GitHub에 push되었을 때 자동으로 배포
nc -l
는 요청을 받았을 때 요청을 표준 출력하고 exit하기 때문에 nc -l에 이어 명령을 쓰면 요청을 받은 타이밍에 명령을 실행할 수 있다.이것으로,
nc -l 8080 && git pull origin master && docker-compose down && docker-compose up -d —build
라는 바람에 실행하면 8080번 포트에 http의 리퀘스트가 오면 최신의 커밋을 취득해, 재기동할 수 있다.그리고 8080에 대한 URL을 GitHub 리포지토리의 Webhook에 추가하면 자동 배포가 완성된다.
마스터 브랜치 만 자동 배포하고 싶습니다.
Master 브랜치만 배포하고 싶은 경우는 조금 절차가 번거롭게 된다.
nc -l
가 표준 출력하는 내용은 원시 TCP이므로 HTTP Header와 HTTP Body가 개행으로 단락지어져 있는 것만이 출력된다그 때문에, HTTP Header와 HTTP Body를 분할해, HTTP Body를 jq로 퍼스(GitHub로부터 보내 오는 Body는 JSON이기 때문에), 브랜치명을 취득해 master인가 어떤지 판단할 필요가 있다.
Reference
이 문제에 관하여(nc 명령으로 만드는 간단한 webhook 배포 서버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ugwis/items/dfb2a1b5fa7cfb7ed8fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)