Cách xử lý kích hoạt các mô-đun mới với Drush qua makefile


8

Trong công việc, chúng tôi đang chuyển sang thiết lập các trang web mới của chúng tôi trong git và phát triển địa phương. Cho đến nay tôi đã tạo một tệp tạo drush cùng với hồ sơ cài đặt và tôi đã viết kịch bản này thông qua con rối để khi người dùng thực hiện một bản sao mới của kho lưu trữ, nó sẽ tải xuống tất cả các gói và chạy cài đặt trang cơ bản. Điều này hoạt động tốt.

Bây giờ, câu hỏi của tôi là khi tôi cần sử dụng một mô-đun mới cho một trang web. Ví dụ: chúng tôi xây dựng một mô-đun mới cho trang web. Tôi muốn các nhà phát triển khác lấy từ git và tự động cài đặt mô-đun mới. Thêm nó vào tập tin tạo drush sẽ chỉ khiến nó được tải xuống và chạy 'drush si' sẽ khiến trang web được cài đặt lại, xóa sạch tất cả dữ liệu.

Cách tốt nhất để thực hiện điều này là gì?

Biên tập

Tôi cảm thấy tôi đã không giải thích điều này đúng. Tôi đang tìm cách để tự động kích hoạt các mô-đun dựa trên các mục thực hiện trong drush. Ý tưởng là người dùng kiểm tra một dự án và sau đó tôi sẽ chạy rối 'drush make' và 'drush si' nếu không có tệp settings.php tồn tại. Những gì tôi cần tìm hiểu là khi lần sau người dùng thực hiện thao tác kéo và chúng tôi đã thêm một mô-đun mới, làm thế nào để tự động kích hoạt thông qua một số tập lệnh. Nếu tôi cần tôi sẽ viết một cái gì đó để phân tích tệp tạo tệp và chạy 'drush en' bằng tay, nhưng tôi muốn tìm một cái gì đó được xây dựng sẵn để làm điều này.


"Drush en" không phải là những gì bạn muốn gây nguy hiểm?
Sam52

Tôi cần một cách để tự động hóa nó. 'drush en' có thể được chạy từ CLI, nhưng điều tôi muốn là một cách để xác định mô-đun nào mới và tự động kích hoạt chúng.
dragonmantank

1
Vấn đề sẽ xảy ra là việc có một mô-đun hiện diện dưới dạng một tập hợp các tệp không có nghĩa là bạn muốn nó được kích hoạt. Ai đó phải đưa ra quyết định đó. Ví dụ: nếu bạn tải xuống Chế độ xem, bạn cũng có được Giao diện người dùng. Bạn có muốn kích hoạt hay không? Đó là một quyết định có ý thức. Vì vậy, bạn cần một danh sách các mô-đun và nó cũng có thể có trong một tập lệnh.
Alfred Armstrong

Xin lỗi, quên điều đó đi. Tôi sắp xếp những gì bạn muốn nói mặc dù tôi không chắc về điểm của tất cả được thực hiện thông qua thực hiện.
Alfred Armstrong

1
@AlfredArmstrong ý tưởng là vì tôi đã phải quản lý tập tin tạo nên, chỉ sử dụng nó theo một cách nào đó. Nếu tôi muốn bật 'devel', nhưng không phải 'devel_generate', thì chỉ có 'devel' trong tệp tạo. Nếu sau đó tôi quyết định bật 'devel_generate', tôi sẽ thêm nó vào tệp tạo. Tôi không muốn làm điều đó chỉ dựa trên những tập tin có sẵn cụ thể vì lý do bạn đã đề cập, vì vậy tôi cần kiểm soát điều đó theo một cách nào đó.
dragonmantank

Câu trả lời:


4

Tôi đã làm việc cho một công ty có lưu lượng phát triển / giai đoạn / sản phẩm lớn cố gắng tự động hóa càng nhiều càng tốt. Mọi thứ phải được thực hiện bằng mã, viết kịch bản bằng cách sử dụng các tính năng hoặc cập nhật hook.

