복붙노트

PHP 프로젝트를위한 배포 / 빌드 / CI주기 설정

PHP

PHP 프로젝트를위한 배포 / 빌드 / CI주기 설정

필자는 대부분 PHP를 기반으로하는 대규모 프로젝트에서 일하는 유일한 개발자입니다. 코드 기반의 변경을 전문적으로 처리하고 자동화하는 방법과 근본적인 변경을 수행하지 않고도 팀에서 작업 할 수있는 지속적인 통합 프로세스를 만들고 싶습니다.

지금 당장하고있는 일은 모든 프로젝트에 대한 로컬 테스트 환경을 갖추고 있습니다. 각 프로젝트마다 SVN을 사용합니다. 변경 사항은 로컬에서 테스트 된 다음 FTP를 통해 온라인 버전으로 전송됩니다. API 문서는 소스 코드에서 수동으로 생성됩니다. 단위 테스트는 내가 천천히 들어가는 것이고, 아직 일상 생활의 일부가 아닙니다.

내가 생각하고있는 "빌드 사이클"은 다음을 수행합니다.

내가 찾고 있어요

그리고 또한

나는 직장에 빠져서 간단한 해결책에 대한 강한 성향을 가지고 있습니다. 반면에 기능이 없으면 너무 제한적이라고 울 것입니다. :) 포인트 앤 클릭 솔루션도 환영합니다. 또한 PHP 프로젝트에서 사용할 수있는 상용 제품 권장 사항을 제공합니다.

내 설정

저는 로컬에서 (정확히는 7 개) Windows에서 작업하고 있으며 대부분의 클라이언트 프로젝트는 LAMP 스택에서 실행되며 종종 공유 호스팅 (= 원격 SSH 없음)에서 실행됩니다. 내 자신의 환경에서 실행할 수있는 솔루션을 찾고 있습니다. 이 문제를 해결하기 위해 Linux VM을 설치할 준비가되었습니다. 호스팅 솔루션은 설명 된 모든 측면을 제공하거나 프로세스의 다른 부분과 상호 작용할만큼 유연한 경우에만 나를 위해 흥미 롭습니다.

