ক্যাপিস্ট্রানো - পুরানো প্রকাশগুলি পরিষ্কার করুন


125

সাধারণত ক্যাপিস্ট্রানো ব্যবহার করার সময়, আমি গিয়ে ডিপ্লোয় করা অ্যাপ্লিকেশন থেকে পুরানো প্রকাশগুলি ম্যানুয়ালি মুছে ফেলব। আমি বুঝতে পারি যে আপনি চালাতে পারেন cap deploy:cleanupতবে এটি এখনও 5 টি প্রকাশ প্রকাশ করে। এটি কি এটি উদ্দেশ্যযুক্ত উদ্দেশ্য? পুরানো রিলিজগুলি কেবল 1 টি পূর্ববর্তী মোতায়েনের জন্য কী পরিষ্কার করার অন্য কোনও উপায় আছে?


কিছু পূর্ববর্তী রিলিজ রাখা সর্বদা ভাল ধারণা, তারপরে আপনি যদি সর্বশেষ মোতায়েন করেন তবে একটি বড় ভুল থাকলে আপনি ঠিক না করা অবধি পূর্বের রিলিজটিতে ক্যাপিস্ট্রানো (ক্যাপ মোতায়েন: রোলব্যাক) দিয়ে দ্রুত রোলব্যাক করতে পারেন।
দামোইজার

উত্তর:


155

আপনি :keep_releasesডিফল্ট ৫ টি ওভাররাইড করতে ভেরিয়েবলটি ব্যবহার করতে পারেন this এটি দেখুন ।


2
লক্ষ্য করার মতো বিষয় হতে পারে যে এমনকি + rm কমান্ড কিছু ফাইল অপসারণ করতে ব্যর্থ হলেও afterহুকের মাধ্যমে ডেকে ডাকা হয়ে গেলে কাজটি নীরবে "সফল" বলে মনে হচ্ছে । এটিকে কল করা সরাসরি ত্রুটিগুলি দেখায় ... আমি যখন বুঝতে পারি ডিস্কের জায়গার বাইরে চলে যাওয়া শুরু হয়েছিল তখনই আমি এটি বুঝতে পেরেছিলাম।
join

8
@ জোশ আপনি এই উত্তরটি মেনে নিয়েছেন, তবে নীচের হিসাবে আগেই বলেছি আপনি "ডিপ্লয়: ক্লিনআপ" এর জন্য কলব্যাক সেট করেছেন কিনা তা আপনার পরীক্ষা করা উচিত since
দিয়েগো প্ল্লেঞ্জ

131

আপনি আপনার ডিপ্লয়ে.আরবিতে এটি সেট করে স্বয়ংক্রিয়ভাবে এটি করতে পারেন

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

অতীতে (ঠিক কোন সংস্করণটি আমি জানি না) এই কলব্যাকটি ডিফল্ট ছিল তবে পরে বিকাশকারী এটি সিদ্ধান্ত নেওয়ার জন্য এটি ব্যবহারকারীর কাছে রেখে যাওয়ার সিদ্ধান্ত নেন। ক্যাপিস্ট্রানো 3 এ এটি ডিফল্ট মোতায়েন প্রবাহে ফিরে যুক্ত হয়েছিল।


1
ধন্যবাদ, ডিয়েগো আপনার উত্তরটি Capistrano v2.14.1 এ সঠিকভাবে কাজ করে।
স্কার্ভার 2


41

আপনি যদি শেষ 3 বাদে সমস্ত রিলিজ মুছতে চান উদাহরণস্বরূপ আপনি চালাতে পারেন:

cap deploy:cleanup -s keep_releases=3

7
কাজ করে না। optionParser::InvalidOption: invalid option: s
স্নোম্যান

0

আমারও একই সমস্যা ছিল। আমি সাধারণ মোতায়েনের জন্য 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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.