Về cơ bản, những gì bạn muốn là có 1 mô-đun tùy chỉnh tồn tại để chứa các móc cập nhật. Theo cách này, khi nhà phát triển kéo một bản cập nhật vào cơ sở mã, họ sẽ chạy bản cập nhật db và điều đó có thể thực hiện bất kỳ việc bật / tắt mô-đun nào cần phải xảy ra. Các móc cập nhật không ảnh hưởng đến cài đặt mới, vì người ta cho rằng mô-đun đã được cập nhật khi được cài đặt và sẽ chỉ thực hiện các cập nhật mới hơn.

Để tóm tắt:

  1. Tiếp tục sử dụng hồ sơ cài đặt của bạn để thực hiện các tác vụ cài đặt cần thiết (bật mô-đun, v.v.).
  2. Sử dụng mô-đun "cập nhật" tùy chỉnh sử dụng hook_update_NXXX () để bật / tắt các mô-đun mới và theo cách khác giữ cho các tác vụ quản trị trang web của bạn được đồng bộ hóa.

Đây là một bài viết nói về một cách tiếp cận tương tự và đưa ra các ví dụ mã.


1

Đâ là một câu hỏi tuyệt vời. drush makethuận tiện cho việc tải các mô-đun. Chúng tôi không muốn đóng góp cho sự phình to mô-đun. Ở đây trường hợp được thực hiện không mở rộng maketheo cách này. Có lẽ Tính năng là tốt nhất để quản lý trạng thái kích hoạt mô-đun của trang web, cũng như các khía cạnh cấu hình khác.


1

Xem xét sửa đổi quy trình làm việc của bạn.

Có vẻ như bạn muốn thực hiện công việc phân tán và "chia sẻ" cho phép các mô-đun và các giá trị cấu hình khác ... bằng cách nào đó.

Nếu bạn nghĩ về nó - ngay cả "cốt lõi" của Drupal và Drupal.org cũng không làm điều này. Mã được gửi tới các mô-đun Core và cộng đồng chạy trong Quá trình xây dựng liên tục. Drupal.org và nhiều dự án sử dụng Jenkins.

Để cài đặt Jenkins hướng đến sự phát triển của Drupal, nó cũng sử dụng Phing, xem phần git repo này: http://reload.github.io/jenkins-drupal-template/

Sử dụng Jenkins, bạn có thể đẩy mã đến repo Git chính của mình và xây dựng trang web cho một trang demo từ Hồ sơ cài đặt và Drush Makefile (s). Điều này không giải quyết chính xác vấn đề của bạn nhưng cung cấp 1 vị trí cho tất cả các thay đổi đẩy để thêm / bật / xóa các mô-đun và hy vọng tất cả các bạn không "phá vỡ bản dựng".

Giả sử bản dựng không bị hỏng - thật an toàn khi kéo các thay đổi của nó vào hệ thống phát triển địa phương của bạn.

Jenkins + một máy chủ Staging hoặc Development chỉ là 1 phần của sự phát triển.

Quy trình công việc cục bộ của bạn có thể sử dụng hồ sơ cài đặt + tệp thực hiện. Cân nhắc chia sẻ nội dung bằng các mô-đun tùy chỉnh với Di chuyển nếu bạn có thể đủ thời gian tạo nội dung. Ví dụ về chia sẻ nội dung với các nhà phát triển bằng Di chuyển và sử dụng Phing có thể được đọc ở đây:

http://marzeelabs.org/blog/2014/03/17/coding-as-a-team-content-fixenses/ http://marzeelabs.org/blog/2014/03/03/coding-as-a- nhóm tự động hóa-sử dụng-phing /

Cuối cùng hãy xem bản PDF này trong một phiên từ Drupal Camp Ohio 2014 về việc tích hợp liên tục và làm việc với nhóm của bạn:


1

Với cùng một mục đích, chúng tôi đang sử dụng Master . Nó sử dụng settings.php để cung cấp thông tin về các mô đun chủ. Với một lệnh đơn giản, drush master-executetất cả các mô-đun (và các phụ thuộc của chúng) bị thiếu sẽ được bật và các mô-đun không được sử dụng nữa bị vô hiệu hóa.

