Drush make로 사이트를 효과적으로 관리하는 방법은 무엇입니까?


답변:


29

Drush and Drupal 컨텍스트에서 "파일 만들기"는 사이트를 구성하는 모듈, 테마 및 라이브러리 세트를 정의합니다. 전체 sites / all / modules 디렉토리를 git에 넣을 수는 있지만 make 파일은 git과 개발자 모두 처리하기가 훨씬 빠릅니다. 아래는 실제 프로젝트에서 만든 파일입니다. 전체 파일이 수백 줄이기 때문에 많은 부분을 잘라 냈지만 사용했던 모든 기능을 보여줄만큼 충분히 유지했습니다.

; API
api = 2

; Core
core = 7.x
projects[drupal][version] = 7.14

; Contrib modules
projects[date][version] = 2.0-alpha4
projects[email][version] = 1.0

; Media and file_entity go hand in hand - please make sure they work together.
projects[media][version] = 2.0-unstable5
projects[file_entity][version] = 2.0-unstable5

; Cron modules
projects[ultimate_cron][version] = 1.6
projects[background_process][version] = 1.12

; Performance modules
projects[expire][version] = 1.0-alpha2
projects[cache_actions][version] = 2.0-alpha3

; Unstable modules
projects[menu_node_views][type] = module
projects[menu_node_views][download][type] = git
projects[menu_node_views][download][url] = http://git.drupal.org/project/menu_node_views.git
projects[menu_node_views][download][revision] = f46dd41eb8c4e693a6642a6c461afa57d99a6f1b

projects[filefield_sources_plupload][type] = module
projects[filefield_sources_plupload][download][type] = git
projects[filefield_sources_plupload][download][url] = http://git.drupal.org/project/filefield_sources_plupload.git
projects[filefield_sources_plupload][download][revision] = da374770b80fcbc0dab17158d38c8436ef29caca

projects[menu_token][type] = module
projects[menu_token][download][type] = git
projects[menu_token][download][url] = http://git.drupal.org/project/menu_token.git
projects[menu_token][download][revision] = 8c18fbb

; Libraries
libraries[mediaelement][download][type] = "file"
libraries[mediaelement][download][url] = "https://github.com/johndyer/mediaelement/zipball/2.7.0"

; Patches

; #1491150: node_load in menu_node_menu_link_insert is not safe - http://drupal.org/node/1491150
projects[menu_node][patch][] = http://drupal.org/files/menu_node-node_load-in-menu_node_menu_link_insert-1491150-1.patch

; Fix rendering of relation endpoints
projects[relation][patch][] = http://drupal.org/files/relation_table_endpoints_break.patch
projects[relation][patch][] = http://drupal.org/files/relation_bundle_permissions.patch

libraries[jquery-json-min][download][type] = "file"
libraries[jquery-json-min][download][url] = "http://jquery-json.googlecode.com/files/jquery.json-2.3.min.js"
libraries[jquery-json-min][download][sha1] = "2a4615b93c65dd50f92117c570121035a0327fee"
libraries[jquery-json-min][destination] = "libraries/jquery-json"

api 줄은 파일의 나머지 부분에 사용할 Drush make API를 정의합니다. 파일에 대해 주목해야 할 중요한 사항은 모든 모듈에 특정 버전이 있거나 특정 자식 커밋을 가리 킵니다. 우리는 결코 우리의 파일 -dev 버전이 없습니다. 우리는에 메이크업 파일을 통해 클라이언트 회의, 또는 손에 표시 할 때 젠킨스의 서버가 있어야 결코 놀랄 수 없습니다. 파일에 포함 된 정확한 버전을 테스트해야하며 모든 유형의 테스트를 통과해야합니다. 이것은 고품질의 것을 전달할 수있는 것이 중요합니다.

우리 회사의 일반적인 합의는 모든 팀이 저장소의 루트에 "빌드"라는 쉘 스크립트를 제공하여 사이트 설정을 담당하므로 동일한 교차 팀에서 자동 테스트를 실행할 수 있다는 것입니다. CI 설정.

테스트를 위해 사이트에서 직접 모듈 업데이트를 신속하게 수행 할 수 있지만 공식적으로 make 파일을 업데이트하고 사이트를 다시 빌드해야합니다.

우리 팀은 현재이 빌드 스크립트 세트를 사용합니다 . 많은 기능을 프로비저닝을 많이 사용하는 drush 확장으로 옮기려고 노력하고 있습니다. Aegir의 CLI 버전입니다.


1
천재. 이 글을 작성해 주셔서 감사합니다. 매우 유용합니다
Clive

예, Clive에 동의하며 매우 유용한 게시물로 찬성했습니다. 동일한 모듈 및 패치 세트를 반복적으로 설치할 필요가 없습니다. @ 레타 리온 나는 당신이 어떻게 진행하는지 언젠가 정교하게 설명 할 수 있다면 진심으로 환영합니다. 로컬 또는 원격 서버에 설치합니까?
Artur

1
drush make로 놀기. 나는 거기에 고정 버전 번호를 넣는 이유를 완전히 이해합니다. 그러나 어떻게 업데이트합니까? 돌진과 동등한 돌진이 있습니까? 특정 시점에서 버전을 최신 버전 (특히 보안 업데이트)으로 업데이트해야합니다. 수십 개의 모듈로 수동으로 수행
해야하는

1
질문이 많을 경우 : .gitignore 파일이 있습니까? 또는 "maked"파일의 커밋을 어떻게 피합니까? 그렇다면 어떻게 보입니까? 와일드 카드로 멋진 것을 시도했습니다! 그러나 디렉토리에서는 작동하지 않습니다.
Berdir

1
정말 동의하지 않습니다. -dev의 부족은 다른 방법이 아닌 일관성을 보장하는 것입니다. 패치를 적용하는 것은 각 개발자의 책임입니다. 즉, 안정적인 릴리스 대신 git 개정판을 참조하지만 예측할 수없는 -dev는 빌드에서 다른 것으로 변경할 수 없습니다.
Letharion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.