লাইভ সার্ভারগুলিতে আপনি কীভাবে আপনার এএসপি.এনইটি অ্যাপ্লিকেশন স্থাপন করবেন?


104

আপনি একটি এএসপি.এনইটি ওয়েব অ্যাপ্লিকেশন প্রকল্প ( নয় এএসপি.নেট ওয়েব সাইট) উত্পাদনে স্থাপন করতে আপনি বিভিন্ন কৌশল / সরঞ্জামের সন্ধান করছেন ?

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

  1. আপনি কি কিছু নির্দিষ্ট সরঞ্জাম ব্যবহার করছেন বা কেবল এক্সসিপিওয়াই? অ্যাপ্লিকেশনটি কীভাবে প্যাকেজ করা হয়েছে (জিপ, এমএসআই, ...)?

  2. যখন প্রথমবারের মতো কোনও অ্যাপ্লিকেশন মোতায়েন করা হয় আপনি কীভাবে অ্যাপ পুল এবং ভার্চুয়াল ডিরেক্টরি সেটআপ করবেন (আপনি সেগুলি ম্যানুয়ালি বা কোনও সরঞ্জাম দিয়ে তৈরি করেন)?

  3. যখন কোনও স্ট্যাটিক রিসোর্স পরিবর্তন হয় (সিএসএস, জেএস বা চিত্র ফাইল) আপনি পুরো অ্যাপ্লিকেশনটি পুনরায় প্রবর্তন করেন বা কেবল পরিবর্তিত সংস্থানটি? কোনও অ্যাসেম্বলি / এএসপিএক্স পৃষ্ঠা পরিবর্তিত হবে কীভাবে?

  4. আপনি কি কোনও প্রদত্ত অ্যাপ্লিকেশনটির জন্য সমস্ত মোতায়েন করা সংস্করণগুলি ট্র্যাক করে রাখেন এবং যদি কোনও সমস্যা হয়ে যায় তবে আপনার কাছে পূর্বের পরিচিত কার্যকারী অবস্থায় অ্যাপ্লিকেশনটি পুনরুদ্ধার করার পদ্ধতি রয়েছে?

পূর্ববর্তী তালিকা সম্পূর্ণ নির্দ্বিধায়।


এবং আমরা আমাদের এএসপি.এনইটি অ্যাপ্লিকেশন মোতায়েন করতে এখানে যা ব্যবহার করি তা এখানে:

  1. আমরা সমাধানটিতে একটি ওয়েব ডিপ্লোয়মেন্ট প্রকল্প যুক্ত করি এবং এএসপি.এনইটি ওয়েব অ্যাপ্লিকেশনটি তৈরি করতে এটি সেট আপ করি
  2. আমরা একটি সেটআপ প্রজেক্ট (যোগ না সমাধান করার জন্য ওয়েব সেটআপ প্রকল্প) এবং এটি সেট ওয়েব ডিপ্লোয়মেন্ট প্রকল্প আউটপুট নিতে
  3. আমরা একটি কাস্টম কর্ম ইনস্টল যোগ করতে পারেন এবং OnInstall ঘটনা আমরা সমাবেশ একটি কাস্টম বিল্ড .NET চালানোর যে একটি অ্যাপ পুল এবং আইআইএস একটি ভার্চুয়াল ডিরেক্টরি ব্যবহার সৃষ্টি System.DirectoryServices.DirectoryEntry (এই কাজের শুধুমাত্র প্রথমবার একটি অ্যাপ্লিকেশন মোতায়েন করা হয় সঞ্চালিত হয়) । আমরা আইআইএসে একাধিক ওয়েব সাইটগুলি সমর্থন করি, ভার্চুয়াল ডিরেক্টরিগুলির জন্য প্রমাণীকরণ এবং অ্যাপ পুলগুলির জন্য পরিচয় নির্ধারণ করি।
  4. আমরা সেটআপ প্রকল্পটি তৈরি করতে টিএফএসে একটি কাস্টম টাস্ক যুক্ত করি (টিএফএস সেটআপ প্রকল্পগুলিকে সমর্থন করে না তাই এমএসআই তৈরির জন্য আমাদের দেভেনভ.এক্সি ব্যবহার করতে হয়েছিল)
  5. এমএসআই লাইভ সার্ভারে ইনস্টল করা আছে (যদি এমএসআই এর পূর্ববর্তী সংস্করণ থাকে তবে এটি প্রথমে আনইনস্টল করা আছে)


