php SVN 웹 사이트 개발 및 배포 솔루션




deployment web-applications (6)

프로덕션 서버에 파일을 배포하는 경우 인형은 두 구성 관리에 훌륭한 도구이며 서브 버전 (또는 자식)에서 콘텐츠를 배포하는 데 사용될 수도 있음을 제안 할 수 있습니다. 조회 꼭두각시 및 vcsdeploy 모듈 http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff 꼭두각시 위조에.

상황이 있습니다. 우리는 다양한 커맨드 라인 경험을 가진 다수의 개발자를 보유하고 있으며 우리는 웹 사이트에 대한 배포 솔루션을 구성하고 있습니다. 프로덕션 환경은 2 개의 수세 리눅스 박스입니다. 개발 환경은 SUSE Linux 상자입니다. 각 개발자는 개발 및 테스트를 위해 자신의 홈 디렉토리에 SVN 트리의 복사본을 가지고 있습니다.

목표는 여러 프로덕션 서버에서 사용할 수있는 사용하기 쉽고 되돌리기 쉬운 릴리스 시스템을 갖추는 것입니다. 비 웹 개발자 (아직 웹 세계에없는 코더)가 웹 사이트를 쉽게 되돌릴 수 있다면 보너스가 될 것입니다. 최적의 환경에서는 릴리스하려는 웹 사이트에서 단일 명령을 실행하는 것처럼 간단합니다. 이 명령은 프로덕션 서버를 업데이트하고 그로부터 되돌아 오는 경로를 남겨 둡니다.

현재의 배포 솔루션은 약간 거추장스럽고 되돌리기가 어렵고 먼지로 느려집니다. 현재 SVN을 사용하여 모든 파일을 체크인합니다. SVN에서 태그를 생성하는 스크립트가 실행됩니다. 그런 다음 두 개의 프로덕션 서버로 이동하고 'svn up'을 실행하는 두 번째 스크립트가 실행됩니다.

어떤 제안?


내 경험상, "되돌리기"기능은 파괴적인 업데이트를 처리하는 간단한 방법이 없기 때문에 유지하기가 거의 불가능합니다. 즉, 당신은 분명히 그냥 svn up 보다 더 잘할 svn up . 최소한 코드가 체크 아웃 된 후 스크립트를 실행하고 응용 프로그램을 패치 할 수 있습니다 (데이터베이스를 변경하는 등). 당신은 아마뿐만 아니라 실제 업데이 트를 원한다면, 그래서 당신이 임시 폴더에 svn export , 그리고 일단 당신이 완료되면 폴더를 가리 키도록 심볼릭 링크를 업데이 트하는 것이 좋습니다. 패치를 실행하는 동안 서비스를 중지하고 싶을 수도 있습니다.

Capistrano와 같은 것을 사용하면 멋진 패키지로 포장 할 수 있습니다. 그것은 꽤 우리 기반 gui (Webistrano)와 함께 제공됩니다.


나는 .net 녀석이고 그러므로 창 세계에있는 것들과 함께 일한다. 내가 매일 빌드 프로세스를 관리하기 위해 함께 사용하는 기술은 당신의 세계에서 나온 것이지만! (리눅스 / 자바 기술은 괄호 안에 있지만 윈도우즈 독자들에게도 같은 것을 포함 시켰습니다.) 저는 CruiseControl.NET ( CruiseControl ), VisualSVN ( SVN ), Tortoise , NAnt ( Ant )를 사용하여 모든 빌드 요구를 처리합니다.

체크인시 모든 빌드가 자동으로 푸시되고 태그가 지정됩니다. CruiseControl이 소스 컨트롤 (SVN 또는 Subversion)을 모니터링 할 때 CruiseControl을 사용하여이 작업을 수행합니다. CruiseControl (CC)은 새 코드가 체크인 된 것을 확인하면 CC 프로젝트를 실행하고 CC 프로젝트는 빌드 서버의 Ant 스크립트를 호출합니다.

