2011-06-29 22 views
8

Dự án của tôi có một đường ống nhiều bước bao gồm một số bước như Thu thập thông tin, NLP, v.v, nhưng tôi sẽ chỉ đề cập đến chúng như Step1, Step2, v.v. triển khai các môi trường khác nhau (dev, prod, v.v.).Chỉ chạy các nhiệm vụ Capistrano cho một số vai trò nhất định

Tôi tìm tôi sẽ sử dụng thành phần nhiều tầng cho Capistrano để triển khai cho các môi trường khác nhau (ví dụ: triển khai cap dev vs triển khai mũ).

Dường như cũng có ý nghĩa trực quan để sử dụng vai trò cho mỗi bước kênh. Tuy nhiên, mỗi bước chạy khá độc lập với phần còn lại của đường ống, do đó, mỗi bước có thể được khởi động lại/triển khai độc lập với các bước khác. Có vẻ như Capistrano chỉ hỗ trợ rõ ràng các tác vụ đang chạy cho một vai trò cụ thể. Cách tốt để làm điều này là gì?

Cách tốt nhất để thực hiện tác vụ xác định này cụ thể cho từng vai trò? Điều gì sẽ xảy ra nếu có một số nhiệm vụ phổ biến giữa các vai trò? Có lẽ phương pháp trợ giúp là câu trả lời ở đó?

Trả lời

1

Kiểm tra cuộc thảo luận này Creating a Capistrano task that performs different tasks based on role

task :stop_memcached, :roles => :memcache do 
... 
end 
+0

Không hoàn toàn là những gì tôi đang tìm kiếm. Ví dụ: nếu tôi có một nhiệm vụ như: ' công việc: clear_logs làm chạy "rm -f /tmp/blah.log" kết thúc ' như một phần của triển khai, tôi muốn chạy nó trên tất cả máy nếu tôi đã triển khai tất cả các bước trong đường ống của mình. Nhưng nếu tôi chỉ triển khai Bước 2 của đường ống, tôi sẽ chỉ muốn xóa nhật ký trên tất cả các máy có vai trò là Step2. Vấn đề với vai trò mà tôi đang gặp phải là họ giỏi xác định máy chạy nhiệm vụ nào, nhưng bạn dường như không thể xác định xem có thực sự chạy chúng hay không cho một triển khai cụ thể. – JZC

3

Không chắc đây là chính xác những gì bạn đang tìm kiếm, nhưng khi tôi muốn làm điều gì đó chỉ để một vai trò đặc biệt, tôi sử dụng vỏ capistrano. Ví dụ: giả sử tôi muốn triển khai nhưng chỉ với máy chủ ứng dụng của mình, tôi có thể thực hiện các thao tác sau:

cap production shell 
cap>with app 
cap>!deploy #or any other cap task you have 

Bạn cũng có thể sử dụng máy nếu muốn. Một lần nữa:

cap production shell 
cap>on <machine name or ip> 
cap>!deploy #or any other cap task you have 

Hy vọng nó giúp,

Scott

1

Không chắc tại phiên bản những gì các tính năng được thêm vào, nhưng nắp sẽ tìm trong các vai trò biến môi trường để xác định vai trò để chạy nên

$ ROLES=db cap deploy 
2

Nếu bạn muốn chạy tác vụ Capistrano từ dòng lệnh, nhưng chỉ cho một tập con của các vai trò được xác định, bạn có thể sử dụng tham số ROLES.

Lệnh dưới đây thực hiện nhiệm vụ category:task chỉ dành cho vai trò was:

cap ROLES=was category:task 

Tham số ROLES được đa giá trị, vì vậy bạn có thể thêm nhiều vai trò phân cách bằng dấu phẩy:

cap ROLES=was,db category:task 

Để biết thêm chi tiết , bạn có thể tham khảo tài liệu invoke

Các vấn đề liên quan