SVN এর সাথে আপনার প্রিয় ওয়েব অ্যাপ্লিকেশন স্থাপনার কর্মপ্রবাহ কি?

আমরা বর্তমানে কিছু কিছু জটিল স্থাপনার সেটআপ ব্যবহার করছি যা একটি দূরবর্তী SVN সার্ভার, DEV, STAGE, এবং PROD এর জন্য 3 SVN শাখাগুলিকে অন্তর্ভুক্ত করে, তাদের মধ্যে প্যাচের মাধ্যমে কোড প্রচার করা ইত্যাদি। আমি আশ্চর্যের বিষয় যে আপনি একটি ছোট ডেভেলপমেন্ট টিমের পরিস্থিতি ?

0
ro fr hi

11 উত্তর

একটি সহজ ট্রাংক শাখায় সবচেয়ে বেশি বর্তমান কোড থাকে, তারপর আমরা যখন লাইভ হয় তখন একটি শাখা কাটা। এটি বেশ কার্যকরীভাবে কাজ বলে মনে হচ্ছে। আপনি লাইভ সিস্টেমের জন্য কাটা যে বর্তমান শাখা ব্যর্থ হয় যখন আপনি সহজেই পূর্ববর্তী শাখা যেতে পারেন। এছাড়াও, এটি বর্তমানে যে শাখায় অবস্থিত বাগগুলি ঠিক করা সহজ, এবং যখন আপনি নতুন কাটা শুরু করেন তখন শাখার কার্যকরীভাবে মারা যায়, সেখানে কেবলমাত্র 1 টি প্রকৃত শাখা রয়েছে যা আপনাকে কাজ করতে হবে (এবং তারপরে ফিক্সগুলি থেকে একত্রিত করে লাইভ শাখা)

0
যোগ

আমরা রিলিজ শাখা ব্যবহার করি - এটি আমাদের জন্য শাখাগত বৈশিষ্ট্যের তুলনায় আরো দক্ষ বলে মনে হচ্ছে।

বিভিন্ন পরিবেশের জন্য বিভিন্ন শাখাগুলি করবেন না।

0
যোগ

যখন আমি একটি ছোট দেব দল (ছোট অর্থ আমাকে, অন্য প্রোগ্রামার এবং বস) কাজ করে, এটি বেশ বিশৃঙ্খল জগাখিচুড়ি ছিল। যাইহোক আমরা দেখেছি যে "গায়ক" ধরনের প্রক্রিয়া আমাদের জন্য কাজ করে।

দালালের এমন ব্যক্তি ছিলেন যে এই অ্যাপটিতে সর্বাধিক কাজ সম্পন্ন করেছিলেন (এই ক্ষেত্রে, আমি ২ টি প্রকল্প নিয়েছিলাম, যা তিনি গ্রাউন্ড আপ থেকে তৈরি করেছিলেন, তিনি 4 টি পছন্দ করেছিলেন)।

মূলত, যখনই তিনি আমার প্রকল্পে কাজ করতেন, তিনি আমাকে জানিয়েছিলেন যে তিনি কাজ করছেন, আমি নিশ্চিত যে রিপোজিটরি আপ টু ডেট এবং নির্মাণযোগ্য ছিল, তারপর তিনি টান, তার পরিবর্তন করতে হবে, তারপর commit । তিনি আমাকে জানালেন যে এটি করা হয়েছিল, আমি টান দিয়েছিলাম, নির্মাণ করবো এবং স্থাপন করব। ডিবি পরিবর্তন থাকলে আমরা DB পরিবর্তন করে সমস্ত স্ক্রিপ্টের সাথে একটি DB পরিবর্তন ফোল্ডার থাকতাম।

এটা অবশ্যই এটি অনেক গর্ত পাওয়া যায়, কিন্তু প্রক্রিয়া আমাদের জন্য কাজ করে, এবং আমাদের একে অপরের উপরে নির্মাণ থেকে রাখা।

0
যোগ

তিনটি শাখাগুলি অতিরিক্ত কাজের মতো শব্দ করে।