Hiện tại mô-đun không đọc thông tin từ tệp thực hiện, nhưng có lẽ đó có thể là một tùy chọn cho bản phát hành mới.


0

Bạn có thể kích hoạt các mô-đun bằng tay bằng cách đi qua tùy chọn Mô-đun hoặc bằng thiết bị đầu cuối bằng lệnh drush

drush en -y modulename1 modulename2 

và như thế.


Tôi đang tìm cách tự động hóa việc này dựa trên tệp tạo tệp, không chỉ là cách bật mô-đun theo cách thủ công.
dragonmantank

0

Các mô-đun có thể được kích hoạt theo 2 cách:

  1. hoặc từ thiết bị đầu cuối sử dụng lệnh drush bằng cách:
    A. drush dl modulename- để tải xuống mô-đun trước tiên
    B. drush en -y modulename- để bật mô-đun

  2. Bằng cách sử dụng tùy chọn menu Mô-đun và sau đó kích hoạt mô-đun từ số lượng mô-đun được hiển thị.


Tôi đang tìm cách tự động hóa việc này dựa trên tệp tạo tệp, không chỉ là cách bật mô-đun theo cách thủ công.
dragonmantank

Có một số cách khác. module_enable()ví dụ. Hoặc bằng cách nhập một cơ sở dữ liệu chuẩn bị.
leymannx

0

Tôi muốn một số điều này là chắc chắn. Hàm make được sử dụng để tải xuống các phần khác nhau của trang web: mô-đun, chủ đề và dự án thông qua git. Khi bạn viết hồ sơ cài đặt của bạn, bạn đang ghi vào tệp thông tin các mô-đun phụ thuộc. Vấn đề là khi bạn cần thêm mô-đun mới cho hồ sơ cài đặt của mình cho hồ sơ hiện có - tôi có đúng không?

Cho rằng bạn cần sử dụng hook_update_N khi N đứng cho cập nhật số. Móc được sử dụng cho mô-đun cần thực hiện các hành động như: cập nhật sơ đồ, thêm biến và được sử dụng cho các trang web và phân biệt, chẳng hạn như OpenScholar, để cho phép các mô-đun tải xuống mới trên trang web trực tiếp.

Bạn có thể cần phải thêm cái này trong mô-đun chung nhất và chức năng sẽ trông như thế này https://github.com/openscholar/openscholar/blob/SCHOLAR-3.x/openscholar/modules/os/os.install#L16

Móc cần được đặt trong tệp module.install. Nếu bạn sử dụng UI, bạn cần truy cập www.site.com/update.php và nếu bạn sử dụng drush, chỉ cần sử dụng lệnh drush updb.


0

Theo tôi hiểu, tệp Drush .make chỉ tải xuống các dự án từ drupal.org, nếu bạn muốn kích hoạt một số mô-đun, có thể thực hiện với cấu hình cài đặt ** (. Cài đặt) **. Cấu hình cài đặt cung cấp cho bạn các tùy chọn, mô-đun bạn muốn bật tại thời điểm cài đặt.

Gần đây tôi cũng đã đóng góp một bản phân phối với sự trợ giúp của tệp .make. Ngay cả tôi cũng chia sẻ toàn bộ kinh nghiệm của .make ở đây . Tôi biết điều này không liên quan đến chính xác những gì bạn đang hỏi nhưng nó có thể giúp bạn hiểu chính xác tập tin .make làm gì.

Vì vậy, từ toàn bộ tác vụ này, những gì tôi hiểu, sử dụng tệp .make bạn không thể tự động hóa kích hoạt mô-đun. Để làm điều này bạn cần làm theo một số phương pháp khác.

Tôi hy vọng URL diễn đàn này có thể giúp bạn. Tự động hóa Drupal với kịch bản Bash và Drush .

Bạn cần phải viết một số tập lệnh bash trong đó chính xác bạn sẽ sử dụng các lệnh Drush.

drush en -y modulename

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.