2010-07-13 2 views
2

허드슨 CI 서버를 통한 PHP 프로젝트의 릴리스 관리에 대한 실제 경험에 대해 질문하고 싶습니다.허드슨과 PHP 프로젝트 릴리즈 관리

프로젝트는 프론트 엔드, 프레임 워크, 라이브러리 등 하위 프로젝트로 구분됩니다. 모든 것은 SVN에 자체 프로젝트로 저장됩니다. 다른 프론트 엔드는 다른 버전의 라이브러리에 따라 달라지는 프레임 워크의 다른 버전에 따라 달라질 수 있습니다.

지금까지는 손으로 관리를 공개했습니다. 우리는 프로젝트를 공개하는 환경의 차이점을 피하기 위해 하나의 환경을 테스트 및 생산으로 제공합니다. SVN의 각 하위 프로젝트에 릴리스 번호를 표시하고 테스트 도메인에서 액세스 가능한 테스트를 위해 모든 것을 체크 아웃합니다. 버그를 테스트하고 수정 한 후에는 SVN에있는 모든 새 버전의 태그를 프로덕션으로 지정하고 프로덕션 도메인과 새 코드를 다시 연결합니다. 이 수동 프로세스에는 명백한 문제가 있으며이를 유지하는 방법이 없습니다.

자동화 된 솔루션으로 이전하기 위해 이미 허드슨을 설치하고 PHP 프로젝트 (Phing, ppUnit 등)에 맞게 구성했습니다. Phing 또는 Ant에서 빌드 스크립트를 작성하는 것에 익숙합니다. 저는 CI 환경을 설정하고 프로젝트를 준비하는 모든 "가능한 기본 사항"을 적색으로 처리했습니다. 내가 찾지 못한 것은 릴리스 관리의 예입니다. 우리는 수동으로 고려해야 할 모든 종속성을 고려해야합니다. 나를 올바른 방향으로 안내해 주시겠습니까?

+0

프로그래머로 이동 투표.stackexchange.com – Mchl

답변

1

쉽게 사용할 수있는 복잡한 요소가 없습니다. 우리는 아주 비슷한 문제를 해결해야했고 사용하려고했던 (또는 이미 사용하고있는) 매우 유사한 구성을 사용하여 끝내게되었습니다.

여러 개의 응용 프로그램 코어가 있고 그 위에 특정 클라이언트 수정이 있습니다. 모두는 SVN에 저장됩니다. 또한 우리는 svn : externals를 사용하여 Framework 및 다른 타사 라이브러리를 응용 프로그램과 연결합니다.

모두 Phing을 사용하여 이루어졌지만 시간이 많이 걸렸지 만 Phing이 많은 도움을 주었으며 실제로 추천 할 수 있습니다.

클라이언트 특정 애드온은 phing을 사용하여 자동으로 가져옵니다. 모든 것은 빌드 속성을 통해 구성 할 수 있습니다.

데이터베이스 스키마 업데이트의 경우 Phing의 일부인 dbdeploy에 매우 만족합니다. 우리는 우리의 필요에 따라 약간 수정해야했습니다.

또한 미리 구성된 자동 압축 풀기 Linux 설치 프로그램을 만들기위한 지원을 추가 했으므로 배포 가능한 패키지를 만드는 복잡한 과정은 하나의 phing 대상을 호출하고 올바른 빌드 속성 파일을 전달하는 것으로 구성됩니다. 이러한 설치 프로그램을 만들려면이 간단한 기술 (http://www.linuxjournal.com/node/1005818)을 사용하십시오. 다시 Phing을 사용하여 생성 된 패키지는 SSH를 통해 실행되어 배포를 수행하는 대상 서버에 자동으로 업로드됩니다.

그런 다음 Hudson을 사용하여 자동으로 설치 프로그램 패키지를 만들고 (phpunit 테스트 및 Selenium/Hmres 테스트를 자동으로 실행하는 것 외에도) 정의 된 위치 또는 아티팩트로 저장합니다. 그러면 지원 팀이 패키지를 가져 와서 프로덕션 배포를 직접 수행 할 수 있습니다 (우리의 QA/테스트 환경은 허드슨에 의해 자동으로 업데이트됩니다).

또한 코드는 필요한 경우 ZendGuard를 사용하여 자동으로 인코딩되고 라이센스가 부여됩니다.

위의 간단한 설명은 Hudson, Phing, SVN 및 PHP를 사용하여 달성 할 수있는 것을 설명하기위한 것입니다. 이 기술에 대한 자세한 기술 정보는 분명히 너무 길지만 다른 곳에서 더 자세히 설명해 드리겠습니다.