해결법

  1. ==============================

    1.나는 buildbot, CruiseControl.net, CruiseControl 및 Hudson을 겪어 왔습니다. CruiseControl *이 정말 마음에 들었지만 정말 복잡한 종속성 사례가 너무 많았습니다. buildbot은 설치하기 쉽지 않지만 멋진 분위기가 있습니다. (저는 파이썬 만 좋아합니다.) 그러나 허드슨은 전 3 팀에서 승리했다.

    나는 buildbot, CruiseControl.net, CruiseControl 및 Hudson을 겪어 왔습니다. CruiseControl *이 정말 마음에 들었지만 정말 복잡한 종속성 사례가 너무 많았습니다. buildbot은 설치하기 쉽지 않지만 멋진 분위기가 있습니다. (저는 파이썬 만 좋아합니다.) 그러나 허드슨은 전 3 팀에서 승리했다.

    주의 사항 : 필자는 위에 언급 한 빌드 서버 (CC.net은 모노로 실행 됨)의 기반으로 리눅스를 사용했지만, 크로스 플랫폼에 따라 문서를 실행해야합니다.

    선수 과목 :

    여기에서, 그것은 단지 :

    java -jar hudson.war
    

    이렇게하면 콘솔에서 바로 작은 서버 인스턴스가 실행되고 http : // localhost : 8080에서 해당 포트에서 다른 것을 실행하지 않으면 설치를 탐색 할 수 있습니다 (다른 포트를 지정할 수 있음). 포트를 위의 명령에 --httpPort = ANOTHER_HTTP_PORT 옵션을 전달하여) '설치'프로세스에서 모든 것이 잘 진행되었습니다.

    사용 가능한 플러그인 디렉토리 (http : // localhost : 8080 / pluginManager / available)로 가면 위의 작업을 지원하기위한 플러그인을 찾을 수 있습니다 (기본적으로 Subversion 지원이 설치되어 있습니다).

    그게 식욕을 자극한다면, 바람둥이 나 부두와 같은 자바 애플리케이션 서버를 설치해야합니다. 설치 지침은 모든 주요 응용 프로그램 서버에서 사용할 수 있습니다.

    업데이트 : Kohsuke Kawaguchi가 hudson 용 Windows 서비스 설치 프로그램을 구축했습니다.

    다음 워크 스루의 링크는 http : // localhost : 8080에있는 실행중인 hudson 인스턴스를 가정합니다.

    hudson에 플러그인이없는 프로세스를 설정하려면 빌드 설정에서 셸 스크립트를 통해 직접 호출하거나 자체 플러그인을 작성할 수 있습니다

    행운을 빕니다!

  2. ==============================

    2.당신이 찾고있는 용어는 "지속적인 통합"입니다.

    당신이 찾고있는 용어는 "지속적인 통합"입니다.

    다음은 GIT + phpundercontrol을 사용하는 사람의 예입니다 : http://maff.ailoo.net/2009/09/continuous-integration-phpundercontrol-git/

    CI 서버 인 CruiseControl은 Hosted SVN / GIT를 소스로 사용할 수 있습니다. GitHub 또는 Beanstalk 또는 다른 어떤 것으로도 사용할 수 있습니다.

    그런 다음이를 다음과 같은 종류의 소프트웨어와 통합 할 수 있습니다.

    이 호스팅 된 CI를 사용해 볼 수도 있습니다 : http://www.php-ci.net/hosting/create-project

    그러나 이러한 도구는 사용자가 직접 통합 할 경우 사용자 지정 지원이 필요합니다.

    프로젝트 관리 및 패치 관리에 대해서도 생각해 보셨습니까?

    Redmine을 프로젝트 관리에 사용할 수 있습니다. 통합 된 통합 지원이 있지만 클라이언트 측 (CI 서버가 아님)으로 만 제공됩니다.

    호스팅 된 SVN / GIT / 등을 사용해보십시오. 솔루션은 백업을 처리하고 서버를 계속 실행하므로 개발에 집중할 수 있습니다.

    허드슨 설치 방법에 대한 자습서는 다음을 참조하십시오. http://toptopic.wordpress.com/2009/02/26/php-and-hudson/

  3. ==============================

    3.Atlasian의 Bamboo 연속 통합 서버를 fisheye (저장소 탐색), jira (문제 추적기) 및 clover (코드 적용)와 같은 다른 제품과 함께 주요 PHP 프로젝트에 사용합니다.

    Atlasian의 Bamboo 연속 통합 서버를 fisheye (저장소 탐색), jira (문제 추적기) 및 clover (코드 적용)와 같은 다른 제품과 함께 주요 PHP 프로젝트에 사용합니다.

    그것은 SVN을 지원하고 힘내를 지원하고 훌륭한 사용자 인터페이스를 가지고 있습니다. 리눅스, 윈도우, 맥에서 사용할 수 있으며 자체 tomcat 서버에서 독립 실행 형으로 실행할 수 있습니다. 나 자신과 같은 사람들이 도구를 설치하는 데 며칠 씩 걸리는 것을 좋아하지 않습니다.) 비싸 보일지 모르지만, 혼자 개발자가되어서 저는 10 달러 (소프트웨어로 10 달러)에 스타터 키트 라이센스를 구입했습니다. 이것은 소규모 팀에게 좋으며 볼만한 가치가 있습니다.

  4. ==============================

    4.PHPTesting PHPCI 이것은 PHP로 제작 된 훌륭한 통합 서버입니다.

    PHPTesting PHPCI 이것은 PHP로 제작 된 훌륭한 통합 서버입니다.

    또한 무료이며 오픈 소스입니다. :)

    플러그인 수를 가지고 있습니다.

    PHPCI에는 다음을위한 통합 플러그인이 포함되어 있습니다.

  5. ==============================

    5.나는 대부분 시스템 관리자지만 때로는 PHP 코드도 있습니다. 사이드 프로젝트로서 저는 젠킨스 (Jenkins)를 사용하여 완전한 PHP PHP 환경을 설정하는 것을 간단하고 고통스럽게 만들 스크립트를 만들었습니다. 또한 샘플 프로젝트를 실행하여 각 빌드 단계가 구성된 방법을 볼 수 있습니다.

    나는 대부분 시스템 관리자지만 때로는 PHP 코드도 있습니다. 사이드 프로젝트로서 저는 젠킨스 (Jenkins)를 사용하여 완전한 PHP PHP 환경을 설정하는 것을 간단하고 고통스럽게 만들 스크립트를 만들었습니다. 또한 샘플 프로젝트를 실행하여 각 빌드 단계가 구성된 방법을 볼 수 있습니다.

    데비안 / 우분투 상자와 셸 액세스가 필요한 모든 것을 시험해보고 싶다면.

    http://yauh.de/articles/379/setting-up-a-ci-environment-for-php-projects-using-jenkins-ci

    업데이트 내 대답에 일부 내용을 추가하려면,

    Ansible을 사용하여 PHP 용 Jenkins CI를 간단하게 설정할 수 있습니다. v1.4부터는 galaxy.ansibleworks.com 커뮤니티 사이트에서 다운로드 할 수있는 역할을 지원하며 무거운 짐을 덜어줍니다. jenkins-php라고합니다.

  6. ==============================

    6.Jenkins http://jenkins-ci.org/를 사용하는 것이 좋습니다. 무료이며 오픈 소스입니다.

    Jenkins http://jenkins-ci.org/를 사용하는 것이 좋습니다. 무료이며 오픈 소스입니다.

    설치가 간단하고 여러 플랫폼에서 작동하며 SonarQube (+ SQUALE)와 같은 다른 지속적인 통합 도구와 통합하여 자동화 된 테스트 용 기술 부채 및 Thucydides를 측정합니다.

    SVN 대신 버전 제어를 위해 GIT 또는 GIT 허브를 사용하는 것이 좋습니다. 필자의 관점에서 볼 때 나중에 개발 작업을 확장하는 데 도움이되는 더 나은 버전 제어 시스템 일뿐입니다.

    PHP 프로젝트를 주로 사용하기 때문에 사용할 수있는 몇 가지 도구가 있습니다.

    PHPUnit - 단위 테스트 용

    PHP CodeSniffer - 코딩 표준 검사

    PHP 의존 - PHP 코드 의존성을 보여줍니다.

    XDEBUG - 성능 테스트 용

    이 모든 도구는 젠킨스 (Jenkins) 직무로 시작되며 코드의 품질과 성능을 향상시킵니다.

    행운을 빈다.

  7. ==============================

    7.나는 많은 제품이나 사용하는 제품 종류를 사용하지 않지만 내 경험을 줄 것이다.

    나는 많은 제품이나 사용하는 제품 종류를 사용하지 않지만 내 경험을 줄 것이다.

    내 PROD 환경 parrallel에서 테스트 환경을 실행합니다. 나는 지역 시험 자체가 없다. 실제 테스트 환경에서 soemthing을 얻는 것이 너무 어렵다면 빌드 프로세스를 수정합니다. 환경이 다르기 때문에 로컬에서 테스트 할 때 요점은 표시되지 않습니다. 업데이트 : 내가 로컬로 할 수있는 일은 "PHP -l"을 실행하여 업로드하기 전입니다. 어리석은 실수를 저지른다.

    빌드 프로세스는 커밋되지 않은 코드가 포함 된 현재 작업 영역에있는 작업과 함께 작동합니다. 이것은 모두의 차 한잔이 아니지만, 나는 아주 자주 시험 할 것입니다. PROD에 가기 전에 모든 것이 커밋됩니다.

    내 빌드 프로세스 중 일부 (사용자와 유사)는 두 개의 META 파일을 만듭니다. 하나는 마지막 (일반적으로) 100 개의 변경 사항을 포함하고 또한 현재 변경 목록 번호를 제공합니다. 어떤 변경 사항이 설치되었는지 보여줍니다. 다른 하나는 CLIENTSPEC (PERFORCE의 용어로)을 포함하고 있는데,이 빌드에서 어떤 브랜치가 사용되었는지 정확히 알려줍니다. 함께하면 재현 가능한 빌드가됩니다.

    필자는 대상 환경을 직접 구축하지는 않지만 서버의 준비 영역에 구축합니다. SSH를 사용하므로이 점이 의미가 있습니다. 이것은 나에게 몇 가지 이점을 준다. 가장 중요한 것은 큰 업로드를 통해 절반이 죽는 것을 방지합니다. 또한 META 파일을 저장할 위치를 제공하고 모든 빌드 파일이 자동으로 보관되므로 (다시 빌드로 돌아갈 수 있음) 스크립트는 또한 업데이트를 기록합니다 (로그 스트림에 항목이 있고 전 및 후를 볼 수 있습니다). 그리고 모든 데몬을 시작합니다 ( "daemontsools"svc -t "를 사용합니다). 이 모든 것은 대상 기계에서 더 좋습니다.

    한 가지 다른 문제는 DB 변경입니다. 나는 스키마가 바뀔 때마다 업데이트하는 DB 스키마의 마스터 스크립트를 유지한다. 각 변경 사항은 또한 빌드와 함께 스테이징 영역에 업로드되는 changes.sql 스크립트로 이동합니다. 이 스크립트는 설치 스크립트의 일부로 실행됩니다.

  8. ==============================

    8.나는 최근에 같은 종류의 프로세스를 시작했고 svn 호스팅을 위해 Beanstalk을 사용하고 있습니다.

    나는 최근에 같은 종류의 프로세스를 시작했고 svn 호스팅을 위해 Beanstalk을 사용하고 있습니다.

    유료 계정에는 두 가지 멋진 기능이 있습니다 ($ 15 pm부터 시작).

    나는이 두 가지 기능을 가진 다른 호스팅 또는 자체 호스팅 svn 서버가있을 것이라고 확신하지만, 콩나무는 경험이 있으며 매우 잘 작동하고 있습니다.

    또한 API가 있습니다.이 API를 사용하면 배치를 프로세스에 추가로 통합 할 수 있습니다.

  9. ==============================

    9.무료 호스팅 CI 플랫폼 인 fazend.com을 고려해보십시오.이 플랫폼은 구성 및 설치 절차를 자동화합니다. 버전 관리, 버그 추적, CI 서버, 테스트 환경 등을 설정할 필요가 없습니다. 모든 것은 주문형입니다.

    무료 호스팅 CI 플랫폼 인 fazend.com을 고려해보십시오.이 플랫폼은 구성 및 설치 절차를 자동화합니다. 버전 관리, 버그 추적, CI 서버, 테스트 환경 등을 설정할 필요가 없습니다. 모든 것은 주문형입니다.

  10. from https://stackoverflow.com/questions/2180460/setting-up-a-deployment-build-ci-cycle-for-php-projects by cc-by-sa and MIT license