Environmental differences can be handled by having different versions of the relevant files in the trunk. i.e. database.yml & database.yml.prod. The deployment process should be environmentally aware and simply copy the per-environment files over the default ones.

0
যোগ

আমি এমন একটি পরিস্থিতির সাথে কাজ করি যা আপনার বর্তমানে আছে। আমি একটি তুলনা সঙ্গে নিযুক্ত করা হয়েছিল? ভাল? সমাধান এবং এটি নিম্নলিখিত লাইন বরাবর কিছু দৌড়ে।

লাইভ শাখার সার্ভারগুলি তাদের বর্তমান অবস্থাতে প্রতিনিধিত্ব করে।

কোনও বিকাশের কাজটি একটি শাখায় করা উচিত যা লাইভ থেকে নেওয়া হয়। এটি একজন ব্যক্তি অর্ধ ঘন্টা চাকরি বা এক বছরের দীর্ঘ মাল্টি টিম প্রকল্প হতে পারে। প্রায়ই যেমন পরিবর্তনগুলি পছন্দ করা হয়, এই উন্নয়ন শাখায় মার্জ করা যেতে পারে।

কাজের একটি অংশ লাইভ আগে, লাইভ থেকে পরিবর্তন আবার একত্রিত হয় এবং এটি একটি সম্ভাব্য রিলিজ হিসাবে ট্যাগ করা হয়। এই রিলিজের স্টেজিং পরিবেশে পরীক্ষা করা হয় এবং এটি যদি পরীক্ষাটি পাস করে তবে নতুন ট্যাগটি ট্যাগ থেকে নেওয়া হয়।

যদি আরও ভালো কাজ করে তবে এক টুকরা টুকরো কাজ এক প্রকাশের মধ্যে মার্জ করা সম্ভব।

এর মানে হল যে উন্নয়ন শাখাগুলিকে জীবিত থাকার তারিখ পর্যন্ত যথেষ্ট রাখা এবং যদি উন্নয়ন কাজে কোনও অংশ বাদ দেওয়া হয় তবে তা যথেষ্ট পরিমাণে গ্রহণযোগ্য নয়।

এক প্রজেক্ট থেকে অন্য একটি ডেভেলপার থেকে পরিবর্তন করার জন্য একটি ডেভেলপার কেবলমাত্র তাদের স্থানীয় ওয়ার্কিং পরিবেশে একটি পৃথক শাখায় সুইচ করতে পারেন।

আমরা আপনার সিস্টেমের সাথে যে সমস্যায় পড়েছি সেগুলির মধ্যে একটি হল যে DEV এটিকে খুব দ্রুত দ্রুত PROD সঙ্গে পেতে পারেন, তাই আপনি লাইভ বিরুদ্ধে উন্নয়নশীল না হয় এবং এটি পর্যায় পর্যন্ত ক্রস নির্ভরতা স্পট সহজ নয়। উপরের সমাধানটি এই সমস্যার সমাধান করে যখন এখনও বেশ লাইটওয়েট অবশিষ্ট থাকে।

0
যোগ

আমি ব্যক্তিগতভাবে স্থানীয়ভাবে (উন্নয়ন) কাজ যোগ, বৈশিষ্ট্য যোগ করা / এবং যখন আমি মনে করি এটি প্রস্তুত আমি ট্রাঙ্ক (উত্পাদন) উৎপাদন সার্ভারে আমি শুধু একটি svn আপডেট করতে হবে

0
যোগ

ওয়েব স্টাফিং স্টাফের জন্য আমরা শাখা ব্যবহার করি না; শুধুমাত্র ট্রাঙ্কের মধ্যে একত্রিত করার জন্য দীর্ঘমেয়াদি পরীক্ষা (পরীক্ষামূলক: এক দিনের বেশি) গ্রহণযোগ্য পরীক্ষামূলক জিনিসগুলির জন্য। ট্রাঙ্ক, 'ক্রমাগত ইন্টিগ্রেশন' শৈলীতে, একটি (আশা) কাজ, বর্তমান অবস্থা প্রতিনিধিত্ব করে।