Ant 스크립트는 공통 빌드에서 나를 위해 여러 가지 작업을 수행합니다. 최신 코드의 복사본을 체크 아웃하여 빌드 서버로 가져옵니다. 그런 다음 최소한 컴파일 할 수 있도록 코드를 작성합니다. 그런 다음 데이터베이스의 깨끗한 복사본을 설정하고 모든베이스 라인 db를 현재 버전으로 빌드하기 위해 모든 SQL 스크립트를 실행합니다. 그런 다음 모든 단위 테스트 프로젝트를 실행합니다. 그런 다음 다른 곳에서 내 리포지토리 계층을 테스트하여 코드가 백 엔드와 정렬되어 있는지 확인합니다 (일반적으로 내 프로젝트에서 ORM을 사용하므로 거의 동기화되지 않습니다 ... 그러나 좋은 단계입니다). 진행중). 모든 테스트가 통과되면 (또는 실패한 경우) 데이터베이스를 깨끗한 상태로 롤백하고 스크립트를 실행하여 현재 버전으로 가져옵니다 (클린 데이터베이스를 팀에 제공하여 클릭에 대해 개발할 수 있으므로 중요합니다.) 버튼의). 빌드가 성공한 경우 개발 서버에 코드를 배포합니다 (준비 서버 및 프로덕션 서버에 대한 클릭 배포도 하나씩 있음). 각 체크마다 코드베이스에 태그를 지정하려면 여기에서도 그렇게 할 수 있습니다.

이 모든 것이 완료되면 나는 NDepend , NDocNCover를 사용하여 코드에 대한 분석을하고 싶습니다. NDepend는 일들이 구조적으로 정확하고, 네이밍 표준이되어야하며, 더 많은 것들이 있는지 확인하는 코드 분석 도구입니다. NDoc은 모든 코드 주석을 추출하고 내 코드에 대한 MSDN 스타일 문서를 만듭니다. NCover는 코드에 대한 단위 테스트로 적절한 적용 범위가 있는지 알려줍니다.

그런 다음 필자가 작성한 Ant 커스텀 태스크를 사용하여 다양한 코드에 대한 코드를 모두 구문 분석하고 // CodeDebt 태그를 생성하여 다른 리포트를 생성합니다 (일반적으로 스프린트가 끝날 때). 내 코드베이스에서. 이것은 다음 스프린트로 고려 될 수있다.

이 보고서는 모두 나가거나 너무 적절하게 링크 된 빌드 전자 메일에 포함되어 있습니다.

위의 모든 사항은 각 체크에 대해 ... 하나의 버튼을 클릭하지 않고도 발생합니다! 이것은 진정한 지속적인 통합이며 모든 빌드 마스터의 목표 여야합니다.

CruiseControl은 웹 기반 콘솔을 사용하여 비 웹 사용자 (실제로는 누구나)가 코드를 체크인하지 않고이 푸시를 실행하고 빌드를 강제로 호출 할 수있게합니다.

이 프레임 워크가 주어지면 모든 것이 버전 제어하에있는 한 푸시를 쉽게 롤백 할 수 있습니다. 동일한 프로세스를 수행 할 수있는 또 다른 Ant 스크립트가 필요하지만 빌드 프로세스를 수행하는 데 가장 최근의 코드가 아닌 마지막 버전의 코드를 얻어야한다는 점에서 추가 작업이 필요합니다. 모든 Ant 태스크는 다른 실행 타겟으로 재사용 할 수 있습니다.


당신이 들어갈 수있는 것들 중 하나는 서로 다른 버전의 서로 다른 데이터베이스 구조를 거꾸로하여 전달하는 것입니다. Moreso 당신이 그것에 필요한 초기화 데이터가 있다면. 여기에 비슷한 질문이 몇 개 있었지만 검색을해도이 점이 마음에 들지는 않습니다.


간단하게 유지하기 위해 SpringLoops 를 사용해보십시오. 다른 서버에 배포 (및 되돌리기) 옵션 이있는 호스팅 된 svn 서비스입니다 . 사용 및 설정이 매우 쉽습니다. 무료 버전을 사용하면 하나의 서버에만 배포 할 수 있지만 지불하려는 경우 다른 서버 (예 : 준비, 개발 및 프로덕션)에 배포 할 수 있습니다.

모든 패키지를 무료로 30 일 동안 구입할 수 있으므로 필요한 수의 서버로 테스트 할 수 있습니다. 나는 스프링 루프와 제휴하지 않았다. 나는 그것을 사용하여 유용하고 단순한 것을 찾는다.


ant / phing 또는 xinc 또는 phpUnderControl 과 같은 CI 솔루션과 같은 기존 빌드 도구를 살펴 보셨습니까?







web-applications