Làm thế nào để quản lý hiệu quả một trang web với Drush?


Câu trả lời:


29

"Tạo tệp", trong ngữ cảnh Drush và Drupal, xác định một tập hợp các mô-đun, chủ đề và thư viện tạo nên một trang web. Mặc dù người ta có thể dán toàn bộ thư mục trang web / all / mô-đun vào git, nhưng tệp tạo nhanh hơn rất nhiều để xử lý, cho cả git và nhà phát triển. Dưới đây là một tập tin thực hiện từ một dự án thực tế của tôi. Tôi đã cắt bỏ rất nhiều vì toàn bộ tệp có hàng trăm dòng, nhưng tôi đã giữ lại đủ để hiển thị tất cả các chức năng tôi đã sử dụng.

; 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"

Dòng api xác định Drush tạo API để sử dụng cho phần còn lại của tệp. Một điều quan trọng cần lưu ý về tệp, là tất cả các mô-đun đều có phiên bản cụ thể hoặc trỏ đến một lệnh git cụ thể. Chúng tôi không bao giờ có phiên bản -dev trong các tập tin của chúng tôi. Khi chúng tôi xuất hiện tại một cuộc họp khách hàng, hoặc bàn giao hồ sơ cho máy chủ Jenkins , không bao giờ có bất kỳ sự ngạc nhiên nào. Phiên bản chính xác có trong tệp nên được kiểm tra và dự kiến ​​sẽ vượt qua tất cả các loại thử nghiệm. Điều này rất quan trọng để có thể cung cấp một cái gì đó có chất lượng cao.

Trong công ty của tôi, thỏa thuận chung là mọi đội cung cấp một tập lệnh shell có tên là "build", trong thư mục gốc của kho lưu trữ, chịu trách nhiệm thiết lập trang web, để các bài kiểm tra tự động có thể được chạy bởi cùng một nhóm Thiết lập CI.

Cập nhật mô-đun có thể được thực hiện nhanh chóng trực tiếp trên các trang web để thử nghiệm, nhưng chính thức bằng cách cập nhật tệp tạo và xây dựng lại trang web.

Nhóm của tôi hiện đang sử dụng bộ tập lệnh xây dựng này . Tôi đang làm việc để chuyển phần lớn các chức năng sang một phần mở rộng drush sẽ sử dụng rất nhiều điều khoản. Một phiên bản CLI của Aegir nếu bạn muốn.


1
Thiên tài. Cảm ơn bạn đã dành thời gian để viết nó lên, nó rất hữu ích
Clive

Vâng, tôi đồng ý với Clive, nâng cấp như một bài viết rất hữu ích. Tôi quan tâm đến việc không phải cài đặt lặp lại cùng một bộ mô-đun và bản vá. @Letharion Tôi rất hân hạnh chào đón nếu bạn có thể giải thích một ngày nào đó về cách bạn tiến hành với điều đó. Bạn có cài đặt nó cục bộ hoặc máy chủ từ xa?
Artur

1
Chơi xung quanh với drush làm. Tôi hoàn toàn hiểu lý do đưa số phiên bản cố định vào đó. Tuy nhiên, làm thế nào để bạn cập nhật chúng? Có một drush làm tương đương cho drush up? Tại một số điểm, bạn cần cập nhật các phiên bản của mình lên phiên bản mới nhất (đặc biệt là các bản cập nhật bảo mật). Phải làm điều đó bằng tay với hàng tá mô-đun có vẻ khá tẻ nhạt ...
Berdir

1
Câu hỏi về Moar: Bạn có tệp .gitignore không hoặc làm cách nào để tránh cam kết các tệp "đã được tạo"? Nếu có, nó trông như thế nào? Đã thử làm một cái gì đó lạ mắt với ký tự đại diện và! nhưng nó không hoạt động cho các thư mục.
Berdir

1
Tôi không thực sự đồng ý. Thiếu -dev là những gì đảm bảo tính nhất quán, không phải là cách khác. Mỗi nhà phát triển có trách nhiệm đảm bảo bản vá được áp dụng, điều này có thể có nghĩa là đề cập đến bản sửa đổi git thay vì bản phát hành ổn định, nhưng không bao giờ có thể đoán trước được - có thể thay đổi từ bản dựng sang bản khác.
Letharion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.