사이트를 버전 제어로 가져 와서 지속적인 통합 환경을 설정해야합니다.


41

Drupal 6x 프로젝트의 기업가로서 (개발자별로) 버전 제어가 필요하지 않을 정도로 작게 시작했지만 지금은 그것 없이는 방법이 없다고 확신합니다. JIRA에 대한 광범위한 문서가 있으며, 모든 것을 다루는 잘 작성된 사용자 사례가 포함되어 있습니다. 이 작업을 수행하는 방법에 대해 조금 읽고 다음 계획을 생각해 냈습니다.

  1. 모듈을 사용하여 사이트 코드를 데이터베이스와 분리
    1. 문맥
    2. 풍모
    3. 강한 팔
    4. 프로파일 러
  2. SVN 저장소에 코드를 넣고 준비 사이트를 만듭니다.
  3. EC2 프로덕션 서버에서 스테이징 서버의 미러를 작성하십시오.
  4. Selenium 테스트를 작성하고 Saucelabs를 사용하여 클라우드에서 실행 하십시오.
  5. Elastic Bamboo를 사용하여 JIRA Studio에서 빌드 워크 플로우 생성
  6. Drush Make를 사용하여 프로파일 업데이트 및 설치
  7. 프로덕션 서버에서 업데이트 실행 (어떻게 잘 모르겠습니다)

우선, 약 50 개의 "기능"목록을 구성 요소 (뷰, 컨텐츠 유형, 모듈 등)로 구성했습니다. 이 사이트에는 약 12 ​​개의 사용자 정의 모듈 및 웹 서비스가 포함되어 있으므로 사용자 지정 코드가 포함 된 콘텐츠 유형 "application"(다른 대부분은 업그레이드 가능한 뷰 또는 모듈로 변환하려는 경우)을 언급하지 않아도됩니다. . 좋은 점은 현장이 아직 생산되지 않았기 때문에 위험이 여전히 제한되어 있다는 것입니다.

누구나 비슷한 일을 한 경험이 있습니까? 어떤 함정과 한계가 있습니까? 위의 계획을 개선 / 수정하는 데 대한 제안이나 전문가가 저에게 제공 할 수있는 통찰력이나 조언에 크게 감사드립니다.


매우 흥미로운 질문입니다. 그것은 내 웹 사이트에서도 구현하려고 생각했지만 효율적이지 않은 것처럼 포기했습니다. 당신이 그것으로 진행하는 경우, 우리에게 입력을 제공하십시오.
Tivie

3
확실히 흥미로운 질문이지만 대답하기도 어렵습니다. 여러 가지 질문을하므로 완전하고 최상의 답변을 제공하기가 어렵습니다. 한 가지 힌트 : IMHO, 버전 제어에 너무 작은 프로젝트는 없습니다. 특히 git과 같은 분산 VCS를 사용하면 코드를 로컬 리포지토리에 넣는 데 5 초가 걸립니다. 또한 참조 drupal.stackexchange.com/questions/316/...
Berdir