ভিজ্যুয়াল স্টুডিওতে প্রকাশনা উইজার্ড আপনার হোস্টিং সার্ভারের ফাইলগুলি আপনার স্থানীয় ফাইলগুলির সাথে তুলনা করবে এবং কেবল যা পরিবর্তন করা দরকার তা পরিবর্তন করবে। বিনা কারণে আপনার সমস্ত চিত্র ইত্যাদি ধাক্কা দেওয়ার কোনও কারণ নেই।
মাফিন ম্যান 21

উত্তর:


25

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


19

আমরা লাইভ সার্ভারগুলিতে রোলিং মোতায়েন করি, তাই আমরা ইনস্টলার প্রকল্পগুলি ব্যবহার করি না; আমাদের সিআই এর মতো আরও কিছু রয়েছে:

  • "লাইভ" বিল্ড-সার্ভার অনুমোদিত উত্স থেকে তৈরি করে (রেপোর "হেড" নয়)
  • (এটি ব্যাকআপ নেওয়ার পরে ;- পি)
  • রোবোকপি একটি স্টেজিং সার্ভারে প্রকাশ করে ("লাইভ", তবে এফ 5 ক্লাস্টারে নেই)
  • চূড়ান্ত বৈধতা মঞ্চ সার্ভারে সম্পন্ন করা হয়, প্রায়শই "হোস্ট" হ্যাকের সাথে পুরো জিনিসটি যতটা সম্ভব ঘনিষ্ঠভাবে অনুকরণ করা যায় with
  • পরবর্তী "ধাক্কা" পরিবর্তনগুলির একটি তালিকা বিতরণ করতে, কোনও বোকা সম্পর্কে সতর্ক করতে স্বয়ংক্রিয়ভাবে রোবকপি / এল ব্যবহার করা হয়
  • একটি নির্ধারিত প্রক্রিয়ার অংশ হিসাবে, ক্লাস্টারটি চক্রযুক্ত হয়, রোবোকপির মাধ্যমে গুচ্ছের নোডগুলিতে স্থাপন করা হয় (যখন তারা ক্লাস্টারের বাইরে থাকে)

রোবোকপি স্বয়ংক্রিয়ভাবে নিশ্চিত করে যে কেবল পরিবর্তনগুলি স্থাপন করা হয়েছে।

অ্যাপ পুল পুনরায়; আমি চাই ভালবাসেন এই স্বয়ংক্রিয় করা ( এই প্রশ্ন দেখতে পাবেন ), কিন্তু এ মুহূর্তে এটা ম্যানুয়াল হয়। যদিও আমি সত্যিই এটি পরিবর্তন করতে চাই।