সুতরাং, অধিকাংশ পরিবর্তন সরাসরি ট্রাঙ্ক করা। একটি ক্রুজ কন্ট্রোল। নেট সার্ভার স্বয়ংক্রিয়ভাবে এমন একটি মেশিনে আপডেট হবে যা IIS চালায় এবং সমস্ত অতিরিক্ত সাইটের রিসোর্সগুলির আপ-টু-ডেট কপিগুলি উপলব্ধ থাকে, যাতে সাইটের সম্পূর্ণভাবে পরিষ্কারভাবে পরীক্ষা করা যায় -এর মধ্যে। পরীক্ষার পর ফাইলগুলি সার্বজনীন সার্ভারে আপলোড করা হয়।

আমি এটা নিখুঁত পদ্ধতির বলতে হবে না, কিন্তু এটা সহজ (এবং আমাদের অপেক্ষাকৃত ছোট কর্মীদের জন্য উপযুক্ত) এবং অপেক্ষাকৃত নিরাপদ, এবং ঠিক জরিমানা কাজ করে।

0
যোগ

উন্নয়ন জন্য ট্রাঙ্ক, এবং উত্পাদন স্টাফ জন্য একটি শাখা (উত্পাদন)।

আমার স্থানীয় মেশিনে, আমার একটি ভার্চুয়াল হোস্ট রয়েছে যা ট্রাঙ্কের শাখায় স্থান করে দেয়, আমার পরিবর্তনগুলি পরীক্ষা করার জন্য।

ট্রাঙ্ক করতে কোনও একটি হুক চালু করে যা একটি svn এক্সপোর্ট করে এবং অনলাইন সার্ভারের dev URL- এর সাথে সিঙ্ক করে - তাই যদি সাইটটি stackoverflow.com হয় তবে এই হুক স্বয়ংক্রিয়ভাবে dev.stackoverflow.com আপডেট করে

তারপর আমি আমার স্থানীয় চেকআউটগুলির মধ্যে ট্রাঙ্ক থেকে উৎপাদন নির্বাচিত প্যাচ মার্জ করার জন্য svnmerge ব্যবহার। আমার প্রোডাকশন শাখার প্রতি নির্দেশ করে আমার স্থানীয় মেশিনে আবার একটি VirtualHost আছে।

যখন আমি উত্পাদন শাখায় একত্রিত পরিবর্তনগুলি জমা করি, তখন আবার একটি এসভিএন এক্সপোর্ট হুক উত্পাদন (লাইভ) রপ্তানি আপডেট করে এবং সাইট লাইভ হয়!

0
যোগ
আমি এটা পছন্দ করি কিন্তু কিভাবে এই পদ্ধতির সাথে আপনার ডাটাবেস আপডেট লাইন রাখতে পারি?
যোগ লেখক cgreeno, উৎস
ওয়েব সাইট কোড একটি অ্যাডমিন ইউআরএল থেকে ডাটাবেস আপডেট হ্যান্ডলগুলি, এবং আপগ্রেড করার সময় একটি ডাটাবেস 'সংস্করণ নম্বর' আছে
যোগ লেখক Thomas Vander Stichele, উৎস

ট্রাঙ্ক বর্তমান "প্রাথমিক" উন্নয়ন কোডबेस অন্তর্ভুক্ত।

একটি বিকাশকারী প্রায়ই কোনও মাঝারি থেকে দীর্ঘমেয়াদি প্রকল্পের জন্য একটি পৃথক শাখা তৈরি করে যা ট্রাঙ্ক কোডবেসে ঢুকতে পারে এবং অন্যান্য ডেভস এর পথে যেতে পারে। তিনি সম্পূর্ণ হলে তিনি ট্রাঙ্ক মধ্যে ফিরে মার্জ হবে।

আমরা একটি ট্যাগ-রিলিজ তৈরি করি প্রত্যেক সময় আমরা উত্পাদন কোডটি ধাক্কা। ফোল্ডার / ট্যাগগুলি কেবল সংস্করণ সংখ্যা।

