2012-02-28 2 views
2

나는 테스트 목적으로 SVN 서버를 설치할 계획이있다. 이제 제 질문입니다. 개발/준비 웹 사이트의 경로에 커밋 된 파일을 자동으로 배포하는 방법은 무엇입니까?커밋을 웹 사이트에 자동으로 배포하는 방법은 무엇입니까?

내가 SVN에 포스트 커밋 훅을 사용할 수 있다는 것을 알았지 만 어떻게 구성 할 수 있습니까? /홈/www가/dev에/준비/

그리고 저장소는에 있습니다 :

커밋 된 모든 파일

는 경로에 http://dev.staging.mywebsite.com에 배포해야합니다 /홈/SVN/mytestscript/

어떻게해야합니까?

+0

웹 사이트를 배포하기위한 커밋 후크 (post-commit hook)는 스테이징 서버에서도 좋지 않은 아이디어라고 생각합니다. 배포를위한 빌드 도구가 있습니다. Maven 만 사용했지만 Ant와 같은 다른 많은 도구가 있습니다. – StuR

+1

좋지 않겠지 만 아이디어가 있으십니까? – Aar

+0

이 링크를 사용해보세요. 어쨌든 배포 스크립트를 작성해야 할 것 같습니다. https://mikewest.org/2006/06/subversion-post-commit-hooks-101 – mpm

답변

0

배포를위한 커밋 후크를 작성하는 것은 정말 좋은 생각이 아닙니다.

더 나은 솔루션은 Capistrano (Ruby) 또는 Fabric (Python)과 같은 도구를 사용하고 있습니다.

+0

그리고 당신의 이유는 무엇입니까? 귀하의 사이트를 확인하는 것은 그리 나쁘지 않습니다. 당신의 논쟁은 무엇입니까 ???? – Aar

+0

Nicholas가 맞습니다. 내 [응답] (http://stackoverflow.com/a/9489149/368630)을 참조하십시오. –

0
  1. svn diff --summarize 커밋 후크입니다. Details here

  2. 대안 선택 (1) (더 큰 전송, 더 많은 시간과 중단) - 준비 사이트 추가 화장실이, 후크 그냥 후 커밋한다 - svn을 수출 +는 +가

  3. 이 대안의 선택이이 나무를 수출 복사 기존의 모든 데이터를 제거

9

니콜라스 딩 그것에 svn up을 시작 : 정말 배포 후 커밋 후크를 작성하는 나쁜 생각입니다.

aar : 이유는 무엇입니까? 귀하의 사이트를 확인하는 것은 그리 나쁘지 않습니다. 당신의 주장은 무엇입니까 ????

나는 Nicholas Ding에 동의해야합니다. 문제는 post-commit 후크를 통해 배포를 수행하는 동안 개발자가 완료를 기다리는 것입니다. 배포가 완료되는 데 30 초 밖에 걸리지 않는 경우 개발자가 포스트 커밋 후크가 완료되기를 기다리는 30 초입니다.

개발자가 파일을 커밋 할 때마다 커밋이 완료 될 때까지 30 초를 기다려야한다고 생각하십니까? Subversion, 일반적으로 개발 프로세스, 그리고 CM에 대해 어떻게 생각할 것 같습니까? 배포를 포스트 커밋 (post-commit) 훅으로 수행하는 것은 정확하게 경력 향상을 의미하지 않습니다.


Jenkins을 제안합니다. Jenkins는 연속 빌드 시스템이라고합니다. Jenkins를 설정할 수 있으므로 개발자가 커밋을 할 때마다 Jenkins는 빌드을 수행합니다. 이렇게하면 배포가 진행되는 동안 Subversion을 묶어 두지 않습니다.

좋은 점은 젠킨스가 배포를 수행 할 수 있다는 것입니다. 그리고 배포가 실패하면 커밋을 한 개발자에게 이메일을 보낼 수 있습니다.젠킨스는 당신을 위해 몇 가지 테스트를 진행할 수도 있습니다. 예를 들어 배포가 제대로 수행되었지만 변경된 코드로 인해 오류가 발생할 수 있습니다. 감지하는 것이 좋을지도 모릅니다. 또한 전개하기 전에 Jenkins에서 배치 가능한 이슈를 테스트 할 수 있도록 저장할 수 있습니다. 테스트가 작동하면 Jenkins에서 해당 빌드로 돌아가서 버튼을 클릭하고 배포를 수행 할 수 있습니다.

또 다른 보너스로 Jenkins는 개발자가 모든 변경, 빌드 및 배포의 기록을 볼 수 있도록 허용합니다. 또한 테스트를 시작하면 모든 테스트의 내역을 보여줄 수 있습니다. Jira, Bugzilla, MantisBF, Track 또는 기타 인기있는 문제 추적 시스템을 사용하는 경우 Jenkins는 이러한 시스템과 통합하여 특정 문제가 처리 된 빌드를 추적하는 데 도움을 줄 수 있습니다.

아무 것도 컴파일하지 않아도 (전체 웹 페이지가 PHP 파일 및 JavaScript라고 가정 해 봅시다.) Jenkins를 배치 및 테스트 용으로 사용할 수는 있지만 많은 이점이 있습니다.

젠킨스는 개발 프로세스를 향상시키고 Subversion을 느리게하지 않고도 문제를 처리 할 수있는 훌륭한 소프트웨어입니다. 또한 젠킨스 (Jenkins)는 사용하기 쉽기 때문에 젠킨스 (Jenkins)를 사용하면 포스트 커밋 (post-commit) 훅 (hook)에서 원하는 것을 할 수있는 방법을 찾는 것보다 빠릅니다.

+0

배포 프로세스에서 후크 포크를 사용하여 커밋 지연을 피할 수는 있지만, 배포가 실패하면 커밋을 거부 할 수있는 능력을 잃을 수도 있습니다. 젠킨스를 사용하는 것이 훨씬 강력하고 합리적인 해결책이라고 생각합니다. – TMN

1

해결책은 2008 년부터 http://imrannazar.com/Automated-Deployment-with-Subversion에 있으며 여기에는 ~~DEPLOY~~이 포함 된 경우에만 배포됩니다. 이것이 @David W.에 언급 된 문제를 무효화하지는 않지만, 의 시간 지연은이 모든 커밋과 함께 배치하는 것을 억제 할 수 있습니다. 좋은 것이 든 나쁜 것이 든 팀과 프로젝트에 달려 있습니다!

0

Springloops는 자동 배포 소프트웨어입니다. 나는 그것을 사용하고 BamBam 작업 관리 시스템과 통합 된 훌륭한 도구라고 생각합니다. 이것 좀 봐 http://www.springloops.io

관련 문제