(এটি সম্ভবত আমাদের নিজস্ব ডেটা সেন্টার এবং সার্ভার-ফার্ম "" সাইটে "আছে যাতে সাহায্য করে তাই আমাদের অনেকগুলি বাধা অতিক্রম করতে হবে না)


আপনি কিভাবে approvedউত্স পরিচালনা করবেন ? শাখা?
শন ম্লেয়ান

1
@ শ্যাভানকে অবশ্যই জোর দিয়ে বলতে হবে যে এটি আগের জীবনে আগের কাজ ছিল - এখন অনেক দিন আগে। আমি তখনও সঠিক প্রক্রিয়াটি মনে করতে পারি না। সম্ভবত মূলত "স্ক্রু আপ করবেন না"।
মার্ক গ্র্যাভেল

7

ওয়েবসাইট

ডিপ্লোয়ার: http://www.codeproject.com/KB/install/deployer.aspx

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

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

তথ্যশালা

সিঙ্কে ডাটাবেসগুলি রাখার জন্য আমি http://www.red-gate.com/products/sql-development/sql-compare/ ব্যবহার করি

সার্ভার যদি গুচ্ছ রাউটারগুলির পিছনে থাকে এবং আপনি সরাসরি সংযোগ করতে না পারেন (যা এসকিউএল তুলনার প্রয়োজন), ভিপিএন তৈরি করতে https://secure.logmein.com/products/hamachi2/ ব্যবহার করুন ।


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

5

আমি লিনাক্স সার্ভারগুলিতে বেশিরভাগ এএসপি.এনইটি অ্যাপ্লিকেশন স্থাপন করি এবং এমনকি ক্ষুদ্রতম পরিবর্তনের জন্য সবকিছুই পুনরায় প্রচার করি। এখানে আমার স্ট্যান্ডার্ড কর্মপ্রবাহ:

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

সাবভার্সনের কমান্ড-লাইন সংস্করণ দিয়ে চেকআউট করা হয় এবং এক্সবিল্ড (মনো প্রকল্প থেকে এমএসবিল্ড ওয়ার্ক-একইভাবে) দিয়ে বিল্ডিং করা হয়। বেশিরভাগ ম্যাজিক রিলিজইটিতে করা হয়।

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

উত্পাদনে, আমাকে দু'বার 'মোতায়েন' টাইপ করতে হবে: একবার চেক-আউট, বিল্ড, এবং একটি নির্ধারিত ডিরেক্টরিতে স্থাপন এবং একবার সেই ডিরেক্টরিটিকে ডিফল্ট উদাহরণ হিসাবে তৈরি করতে হবে। যেহেতু ডিরেক্টরিগুলি তারিখযুক্ত, আমি প্রাসঙ্গিক ডিরেক্টরি থেকে কেবল 'স্থাপনা' টাইপ করে পূর্ববর্তী কোনও ডিপ্লোয়মেন্টে ফিরে যেতে পারি।

প্রাথমিক স্থাপনা কয়েক মিনিট সময় নেয় এবং পূর্ববর্তী সংস্করণে রূপান্তর করতে কয়েক সেকেন্ড সময় নেয়।

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

আমার কিছুদিন আগে কোডপ্লেক্সে রিলিজআইটির অনুলিপি আপডেট করতে হবে:

http://releaseit.codeplex.com/


4

ASP.NET এর জন্য সরল এক্সকপি। এটি জিপ আপ করুন, সার্ভারে এসফ্টপ করুন, সঠিক জায়গায় সন্ধান করুন। প্রথম স্থাপনার জন্য, আইআইএসের ম্যানুয়াল সেট আপ করুন


4

আপনার প্রশ্নের উত্তর:

  1. XCopy
  2. ম্যানুয়ালি
  3. স্থিতিশীল সম্পদের জন্য, আমরা কেবল পরিবর্তিত সংস্থান স্থাপন করি।
    ডিএলএল'র জন্য আমরা পরিবর্তিত ডিএলএল এবং এএসপিএক্স পৃষ্ঠাগুলি স্থাপন করি।
  4. হ্যাঁ, এবং হ্যাঁ

এটিকে সুন্দর এবং সাধারণ রাখা আমাদের এখন পর্যন্ত প্রচুর মাথাব্যাথা বাঁচিয়েছে।


4

আপনি কি কিছু নির্দিষ্ট সরঞ্জাম ব্যবহার করছেন বা কেবল এক্সসিপিওয়াই? অ্যাপ্লিকেশনটি কীভাবে প্যাকেজ করা হয়েছে (জিপ, এমএসআই, ...)?

বিল্ডমাস্টারের বিকাশকারী হিসাবে , স্বাভাবিকভাবেই আমি এটি ব্যবহার করি। সমস্ত অ্যাপ্লিকেশনগুলি নিদর্শনগুলির মধ্যে সরঞ্জামের মধ্যে নির্মিত এবং প্যাকেজ করা থাকে, যা জিপ ফাইল হিসাবে অভ্যন্তরীণভাবে সঞ্চিত থাকে।

যখন প্রথমবারের মতো কোনও অ্যাপ্লিকেশন মোতায়েন করা হয় আপনি কীভাবে অ্যাপ পুল এবং ভার্চুয়াল ডিরেক্টরি সেটআপ করবেন (আপনি সেগুলি ম্যানুয়ালি বা কোনও সরঞ্জাম দিয়ে তৈরি করেন)?

ম্যানুয়ালি - আমরা সরঞ্জামটির মধ্যে একটি পরিবর্তন নিয়ন্ত্রণ তৈরি করি যা অ্যাপ্লিকেশনটি পরীক্ষার পরিবেশের মধ্য দিয়ে চলে যাওয়ার সাথে সাথে ভবিষ্যতের পরিবেশে সঞ্চালনের সঠিক পদক্ষেপগুলি মনে করিয়ে দেয়। এটি একটি সাধারণ পাওয়ারশেল স্ক্রিপ্টের সাহায্যে অটোমেটেড হতে পারে তবে আমরা নতুন অ্যাপ্লিকেশনগুলি প্রায়শই যোগ করি না তাই ম্যানুয়ালি সাইটটি তৈরি করতে যে 1 মিনিট সময় লাগে এটি ঠিক তত সহজ।

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

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

আপনি কি কোনও প্রদত্ত অ্যাপ্লিকেশনটির জন্য সমস্ত মোতায়েন করা সংস্করণগুলি ট্র্যাক করে রাখেন এবং যদি কোনও সমস্যা হয়ে যায় তবে আপনার কাছে পূর্বের পরিচিত কার্যকারী অবস্থায় অ্যাপ্লিকেশনটি পুনরুদ্ধার করার পদ্ধতি রয়েছে?

হ্যাঁ, বিল্ডমাস্টার আমাদের জন্য এই সমস্ত পরিচালনা করে। পুনরুদ্ধার করা পুরানো বিল্ড প্রচারকে পুনরায় কার্যকর করার মতোই সহজ, তবে কখনও কখনও ডাটাবেস পরিবর্তনগুলি ম্যানুয়ালি পুনরুদ্ধার করা প্রয়োজন এবং ডেটা ক্ষতি হতে পারে। বেসিক রোলব্যাক প্রক্রিয়াটি এখানে বিস্তারিত: http://inedo.com/support/tutorials/performing-a-depدام-rolback-with-buildmaster


3

ওয়েব সেটআপ / প্রকল্পগুলি ইনস্টল করুন - যাতে কিছু ভুল হয়ে যায় তবে আপনি সহজেই এটিকে আনইনস্টল করতে পারেন


3

আনফোল্ডগুলি হ'ল নেট অ্যাপ্লিকেশনগুলির জন্য আমি লিখেছি এমন একটি ক্যাপাসিস্ট্রোর মতো স্থাপনার সমাধান। এটি আমরা আমাদের সমস্ত প্রকল্পে ব্যবহার করি এবং এটি একটি খুব নমনীয় সমাধান। এটিরব কনারি দ্বারা ব্লগ পোস্টে ব্যাখ্যা হিসাবে। নেট অ্যাপ্লিকেশনগুলির জন্য বেশিরভাগ সাধারণ সমস্যা সমাধানকরে।

  • এটি একটি ভাল "ডিফল্ট" আচরণের সাথে আসে, এই অর্থে যে এটি আপনার জন্য প্রচুর স্ট্যান্ডার্ড স্টাফ করে: উত্স নিয়ন্ত্রণ থেকে কোড পাওয়া, বিল্ডিং করা, অ্যাপ্লিকেশন পুল তৈরি করা, আইআইএস স্থাপন করা ইত্যাদি
  • উত্স নিয়ন্ত্রণের উপর ভিত্তি করে রিলিজ s
  • এটিতে টাস্ক হুক রয়েছে , তাই ডিফল্ট আচরণটি সহজেই প্রসারিত বা পরিবর্তন করা যায়
  • এটি রোলব্যাক আছে
  • এটি সমস্ত পাওয়ারশেল , সুতরাং কোনও বাহ্যিক নির্ভরতা নেই
  • এটি দূরবর্তী মেশিনগুলি অ্যাক্সেস করতে পাওয়ারশেল রিমোটিং ব্যবহার করে

এখানে একটি ভূমিকা এবং কিছু অন্যান্য ব্লগ পোস্ট রয়েছে।

সুতরাং উপরের প্রশ্নের উত্তর দিতে:

  • অ্যাপ্লিকেশনটি কীভাবে প্যাকেজ করা হয়েছে (জিপ, এমএসআই, ...)?

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

  • যখন প্রথমবারের মতো কোনও অ্যাপ্লিকেশন মোতায়েন করা হয় আপনি কীভাবে অ্যাপ পুল এবং ভার্চুয়াল ডিরেক্টরি সেটআপ করবেন (আপনি সেগুলি ম্যানুয়ালি বা কোনও সরঞ্জাম দিয়ে তৈরি করেন)?

    আনফোল্ড পাওয়ারশেলের ওয়েবএডমিনিস্ট্রেশন মডিউলটি ব্যবহার করে অ্যাপ্লিকেশন পুল এবং ওয়েবসাইট অ্যাপ্লিকেশনটি কনফিগার করে। এটি আমাদের (এবং আপনি) অ্যাপ্লিকেশন পুল বা ওয়েবসাইটের যে কোনও দিক পরিবর্তন করতে সহায়তা করে

  • যখন কোনও স্ট্যাটিক রিসোর্স পরিবর্তন হয় (সিএসএস, জেএস বা চিত্র ফাইল) আপনি পুরো অ্যাপ্লিকেশনটি পুনরায় প্রবর্তন করেন বা কেবল পরিবর্তিত সংস্থানটি? কোনও অ্যাসেম্বলি / এএসপিএক্স পৃষ্ঠা পরিবর্তিত হবে কীভাবে?

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

  • আপনি কি কোনও প্রদত্ত অ্যাপ্লিকেশনটির জন্য সমস্ত মোতায়েন করা সংস্করণ ট্র্যাক করেন?

    হ্যাঁ, পুরাতন সংস্করণগুলি অনাবৃত রাখে। সমস্ত সংস্করণ নয়, বেশ কয়েকটি সংস্করণ। এটি প্রায় তুচ্ছ পিছনে ঘূর্ণায়মান করে তোলে।


ভাল, তবে লক্ষ্য মেশিন থেকে সংগ্রহস্থলের অ্যাক্সেসের দরকার নেই।
ডেভিড ডি সি ই ফ্রেইটাস

3

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

সুতরাং চেকিংয়ের পরে, আমাদের "সাধারণ" বিল্ডটি নিম্নলিখিতগুলি করে:

  • কোডটির সর্বশেষতম সংস্করণ আনতে জেনকিন্স একটি এসভিএন আপডেট করেন
  • একটি নিউগেট প্যাকেজ পুনরুদ্ধারটি আমাদের নিজস্ব স্থানীয় নিউগেট সংগ্রহস্থলের বিরুদ্ধে চলছে
  • অ্যাপ্লিকেশনটি এমস বিল্ড ব্যবহার করে সংকলিত হয়েছে। এটি সেট আপ করা একটি দু: সাহসিক কাজ, কারণ আপনাকে আপনার বিল্ড বাক্সে সঠিক এমএসবিল্ড এবং তারপরে এএসপি.এনইটি এবং এমভিসি dll গুলি ইনস্টল করতে হবে। (পার্শ্ব নোট হিসাবে, আমি যখন <MvcBuildViews>true</MvcBuildViews>আমার .csproj ফাইলগুলিতে ভিউগুলি সংকলন করতে প্রবেশ করেছি তখন এমসবিল্ড এলোমেলোভাবে ক্র্যাশ হচ্ছিল, সুতরাং আমাকে এটি অক্ষম করতে হয়েছিল)
  • একবার কোডটি সংকলিত হয়ে গেলে ইউনিট পরীক্ষাগুলি চালানো হবে (আমি এর জন্য নুনিট ব্যবহার করছি, তবে আপনি যে কোনও কিছু ব্যবহার করতে পারেন)
  • যদি সমস্ত ইউনিট পরীক্ষা পাস করে, আমি আইআইএস অ্যাপ পুলটি বন্ধ করে দেব, স্থানীয়ভাবে অ্যাপ্লিকেশনটি স্থাপন করুন (প্রয়োজনীয় ফাইলগুলি অনুলিপি করার জন্য কয়েকটি কয়েকটি প্রাথমিক XCOPY কমান্ড) এবং তারপরে আইআইএস পুনরায় চালু করুন (আইআইএস লকিং ফাইলগুলির সাথে আমার সমস্যা হয়েছিল এবং এটি সমাধান হয়েছে) এটা)
  • প্রতিটি পরিবেশের জন্য আমার পৃথক ওয়েবকনফিগ ফাইল রয়েছে; দেব, uat, উত্সাহ। (আমি অল্প সাফল্যের সাথে ওয়েব ট্রান্সফর্মেশন স্টাফ ব্যবহার করার চেষ্টা করেছি)। সুতরাং ডান ওয়েবকনফিগ ফাইলটিও অনুলিপি করা হয়েছে
  • আমি তখন ফ্যান্টমজেএস ব্যবহার করে একগুচ্ছ ইউআই পরীক্ষাগুলি সম্পাদন করি। এটি বিভিন্ন রেজোলিউশনে (মোবাইল, ডেস্কটপ) একগুচ্ছ স্ক্রিনশট গ্রহণ করে এবং প্রতিটি স্ক্রিনশটকে কিছু তথ্য (পৃষ্ঠার শিরোনাম, রেজোলিউশন) সহ স্ট্যাম্প দেয়। এই স্ক্রিনশটগুলি পরিচালনা করার জন্য জেনকিনের দুর্দান্ত সমর্থন রয়েছে এবং সেগুলি বিল্ডের অংশ হিসাবে সংরক্ষণ করা হয়েছে
  • ইন্টিগ্রেশন ইউআই পরীক্ষাগুলি পাস করার পরে বিল্ডটি সফল হয়

