2009-08-13 4 views
10

지속적인 통합 및 유닛 테스트를 위해 크루즈 컨트롤 위에서 실행되는 PHPUnderControl을 사용하고 있습니다. 또한 phpdoc을 생성하기 위해 PHPDocumentor를 실행하도록 설정하고 PHP 코드 스니퍼 (sniffer)를 실행하여 나를위한 표준 코딩을 시행합니다. 하지만 지금은 원격 서버에 쉽게 배포 할 수 있도록 동일한 서버 (우분투)에 무언가를 설치하려고합니다. 나는 이미 모든 성공적인 빌드 후에 SVN 내보내기가 트렁크에서 서버의 프로젝트 폴더 내의 디렉토리로 이루어 지도록 설정했습니다.PHP 빌드 시스템

필자는 구성된 원격 서버에 SSH하고 최신 내보내기를 압축하고, 복사하고, 압축을 풀고, 마이그레이션을 실행하는 약간의 사용자 지정 PHP 스크립트를 작성하려고합니다. 이와 같은 PHP 스크립트는 처음에는 여러 서버로 확장하기 전에는 너무 어렵지 않습니다. 거기에 시스템이 Phing, Fabric 및 기타 같은 알아.

제 질문은 누구나 이것들에 대한 경험이 있고 프로와 죄수를 제공 할 수 있습니까? 필자는 내 서버에 Phing을 설치하기 시작했고 Fabric과 함께 게임을 시도 할 것입니다. 그러나 더 광범위하게 사용하거나 확장해야하는 사람이 피드백을 줄 수 있는지 궁금합니다.

답변

8

PHP로 Capistrano을 사용했습니다 (Ruby로 작성된 것보다 Rails-y 일지라도).

사용하기가 정말 쉽지만, 그다지 확장 할 필요가 없다고 말했습니다. 다양한 스테이징/프로덕션 서버에 배포하지만 다단계 확장은 이러한 시나리오에서 유용합니다.

루비와 마찬가지로, 카피 스트라 노를 처음 접했고 그걸로 까다로울 경우 혼란 스러울 수있는 많은 마술과 "마술"이 있습니다.

다른 배포 도구와 어떻게 비교되는지는 말할 수 없습니다. 나는 우리가 Phing을 사용하는 것을 알고 있었지만 왜 우리가 Capistrano로 전환했는지 확신 할 수 없습니다.

+0

나는 카피스토라노를 좋아한다. +1 –

0

이러한 배포 시스템을 구현하려는 경우 위에서 설명한 내용과 약간 다른 해결책을 선택하게됩니다. 내 시스템에서 로컬로 실행되는 코드 대신 원격 서버 목록에 연결하여 "작업"을 수행하면 나머지 코드와 함께 업데이터 모듈을 패키징하고 필요할 때마다 서버에서 업데이트 데이터를 가져옵니다. (오히려 내가 그렇게 말했을 때). 그렇게하면 끝까지 걱정할 필요가 거의 없습니다 (요청시 http를 통해 업데이트 된 코드를 제공하고 원격 서버가 나머지를 처리해야합니다). 단지 2 센트.

1

우리는 phing을 사용하여 편리합니다. 우리는 포장용으로 사용하지 않지만, 찾고있는 것을 그렇게하기는 어렵지 않습니다. 우리는 주로 캐시 지우기, 개발 사이트 구축 및 개발 보조 업무와 같은 일반적인 작업에이 도구를 사용합니다. 그것은 큰 도움이되었고, 내가 모을 수있는 것에서 그것은 개미가 가진 모든 기능을 가지고 있지는 않지만 개미 복제품 인 것처럼 보인다.

0

제 3 세계 대회에서 아주 나쁜 인터넷 연결에서 일하고 rsync가 작동하지 않도록 모든 종류의 실패와 굶주린 연결이 있기 때문에 제 자신의 rsync 도구를 작성했습니다.

원격 시스템에서 마이 그 레이션을 실행하기 전에 백업을 수행하는 litte 스크립트를 작성해야합니다.

귀하의 웹 호스트 시스템에서 총 독립형 미러 시스템을 사용하고 있으며 마이그레이션 후 작지만 기본적인 단위 테스트를 포함하는 것이 좋습니다. 그런 다음 업데이트 된 웹 사이트를 온라인으로 전환하기 위해 루트 전환을 수행하십시오. 이렇게하려면 마이그레이션 중에 읽기 전용 모드로 몇 가지 대화 형 서비스를 실행해야합니다 (불행히도 많은 사람들이 구현하지 않는 기능).

하지만 우선이 작업을 수행하는 데 정말로 가치가 있다고 생각하십시오. - 분기별로 업데이트하는 경우 간단한 체크리스트로 충분할 것입니다.

2

Capistrano가 마음에 드시지만 조금 더 PHP'ish가 되었으면 좋겠다. Fredistrano을 확인하십시오.

필자는 자동화 된 빌드 (SVN 내보내기, Zend Guard 인코딩 등) 및 배포 시스템을 Phing을 사용하여 한 번 작성 했으므로 사용하기가 상당히 어려웠습니다. 특별한 작업을해야 할 때마다 나는 그것을 작동시키기 위해 많은 농구계로 뛰어 들어야한다고 느꼈다.

요즘에는 SVN 체크 아웃, 인코딩, SVN에 태그 생성 및 rsync를 통한 배포로 구축하는 간단한 bash 스크립트를 작성합니다. 저 기술일지도 모르지만, Phing은 몇 가지 우수한 기능을 가지고 있을지 모르지만 적어도 내 방식으로는 들어 가지 않습니다.

2

Bldr이라는 새로운 빌드 도구가 있습니다. 대부분의 빌드 시스템과 마찬가지로 xml 대신 config 용 Yaml을 사용하며 확장 성이 뛰어납니다.

http://bldr.io