উত্পাদনে নিয়োজিত করার জন্য আমরা একটি SVN এক্সপোর্ট স্টেজিং করছি। যখন এটি সন্তোষজনক হয় তখন আমরা উত্পাদন ক্লাস্টারগুলিতে রোল করার জন্য একটি সাধারণ rsync ব্যবহার করি।

0
যোগ

সাধারণ ট্যাগ / শাখা / ট্রাঙ্ক সংগঠনের সাথে আমার কোনও সমস্যা হয়নি।

সাধারণ চলমান উন্নয়ন ট্রাঙ্ক ঘটবে।

উত্পাদনের একটি রিলিজ রক্ষণ উপযুক্ত রিলিজ শাখা হয়।

শাখা মুক্ত করতে পরিবর্তন যা এখনও ট্রাঙ্কের সাথে সম্পর্কিত হয় মার্জ করা।

When a new version is ready for deployment it is tagged from trunk, then a branch is created from that tag. The new release branch is checked out to the server, parallel to the current release. When it's time to switch, the paths are juggled ("mv appdir appdir.old && mv appdir.new appdir").

বিকাশকারীরা উত্পাদন রিলিজ সমর্থন করে তারপর svn তাদের কার্যকরী কপিটি নতুন শাখায় স্যুইচ করুন, অথবা এর থেকে নতুন চেকআউট করুন।

0
যোগ

আমি অত্যন্ত (বিশেষ করে কাটা কাটা) বইটি সুপারিশ করছি ক্রমাগত ডেলিভারি , যা সফ্টওয়্যার পরিচালনার জন্য একটি সম্পূর্ণ প্রক্রিয়া বর্ণনা করে ধারাবাহিক ইন্টিগ্রেশন নীতির উপর ভিত্তি করে ডেলিভারি (অন্যদের মধ্যে)

আমি দৃঢ়ভাবে শাখাকে অপছন্দ করি এবং মার্জ পদ্ধতিটি মার্জ করতে পারি, যেহেতু এটি খুব নোংরা করতে পারে, এবং যেহেতু আপনি এমন কার্যকলাপগুলির সময় ব্যয় শেষ করেন যা প্রকৃতপক্ষে কোনও নতুন মান প্রদান করে না সেহেতু এটি খুবই অপ্রীতিকর। আপনি ইতিমধ্যেই আপনার কোডটি একবার উন্নত, পরীক্ষণ এবং সংশোধন করেছেন, কেন একটি পরিস্থিতি তৈরি করে (কোডটি অন্য শাখায় অনুলিপি করা) যার ফলে আপনি এই কাজটি পুনরায় চালু করতে চান?

যাইহোক, শাখা এবং মার্জ এড়ানোর উপায় ট্রাঙ্ক থেকে আপনার স্থাপনার আর্টিফিসমূহ নির্মাণ করা, এবং পরীক্ষা, স্টেজিং ইত্যাদি পাস করার ফলে নির্মিত আর্টিকেলগুলি (উৎসের পরিবর্তে) প্রচার করা হয়। এই ভাবে আপনি 100% নিশ্চিত যে আপনি যে জিনিসটি করছেন উত্পাদনের মধ্যে নির্বাণ আপনি পরীক্ষা করা হয় একই জিনিস।

যদি আপনি বিভিন্ন বৈশিষ্ট্য পেয়ে থাকেন যা বিভিন্ন সময়সূচীতে প্রকাশ করা প্রয়োজন হতে পারে, আপনি কিভাবে প্রয়োগ করেন (কার্যকরী কনফিগারযোগ্য, অথবা আরও উন্নততর মডুলার) আপনার পদ্ধতি পরিবর্তন করে আপনাকে একক উন্নয়ন ট্রাঙ্ক রাখতে সহায়তা করতে পারে।

0
যোগ
বইটি এখন বেরিয়ে এসেছে, এবং আমি যা পড়েছি তা থেকে ভাল মনে হচ্ছে।
যোগ লেখক Andrew Swan, উৎস