내 애플리케이션 (node.js)이 VPS (리눅스)에 배포되어 있습니다. git 허브를 저장소로 사용하고 있습니다. git push에서 애플리케이션을 자동으로 배포하려면 어떻게해야합니까?
내 애플리케이션 (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
).
npm install -l
원격 서버에서 수행하는 배포 전략 이 현명합니다. 이것은 물론 수신 후 후크를 사용하는 방법과 결합 될 수 있습니다.
여기에 응답하기에는 아마도 매우 늦었을 것입니다. 그러나 나는이 프로젝트를 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
내 스테이징 서버에는 이미 노드가 설치되어 실행 중이므로 작성하는 것이 빠르고 쉽습니다.
Python / tornado 기반 솔루션을 원한다면 Github의 Webhook Services 에서 POST 요청을 처리하는 스크립트를 작성했습니다 . 당신은 그것을 찾을 수 있습니다https://github.com/Akobi/ops/tree/master/autodeploy
기본적으로 JSON 구성 파일을 사용하여 푸시를 예상하는 저장소, 배포시 실행할 명령, 명령이 실행되어야하는 디렉토리를 나열합니다. 원하는대로 구성 파일을 수정하고 실행하기 만하면됩니다. 스크립트!
또한 Nginx를 역방향 프록시로 사용하여 이러한 POST를 내 스크립트로 전달합니다. Nginx 구성은 'nginx'폴더 아래의 동일한 Github 저장소에서 찾을 수 있습니다.
행복한 추진!
PHP 답변은 내 의견으로는 완전히 합법적이지만 Ruby를 선호한다면 해결책을 블로그에 올렸습니다. 다른 언어로 된 PHP 답변과 동일합니다. 웹 후크를 사용하고 관련 HTTP 요청을 수신하는 간단한 스크립트가 있습니다.
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
리포지토리 ( https://github.com/jesalg/SlimJim) 에서 새 업데이트를 자동으로 가져 오는 기본 배포 도구를 만들었습니다. 기본적으로 github post-receive-hook을 수신하고 프록시를 사용하여 업데이트 스크립트.
저는 https://commando.io 의 창립자입니다. 이며 최근에 서비스를 통해 GitHub와의 통합을 발표했습니다. 통합을 통해 GitHub 저장소로 푸시 할 때 서버에서 실행을 실행할 수 있습니다. 이는 코드를 푸시 할 때 배포 스크립트를 자동으로 실행할 수있는 완벽한 기회입니다.
실행은 bash, perl, python, ruby, go 또는 node.js로 작성할 수있는 Commando.io 내부에 작성하는 스크립트입니다. 자세한 내용을 읽고 running의 예제 실행 스크립트를 git pull
보려면 블로그 게시물 공지를 참조하십시오. http://blog.commando.io/run-executions-via-github-push/
또한 거의 모든 것을 자동화하는 REPOMAN.IO 와 같은 무료 / 저렴한 서비스 가 있습니다.