내 애플리케이션 (node.js)이 VPS (리눅스)에 배포되어 있습니다. git 허브를 저장소로 사용하고 있습니다. git push에서 애플리케이션을 자동으로 배포하려면 어떻게해야합니까?
답변
PHP의 예 :
github 저장소로 이동하여 “Admin”을 클릭하십시오.
‘서비스 후크’=> ‘WebHook URL’탭을 클릭하십시오.
그리고 추가
http://your-domain-name/git_test.php
그런 다음 git_test.php를 만듭니다.
<?php
try
{
$payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
exit(0);
}
//log the request
file_put_contents('logs/github.txt', print_r($payload, TRUE), FILE_APPEND);
if ($payload->ref === 'refs/heads/master')
{
// path to your site deployment script
exec('./build.sh');
}
build.sh에서 github에서 사이트를 검색하려면 일반적인 명령을 입력해야합니다.
답변
답변 / 코멘트로 Git 후크에 대한 언급이 몇 개 있었는데, 이는 과거에 저에게 효과적이었습니다. 다른 사람이 더 구체적인 정보를 필요로하는 경우 여기에 제 레시피가 있습니다.
git post-receive hook 과 node-supervisor 의 조합을 사용하여 간단한 자동 배포를 수행합니다 (해당 머신에서 git 원격 저장소를 사용한다고 가정).
수신 후 후크 설정
저장소에서 : sudo vi hooks/post-receive
그리고 다음과 같이 보일 것입니다.
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
파일 권한 설정 : chmod +x hooks/post-receive
Git은 저장소에 푸시 한 후 앱 디렉토리의 파일을 새로 고칩니다.
Node-Supervisor로 노드 실행
머신에 전역 노드 모듈로 Node-Supervisor를 설치해야합니다. sudo npm install supervisor -g
이제 node-supervisor로 노드 앱을 실행하기 만하면 작업 디렉토리의 파일에 대한 변경 사항을 감시합니다.
supervisor /home/path/to/your/www/server.js
( supervisor
대신 참고 node
).
답변
여기에 응답하기에는 아마도 매우 늦었을 것입니다. 그러나 나는이 프로젝트를 github에서 발견하고 원하는 것을 훨씬 더 깔끔하게 수행하는 것 같습니다.
https://github.com/logsol/Github-Auto-Deploy
확인 해봐. 댓글과 찬성에 대해 다른 사람들이 어떻게 생각하는지 알고 싶을 것입니다.
건배,
S
답변
현재 개발중인 프로젝트에서 Jez Humble의 훌륭한 책 “Continuous Delivery”(읽을만한 가치가 있음)에서 다루는 지침을 따릅니다.
즉, 어떤 형태의 지속적인 통합 서버를 사용하여 배포 파이프 라인을 생성하는 것을 의미합니다 (저는 Go의 Thoughtworks 무료 커뮤니티 에디션을 사용 합니다 ). 먼저 코드의 품질, 복잡성 및 실행 단위 테스트를 확인해야합니다. 그런 다음 배포 파이프 라인을 따라 프로덕션 서버로 푸시 할 수 있습니다.
이것은 매우 복잡하게 들리지만 반드시 그럴 필요는 없으며 코드를 작성하는 전체 프로세스를 만들어 안전하고 걱정없이 프로덕션에 들어갈 수 있도록합니다 (두려운 릴리스 날짜 없음!).
라이브 시스템에는 전체 배포 파이프 라인을 사용하고 내가 작성한 npm 모듈에는 축소 버전을 사용하며 둘 다 동일한 원 클릭 배포 기술을 공유합니다.
답변
답변
여기 또 다른 간단한 nodeJS 구현이 있습니다.
구성한 호스트 이름 및 포트에서 실행되는 매우 간단한 노드 서버이며 GitHub 포스트 수신 웹 후크를 처리하도록 설정할 수 있습니다. 그리고 실제 pul / test / deploy 작업은 원하는 모든 작업을 수행하도록 사용자 정의 할 수 있습니다. 현재 구현에서는 nodeJS 서버 스크립트에 인라인으로 지정된 쉘 명령입니다. 또한 매우 간단한 secret_key 기반 보안 체계도 있습니다.
https://github.com/shyam-habarakada/rscds
내 스테이징 서버에는 이미 노드가 설치되어 실행 중이므로 작성하는 것이 빠르고 쉽습니다.