যদি কেউ "ইউএটিতে মোতায়েন করুন" ক্লিক করেন:

  • শেষ বিল্ডটি সফল হলে, জেনকিনস আরও একটি এসভিএন আপডেট করেন
  • রিলিজ কনফিগারেশন ব্যবহার করে অ্যাপ্লিকেশনটি সংকলিত হয়েছে
  • একটি "www" ডিরেক্টরি তৈরি করা হয়েছে এবং এতে অ্যাপ্লিকেশনটি অনুলিপি করা হয়
  • আমি তারপরে বিল্ড বাক্স এবং ইউএটির মধ্যে ফাইল সিস্টেমটি সিঙ্ক্রোনাইজ করতে উইনসিসপি ব্যবহার করি
  • আমি ইউএটি সার্ভারে একটি এইচটিটিপি অনুরোধ প্রেরণ করেছি এবং 200 টি ফিরে আসার বিষয়টি নিশ্চিত করছি
  • এই রিভিশনটি এসএভিএন-এ ইউএটি-ডেটটাইম হিসাবে ট্যাগ করা আছে
  • আমরা যদি এ পর্যন্ত পেয়েছি তবে বিল্ড সফল!

যখন আমরা "প্রোডাক্ট ডিপ্লয় করুন" ক্লিক করি:

  • ব্যবহারকারী একটি ইউএটি ট্যাগ নির্বাচন করে যা আগে তৈরি হয়েছিল
  • ট্যাগটিতে "স্যুইচড" করা আছে
  • কোড প্রোড সার্ভারের সাথে সংকলিত এবং সিঙ্ক হয়
  • প্রোড সার্ভারে এইচটিপি অনুরোধ
  • এই পুনর্বিবেচনাটি এসভিএন-এ প্রোড-ডেটটাইম হিসাবে ট্যাগ করা হয়েছে
  • রিলিজটি জিপ করে সংরক্ষণ করা হয়

