Chúng tôi đang sử dụng Capistrano/Webistrano (với đá quý không có triển khai của Lee Hambley) để đẩy ứng dụng PHP của chúng tôi đến các máy chủ sản xuất. Tôi có một số nhiệm vụ tùy chỉnh chạy trong các phần khác nhau của quá trình triển khai.Làm thế nào để có Capistrano KHÔNG rollback nếu một nhiệm vụ không
Ví dụ: tôi có các tác vụ cố gắng dừng và khởi động lại một bản sao cầu nối. Tuy nhiên, đôi khi bit này không thành công trong quá trình triển khai, vì vậy Capistrano cuộn lùi toàn bộ triển khai và hoàn nguyên về bản sửa đổi trước đó. Đây là một nỗi đau. :-)
Tôi muốn nói với Capistrano bỏ qua kết quả trả về của các tác vụ này, vì vậy nếu chúng không thành công, Capistrano sẽ tiếp tục theo cách của nó và hoàn tất triển khai. Nó rất dễ dàng cho tôi để ssh đến máy chủ sau khi thực tế và đúng cách giết và khởi động lại dụ solr, hơn là phải làm một triển khai hoàn toàn một lần nữa.
Dưới đây là một số bộ phận có liên quan của các kịch bản triển khai:
before "deploy:symlink", :solr_kill
after "deploy:symlink", :solr_start, :solr_index
task :solr_kill do
run "cd #{current_path}/Base ; #{sudo} phing solr-kill"
end
task :solr_start do
run "cd #{current_path}/Base ; #{sudo} phing solr-start"
run "sleep 10"
end
task :solr_index do
run "#{sudo} #{current_path}/Base/Bin/app.php cron run solr_index_cron"
end
Cảm ơn, Chris. Nhiệm vụ của tôi là mãi mãi một công việc đang diễn ra, nhưng điều này sẽ giúp cho đến khi tôi có cơ hội từ từ cải thiện chúng để xử lý lỗi tốt hơn. – TravellingGuy
Có cách nào khác để làm điều này không? Điều gì xảy ra nếu bạn muốn dừng lỗi và kiểm tra trạng thái? –
Cách kiểm tra trạng thái: chạy 'cap -d deploy'. -d là để "gỡ rối" có nghĩa là Capistrano sẽ tạm dừng trước khi thực hiện từng tác vụ và yêu cầu bạn tiếp tục hoặc hủy bỏ. Khi bạn nhận được lệnh mà bạn muốn gỡ lỗi đơn giản là không trả lời lời nhắc, hãy mở một tab/cửa sổ đầu cuối mới và SSH đến máy chủ triển khai của bạn và thực hiện gỡ lỗi của bạn :) – Bendihossan