돌이켜 보면 실제로 버전 관리를하기에 너무 작은 프로젝트는 없습니다 (만 알고 있다면). 나는 그 링크를 통해 또 다른 중요한 질문을 제기합니다. 자체 git 저장소에서 Drupal 코어를 가져 오려면 SVN 대신 Drupal 프로젝트에 git을 사용해야합니까? 우리가 SVN을 사용하는 이유는 JIRA의 자동화 된 빌드 기능 (Elastic Bamboo)을 사용하고자한다는 점에서 JIRA Studio에 대한 기본 지원이 있기 때문입니다. 여러 질문에 대해 죄송합니다 :-(
druflex

업데이트 : 코드 검토 후 프로젝트에 많은 사용자 정의 코드가 있다고 판단되어 기능을 사용하여 내보내는 것이 실제로 어려울 수 있습니다. 따라서 우리 앞에있는 옵션은-(1) 그대로 완료 및 릴리스하고, 적절한 버전 제어를 사용하여 D7에서 병렬 개발을 시작합니다. 이것은 나중에 데이터베이스를 정리하는 것을 의미합니다. 무서운. (2) D6의 필수 기능을 다시 실행하고 릴리스 한 다음 연속 통합을 수행하십시오. (3) D7의 필수 기능을 다시 실행하고 릴리스 한 다음 연속 통합을 수행하십시오. 주요 질문은 이러한 각 옵션에 소요되는 시간입니다. 당신이 나라면, 당신은 무엇에 투표 하시겠습니까?
druflex

답변:


23

좋아, 나는 이것을 시도 할 것이다 :) 나는 당신의 질문에 완전히 대답 할 수는 없지만 흥미로운 힌트를 줄 수 있습니다. 내 번호 매기기는 귀하에게 직접 응답하지 않습니다 :)

  1. 주석에서 이미 언급했듯이 버전 제어에 비해 너무 작은 프로젝트는 없습니다. 나는 개인적으로 Git을 추천한다. 이유는 그것의 평범한 놀라운 속도 (git의 대기 시간은 초가 아닌 밀리 초 단위로 측정 됨)와 엄청난 양의 기능입니다. 이상한 이름과 인수로 인해 선택하기가 약간 어려울 수 있지만 다음 설명서는 그 중 많은 것들이 실제로 훌륭하다고 설명합니다 . http://www.eecs.harvard.edu/~cduan/technical/git/ . 또 다른 이유는 drupal.org에서 사용하기 때문에 git을 아는 것은 패치 제공, 패치 테스트, 릴리스 모듈 등을 제공하고 싶을 때 도움이 될 것입니다.

  2. 즉, 어떤 이유로 SVN을 사용하려면 (사용하려는 서비스와의 통합과 같은) SVN을 사용하십시오. SVN도 합리적으로 작동하며 소스 제어가없는 것보다 훨씬 좋습니다. (Linus Torvalds에 문의하지 않는 한 ..) 또한 마음이 바뀌면 한 VCS에서 다른 VCS로 마이그레이션하는 방법이 종종 있습니다. 예를 들어 SVN-> Git이 잘 작동합니다.

  3. 셋째,이 단계별로 접근하십시오. 한 번에 모든 것을 시도하지 마십시오. 새로운 도구를 배울 수있는 시간을 제공하십시오.

  4. Drupal 6에서 Drupal 7로 전환하는 것은 쉬운 일이 아닙니다. 특히 많은 사용자 정의 코드가 있습니다. 엔터티 / 필드 시스템과 같은 수많은 API 변경 사항과 새로운 개념 만 있으며, 많은 기여한 모듈이 아직 완전히 준비되지 않았다는 점이 있습니다.

  5. 배포 관리 Drupal 7의 약점 중 하나이며 Drupal 7에서도 그다지 큰 변화가 없었습니다. 우리는 문제를 알고 있으며 사람들이 Drupal 8에서이 문제를 해결하기 위해 열심히 노력하고 있습니다. http://groups.drupal.org / build-systems-change-management / cmi . 기능 등이 도움이되지만 은색 총알이 아닙니다. 모든 것을 기능으로 내보낼 수있는 것은 아닙니다.

  6. 준비 / 제작 사이트를 배포하기위한 Drupal-specifc 옵션도 있습니다. 판테온 (여전히 베타 버전)과 Acquia Dev Cloud 는 체크 아웃 할 가치가 있습니다.

  7. 지속적인 통합, 자동 테스트는 중요하고 실제로 유용 하지만 설정, 테스트 작성 등에 시간이 필요합니다. 이 시점에서 가질 수도 있고 없을 수도있는 시간. 그러나 특히 자동화 된 테스트는 점진적으로 개선하기 쉬운 영역입니다. 환경을 실행하도록 설정하면 시간이 허락함에 따라 점점 더 많은 테스트를 작성할 수 있습니다.

그래서, 여기 내입니다 추천 코멘트에서 업데이트 된 질문은 :

그대로 완료하고 릴리스 하지만 Drupal 6 용 VCS (버전 제어 시스템)를 사용하십시오. 사이트의 준비 환경을 만듭니다. 사용중인 (기여 된) 모듈을보고 그 시점에서 Drupal 7에 대한 포트가 가능한지 확인하십시오. 소요되는 시간을 과소 평가하지 마십시오. 또한 테스트 / 배포 프로세스를 향상 시키십시오. 가장 큰 이점 / 비용을 가져다 줄 것이라고 생각하는 것부터 시작하십시오.

더 구체적인 후속 질문을 만들거나 이미 존재하는 질문을 볼 수도 있습니다. 보시다시피, 이와 같은 질문에 몇 가지 힌트 만 주면 엄청난 시간이 걸리고 시간이 오래 걸릴 수 있습니다.


이렇게 포괄적 인 답변을 주셔서 대단히 감사합니다. 나는 당신이 추천하는 것을 정확히 결정했습니다. 실제로 Git도 포함합니다. Git 플러그인을 사용할 수 있도록 JIRA를 호스트에서 독립형으로 옮길 것입니다. 그래서 D6입니다. 지금 최신 버전을 출시하고 가능한 한 많은 기존 코드를 사용하여 적절한 모범 사례 사본을 병렬로 다시 작성하십시오. 지원해 주셔서 다시 한 번 감사드립니다. 건배!
druflex

+1 좋은 조언, 포괄적, 거리에서 실제 거리까지. 당신은 경험에서 말하고 있습니다. 감사.
therobyouknow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.