উত্পাদনের সম্পূর্ণ বিল্ড আপ প্রায় 30 সেকেন্ড সময় নেয় যা আমি খুব খুব খুশি।

এই সমাধানের জন্য উত্সাহ:

  • এটা দ্রুত
  • ইউনিট পরীক্ষাগুলিতে যুক্তি ত্রুটি ধরা উচিত
  • যখন কোনও ইউআই বাগ প্রযোজনায় আসে, স্ক্রিনশটগুলি আশা করে দেখায় যে # কী কারণে এটির পুনর্বিবেচনা হয়েছে
  • ইউএটি এবং প্রোড সিঙ্কে রাখা হয়
  • জিনকিনস আপনাকে প্রতিশ্রুতিবদ্ধ সমস্ত বার্তাগুলির সাথে ইউএটি এবং প্রোডের দুর্দান্ত রিলিজের ইতিহাস দেখায়
  • ইউএটি এবং প্রোড প্রকাশগুলি সমস্তই স্বয়ংক্রিয়ভাবে ট্যাগ হয়
  • রিলিজগুলি কখন ঘটে এবং কারা করেছে তা আপনি দেখতে পারেন

এই সমাধানের মূল উত্সাহগুলি হ'ল:

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

আমি অন্য কোনও সম্ভাব্য উন্নতি শুনতে পছন্দ করব!


