2010-01-23 43 views
123

Thông thường khi sử dụng capistrano, tôi sẽ xóa các phiên bản cũ khỏi ứng dụng được triển khai theo cách thủ công. Tôi hiểu rằng bạn có thể chạy cap deploy:cleanup nhưng vẫn còn 5 bản phát hành. Đây có phải là mục đích dự định không? Có cách nào khác để dọn dẹp các bản phát hành cũ chỉ với 1 lần triển khai trước đó không?Capistrano - dọn dẹp các phiên bản cũ

+0

nó bao giờ là một ý tưởng tốt để giữ một số phiên bản trước, sau đó nếu bạn triển khai cuối cùng chứa một sai lầm lớn, bạn có thể nhanh chóng rollback với capistrano (nắp triển khai: rollback) đến bản phát hành trước cho đến khi bạn khắc phục. – damoiser

Trả lời

150

Bạn có thể sử dụng biến số :keep_releases để ghi đè mặc định là 5. Kiểm tra this.

+0

Tuyệt. Đó là chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn. – Josh

+4

Bạn được chào đón! Bạn có thể vừa chấp nhận câu trả lời! :-) – jcrossley3

+2

@Josh, chắc chắn, chấp nhận câu trả lời này nếu nó giải quyết được vấn đề của bạn. Cả hai bạn có được điểm đại diện theo cách này. –

126

Bạn có thể làm điều này tự động bằng cách thiết lập này trong deploy.rb

set :keep_releases, 1 
after "deploy:update", "deploy:cleanup" 

của bạn Trong quá khứ (Tôi không biết chính xác phiên bản nào) gọi lại này là mặc định, nhưng sau đó các nhà phát triển quyết định rời khỏi nó cho người dùng quyết định. Trong capistrano 3 nó đã được thêm trở lại dòng chảy triển khai mặc định.

+1

Cảm ơn, Diego. Câu trả lời của bạn hoạt động chính xác trong Capistrano v2.14.1. – scarver2

+1

Cảm ơn @diego điều này thực sự đã giúp! – gouravtiwari21

+1

Dường như [Capistrano 3 calls 'deploy: cleanup' như một phần của luồng triển khai] (https://github.com/capistrano/capistrano/blob/690afc0c5c3c43d2920b0bfdeb9323c286b12106/lib/capistrano/tasks/deploy.rake#L23). – Dennis

38

Nếu bạn muốn xóa tất cả các phiên ngoại trừ người cuối cùng 3 ví dụ bạn có thể chạy:

cap deploy:cleanup -s keep_releases=3 
+3

Không hoạt động. 'optionParser :: InvalidOption: tùy chọn không hợp lệ: s' – Snowman

0

Tôi đã có một vấn đề tương tự. Tôi muốn giữ 5 bản phát hành để triển khai bình thường nhưng cần thiết cho các tình huống nhất định để có thể xóa tất cả các bản phát hành trước đó.

Tôi có thể thực hiện tác vụ này bằng tác vụ tùy chỉnh. Tạo một tệp lib/capistrano/tasks/cleanup.rake và thêm mã sau đây.

desc "Remove all but the last release" 
task :cleanup_all do 
    set :keep_releases, 1 
    invoke "deploy:cleanup" 
end 

Để chạy sử dụng bundle exec cap staging cleanup_all hoặc cap staging cleanup_all

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