আমার দল বর্তমানে দেখতে দেখতে মোটামুটি সহজ শাখা / স্থাপন প্রক্রিয়া ব্যবহার করে:
┌────────┐ ┌────┐ ┌──────┐
Environments: │ DEV │ │ QA │ │ PROD │
└────────┘ └────┘ └──────┘
▲ ▲ ▲
│ │ │
┌────────┐ ┌────┐ ┌──────┐
Builds: │ DEV │ │ QA │ │ PROD │
└────────┘ └────┘ └──────┘
▲ ▲ ▲
│ │ │
┌────────┐ ┌────┐ ┌──────┐
Branches: │ master │ │ qa │ │ prod │
└────────┘ └────┘ └──────┘
প্রতিটি পরিবেশের নিজস্ব শাখা থাকে (আমরা গিট ব্যবহার করি ) এবং তার নিজস্ব বিল্ড যা সেই শাখাটি ব্যবহার করে। যখন আমরা এক পরিবেশ থেকে অন্য পরিবেশে প্রচার করতে চাই, উদাহরণস্বরূপ, ডিইভি থেকে কিউএতে, আমরা master
শাখাটি একীভূত করি qa
এবং একটি নতুন কিউ বিল্ড (যা পরে স্বয়ংক্রিয়ভাবে QA পরিবেশে স্থাপন করা হয়) বন্ধ করি।
আমরা একটি নতুন প্রক্রিয়াতে যাওয়ার বিষয়ে বিবেচনা করছি যা একটি নিবেদিত শাখা রেখে প্রতিটি পরিবেশের জন্য তৈরি করবে। পরিবর্তে, একটি একক রিলিজ বিল্ড একটি "ডিপ্লোয়মেন্ট প্যাকেজ" তৈরি করবে যা পরে যে কোনও পরিবেশে স্থাপন করা যেতে পারে। আমরা একটি আদর্শ ওয়ার্কফ্লোটি এরকম দেখতে দেখতে কিছুটা কল্পনা করছি:
┌────────┐ ┌────┐ ┌──────┐
Environments: │ DEV │ ──► │ QA │ ──► │ PROD │
└────────┘ └────┘ └──────┘
▲
\
┌───────────────┐
Builds: │ release build │
└───────────────┘
▲
│
┌────────┐ ┌─────────┐
Branches: │ master │ │ release │
└────────┘ └─────────┘
এক পরিবেশ থেকে অন্য পরিবেশে প্রচার করা আর উত্স নিয়ন্ত্রণে পরিচালিত হবে না; পরিবর্তে, আমরা কেবল ইতিমধ্যে নির্মিত-বাইনারিগুলি ("ডিপ্লোয়মেন্ট প্যাকেজ") নেব এবং এটি নতুন পরিবেশে ফেলে দেব।
এই নতুন সিস্টেমটি আমাদের যে কোনও পরিবেশে যে কোনও বিল্ড স্থাপনের অনুমতি দেবে, যার বিভিন্ন সুবিধা রয়েছে। উদাহরণস্বরূপ, ডিইভি এবং কিউএতে প্রোড বাগ ত্রুটি সংশোধন করা তুচ্ছ। আমাদের বর্তমান সিস্টেমটি কোনও শাখাটি ঘুরিয়ে না ফেলে এটি করার সহজ উপায় সরবরাহ করে না, যা আমরা অবশ্যই এড়াতে চাই।
এই নতুন সিস্টেমে সবচেয়ে বড় অসুবিধা হ'ল আমাদের কাছে কোন পরিবেশে কোন কোড রয়েছে তা ট্র্যাক করার একটি স্বয়ংক্রিয় পদ্ধতি নেই। যদি আমাদের পিআরডি-তে একটি সংশোধন করা দরকার, বর্তমান প্রোডাকশন কোডবেসের সাথে আমাদের আর একটি ডেডিকেটেড ব্রাঞ্চ নেই in একইরকম QA- এর ক্ষেত্রেও - যদি আমরা অগ্রগতির কাজটি ড্রেজিং না করে QA তে দ্রুত পরিবর্তনের দিকে এগিয়ে যেতে চাই তবে আমাদের master
আর আর শাখা নেই যা কিউএ পরিবেশের বর্তমান অবস্থাকে প্রতিফলিত করে।
প্রতিটি পরিবেশে কী কোড রয়েছে তা আমরা কীভাবে ট্র্যাক রাখতে পারি?
কিছু বিকল্প যা আমরা বিবেচনা করছি:
- কোন পরিবেশে কোন প্রতিশ্রুতিবদ্ধ তা ট্র্যাক রাখতে গিট ট্যাগ ব্যবহার করে
- প্রতিটি স্থাপনা প্যাকেজের মধ্যে বিল্ড দ্বারা ব্যবহৃত গিট কমিট এম্বেড করা