2

২০০৯-এ, যেখানে এই উত্তরটি এসেছে, আমরা ক্রমাউস কন্ট্রোল.এনটি আমাদের অবিচ্ছিন্ন ইন্টিগ্রেশন বিল্ডসের জন্য ব্যবহার করেছি, যা রিলিজ মিডিয়াটিকেও আউটপুট করেছিল।

সেখান থেকে আমরা স্মার্ট সিঙ্ক সফ্টওয়্যার ব্যবহার করেছি এমন প্রোডাকশন সার্ভারের সাথে তুলনা যা লোড ভারসাম্য পুলের বাইরে ছিল, এবং পরিবর্তনগুলি উপরে সরিয়ে নিয়েছে।

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


উত্তরের চেয়ে বিজ্ঞাপনের মতো আরও শোনাচ্ছে
আলফ মোহ

1

সর্বশেষ সংস্থায় আমি কাজ করেছি আমরা শেষ আপলোডের পরে কেবল পরিবর্তনগুলি আপলোড করতে একটি rSync ব্যাচ ফাইল ব্যবহার করে মোতায়েন করতাম। আর সিঙ্কের সৌন্দর্য হ'ল নির্দিষ্ট ফাইল বা ফাইলের নাম নিদর্শনগুলি বাদ দিতে আপনি বাদ দেওয়া তালিকা যুক্ত করতে পারেন। সুতরাং আমাদের সমস্ত .cs ফাইল, সমাধান এবং প্রকল্প ফাইলগুলি বাদ দিয়ে প্রকৃত পক্ষে সহজ।

