[capistrano] Capistrano-이전 릴리즈 정리

일반적으로 capistrano를 사용할 때는 배포 된 응용 프로그램에서 이전 릴리스를 수동으로 삭제합니다. 나는 당신이 달릴 수는 cap deploy:cleanup있지만 여전히 5 개의 릴리스를 남긴다 는 것을 이해 합니다. 이것이 의도 된 목적입니까? 이전 릴리스를 1 개의 이전 배포로 정리하는 다른 방법이 있습니까?



답변

:keep_releases변수를 사용하여 기본값 인 5를 대체 할 수 있습니다 . 이것을 확인하십시오 .


답변

deploy.rb에서이를 설정하면 자동으로이를 수행 할 수 있습니다.

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

과거 (이것은 정확히 어떤 버전인지 모르겠습니다)이 콜백이 기본값이지만 나중에 개발자는 결정하도록 사용자에게 맡기기로 결정했습니다. capistrano 3에서는 기본 배치 플로우에 다시 추가되었습니다.


답변

예를 들어 마지막 3을 제외한 모든 릴리스를 삭제하려면 다음을 실행할 수 있습니다.

cap deploy:cleanup -s keep_releases=3


답변

나는 비슷한 문제가 있었다. 일반 배포를 위해 5 개의 릴리스를 유지하고 싶었지만 특정 상황에서 모든 이전 릴리스를 제거 할 수 있어야했습니다.

나는 사용자 정의 작업 으로이 작업을 수행 할 수있었습니다. 파일을 작성 lib/capistrano/tasks/cleanup.rake하고 다음 코드를 추가하십시오.

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

사용 bundle exec cap staging cleanup_all하거나cap staging cleanup_all


답변