আমরা সংস্করণ নিয়ন্ত্রণের জন্য টরটোইজএসভিএন ব্যবহার করছিলাম এবং তাই নিম্নলিখিতগুলি সম্পাদন করতে বেশ কয়েকটি এসভিএন কমান্ডে লিখতে পেরে ভাল লাগল:

  • প্রথমে ব্যবহারকারীর সর্বশেষ সংস্করণটি দেখুন। যদি তা না হয় তবে তাদের আপডেটটি আপডেট করতে অনুরোধ করুন বা ঠিক তখনই আপডেটটি চালনা করুন।
  • "Synclog.txt" নামক সার্ভার থেকে একটি পাঠ্য ফাইল ডাউনলোড করুন যাতে এসভিএন ব্যবহারকারী কারা, কী সংশোধন নম্বর তারা আপলোড করছে এবং আপলোডের তারিখ এবং সময় রয়েছে তা বিশদ করে। বর্তমান আপলোডের জন্য একটি নতুন লাইন যুক্ত করুন এবং তারপরে পরিবর্তিত ফাইলগুলির সাথে এটি আবার সার্ভারে প্রেরণ করুন। এটি কোনও আপলোডজনিত সমস্যার কারণ হয়ে যায় এমন অফ সুযোগটিতে সাইটের কোন সংস্করণটি আবার ফিরে আসে তা সন্ধান করা অত্যন্ত সহজ করে তোলে।

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

এবং সর্বশেষে, rSync আপনাকে আপলোড চলাকালীন প্রতিস্থাপন করা ফাইলগুলির একটি ব্যাকআপ নেওয়ার অনুমতি দেয়। আমাদের এগুলি এটিকে একটি ব্যাকআপ ফোল্ডারে স্থানান্তরিত করানো হয়েছিল তাই আপনি যদি হঠাৎ বুঝতে পারলেন যে কয়েকটি ফাইলের ওভাররাইট করা উচিত ছিল না, আপনি সেই ফোল্ডারের প্রতিটি ফাইলের শেষ ব্যাকআপ আপ সংস্করণটি খুঁজে পেতে পারেন।

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


1

আমি কেবলমাত্র বিদ্যমান অ্যাপ্লিকেশন ফাইলগুলি ওভাররাইট না করার পরিবর্তে সংস্করণ অনুযায়ী একটি ডিরেক্টরি তৈরি করে আইআইএস অ্যাপ্লিকেশনটিকে নতুন পথে প্রতিস্থাপনের পরামর্শ দেব। এর বিভিন্ন সুবিধা রয়েছে:

  • প্রয়োজনে ফিরে যেতে দ্রুত
  • লকিংয়ের সমস্যা এড়াতে আইআইএস বা অ্যাপ পুলটি থামানোর দরকার নেই
  • পুরানো ফাইলগুলির সমস্যা হওয়ার কারণ নেই
  • কম-বেশি শূন্য ডাউনটাইম (সাধারণত নতুন অ্যাপডোমেন আরম্ভের সময় কেবল বিরতি)

আমাদের কেবলমাত্র সমস্যাটি হ'ল যদি আপনি অ্যাপ্লিকেশন পুলটি পুনরায় চালু না করে এবং স্বয়ংক্রিয় অ্যাপডোমেন স্যুইচটিতে নির্ভর না করেন তবে সংস্থানগুলি ক্যাশে হচ্ছে।

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