ইউনিট
1. DevOps এবং ক্লাউড এআই-এর ভূমিকা: ভূমিকা, সীমানা, প্রমাণীকরণ, নিরাপত্তা এবং গোপনীয়তা 2. কৃত্রিম বুদ্ধিমত্তা সহ সিআই/সিডি পাইপলাইন ডিজাইন করা: গিটহাব অ্যাকশন এবং গিটল্যাব সিআই 3. কোড হিসাবে পরিকাঠামো পরিচালনা: Terraform এবং IaC সহ কৃত্রিম বুদ্ধিমত্তা 4. কন্টেইনারাইজেশন: কৃত্রিম বুদ্ধিমত্তা সহ ডকারফাইল এবং চিত্র অপ্টিমাইজেশন 5. কুবারনেটস: ম্যানিফেস্ট, হেলম এবং এআই-চালিত অর্কেস্ট্রেশন 6. পর্যবেক্ষণ এবং পর্যবেক্ষণযোগ্যতা: মেট্রিক, লগ, ট্রেস এবং অ্যালার্ম নিয়ম 7. ঘটনা ব্যবস্থাপনা এবং পোস্টমর্টেম: কৃত্রিম বুদ্ধিমত্তার সাথে মূল কারণ বিশ্লেষণ 8. ক্লাউড কস্ট অপ্টিমাইজেশান (ফিনঅপস): কৃত্রিম বুদ্ধিমত্তার সাহায্যে বর্জ্যের জন্য শিকার করা 9. স্ক্রিপ্ট এবং অটোমেশন জেনারেশন: ব্যাশ, পাইথন এবং পাওয়ারশেল 10. নিরাপত্তা এবং গোপন ব্যবস্থাপনা: DevSecOps এবং কৃত্রিম বুদ্ধিমত্তা 11. প্রোড যাচাইকরণ, রিলিজ কৌশল এবং এন্ড-টু-এন্ড এআই ওয়ার্কফ্লো
ইউনিট 2 / 11

কৃত্রিম বুদ্ধিমত্তা সহ সিআই/সিডি পাইপলাইন ডিজাইন করা: গিটহাব অ্যাকশন এবং গিটল্যাব সিআই

লাভ:

  • CI/CD ধারণা, পাইপলাইন অ্যানাটমি (ট্রিগার, জব, স্টেপ, রানার, আর্টিফ্যাক্ট) এবং গিটহাব অ্যাকশন এবং গিটল্যাব সিআইয়ের মধ্যে পার্থক্য বোঝার ক্ষমতা এবং কৃত্রিম বুদ্ধিমত্তা সঠিক প্রসঙ্গের সাথে পাইপলাইন উত্পাদন করে
  • কৃত্রিম বুদ্ধিমত্তা দ্বারা উত্পাদিত পাইপলাইনে গোপন রেফারেন্স, অনুমতি এবং নামক উপাদানগুলির অস্তিত্ব পরীক্ষা এবং সুরক্ষিত করার ক্ষমতা
  • প্লেইন টেক্সটে গোপনীয়তা না লেখার নীতিগুলি প্রয়োগ করার ক্ষমতা, ন্যূনতম অনুমোদন প্রদান এবং সিআই থেকে আলাদা করে স্থাপনা নিয়ন্ত্রণে রাখা

আধুনিক সফ্টওয়্যারের কেন্দ্রস্থল হল স্বয়ংক্রিয় পাইপলাইন যার মাধ্যমে কোডটি একজন ডেভেলপারের কম্পিউটার থেকে নিরাপদে গ্রাহকের কাছে না পৌঁছানো পর্যন্ত চলে যায়। এই পাইপটিকে CI/CD বলা হয়। CI (কন্টিনিউয়াস ইন্টিগ্রেশন) হল প্রতিটি কোড পরিবর্তনের স্বয়ংক্রিয় সংকলন এবং পরীক্ষা; এর উদ্দেশ্য হল ডেভেলপার এমনকি কীবোর্ড ছেড়ে যাওয়ার আগে একটি বাগ ধরা। সিডি (কন্টিনিউয়াস ডেলিভারি/ডিপ্লয়মেন্ট) হল স্বয়ংক্রিয় প্রস্তুতি বা এমনকি পরীক্ষিত কোড প্রকাশ করা। একটি CI/CD পাইপলাইন হল একটি কনফিগারেশন ফাইল যা এই ধাপগুলিকে ক্রমানুসারে সংজ্ঞায়িত করে — সাধারণত YAML (মানুষ-পাঠযোগ্য কনফিগারেশন টেক্সট ফর্ম্যাট) এ লেখা হয়।

এই YAML ফাইলগুলিকে হাত দিয়ে লেখা ক্লান্তিকর, ভার্বোস এবং ত্রুটি-প্রবণ; যদি ইন্ডেন্টেশন একটি স্থান দ্বারা স্লিপ হয়, সমগ্র পাইপলাইন ভেঙ্গে যায়। এখানেই AI আসে: সঠিক প্রসঙ্গ সহ, এটি সেকেন্ডের মধ্যে একটি কার্যকরী খসড়া তৈরি করে। কিন্তু প্রতিটি জেনারেট করা ধাপ কী করে তা বোঝা এবং যাচাই করা আপনার কাজ - কারণ এটি এমন একটি পাইপ যা আপনার কোডকে প্রোডে বহন করে।

CI/CD পাইপলাইনের অ্যানাটমি

প্রতিটি পাইপলাইন বিভিন্ন মৌলিক ধারণা নিয়ে গঠিত। আপনি এগুলি না জেনে এআই আউটপুট নিয়ন্ত্রণ করতে পারবেন না:

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

GitHub অ্যাকশন এই সংজ্ঞাটি .github/workflows/*.yml ফাইলগুলিতে রাখে; ইউনিটটি হল ওয়ার্কফ্লো → কাজ → ধাপের অনুক্রম। GitLab CI, অন্যদিকে, .gitlab-ci.yml ফাইলে স্টেজ → কাজের কাঠামো ব্যবহার করে। এআই উভয় সিনট্যাক্স জানে, তবে আপনাকে অবশ্যই স্পষ্টভাবে বলতে হবে যে আপনি কোনটি চান।

টিপ: পাইপলাইনগুলির জন্য AI জিজ্ঞাসা করার সময়, সর্বদা নির্দিষ্ট করুন: প্ল্যাটফর্ম (GitHub অ্যাকশন বা GitLab CI), ভাষা/ফ্রেমওয়ার্ক (নোড, .NET, পাইথন…), ট্রিগার এবং এটি স্থাপন করা হবে কিনা। এই চারটি তথ্য আউটপুটের উপযোগিতা দ্বিগুণ করে।

ধাপে ধাপে: AI দিয়ে একটি পাইপলাইন ডিজাইন করা

  1. লক্ষ্য পরিষ্কার করুন। যেমন "প্রধানে ঠেলে পরীক্ষা চালান, চিত্র তৈরি করুন, কিন্তু ট্যাগ নিক্ষেপ করা হলেই কেবল স্থাপন করুন"।
  2. কঙ্কাল উত্পাদিত আছে. মৌলিক কর্মপ্রবাহের জন্য এআইকে জিজ্ঞাসা করুন।
  3. ধাপগুলো পড়ুন এবং বুঝুন। প্রতিটি রান এবং ব্যবহার লাইন কি করে তা যাচাই করুন।
  4. গোপন রেফারেন্স চেক করুন. সিক্রেটগুলি কি ${{ secrets.NAME }} দিয়ে বলা হয় নাকি সেগুলি কোডে এম্বেড করা আছে?
  5. স্থানীয়ভাবে এটি চেষ্টা করুন/CI. এটি একটি ছোট পরীক্ষার ভান্ডারে চালান, লাল-সবুজ (ফেল-পাস) আচরণ দেখুন।
  6. ধীরে ধীরে প্রসারিত করুন। প্রথমে শুধু সিআই (পরীক্ষা) যোগ করুন, তারপর তৈরি করুন, শেষ যোগ করুন।

নিরাপত্তা: পাইপলাইনে গোপন এবং অনুমতি

সিআই/সিডি এমন একটি জায়গা যেখানে গোপনীয়তা সবচেয়ে বেশি ফাঁস হয়। তিনটি সুবর্ণ নিয়ম:

  1. YAML-এ প্লেইন টেক্সটে কখনও গোপন কথা লিখবেন না। প্ল্যাটফর্মের সিক্রেট রিপোজিটরি (GitHub Secrets, GitLab CI/CD ভেরিয়েবল) ব্যবহার করুন এবং ${{ secrets.X }} দিয়ে কল করুন।
  2. ন্যূনতম বিশেষাধিকার। আপনি পাইপলাইনে যে টোকেনটি দেবেন তা কেবলমাত্র প্রয়োজনীয় ততটুকু কর্তৃত্ব পাবে। অনুমতি দিয়ে এটিকে সংকুচিত করুন: GitHub অ্যাকশনে ব্লক করুন।
  3. লগে গোপন টিপুন না। প্রতিধ্বনি $TOKEN-এর মতো লাইনগুলি লগের গোপনীয়তা প্রকাশ করে৷ প্ল্যাটফর্ম মাস্ক, কিন্তু খুব সতর্কতা অবলম্বন করুন.
সতর্কতা: সুবিধার জন্য, AI কখনও কখনও পাসওয়ার্ড: 123456 বা অত্যধিক বিস্তৃত অনুমতির মতো এমবেডেড মান রাখে: নমুনা পাইপলাইনে সব লিখুন। সর্বদা এটি ঠিক করুন: রেফারেন্সে গোপন পরিবর্তন করুন, অনুমতি ভেঙে দিন।

তুলনা চার্ট

ধারণা

গিটহাব অ্যাকশন

গিটল্যাব সিআই

কনফিগারেশন ফাইল

.github/workflows/*.yml

gitlab-ci.yml

বিল্ডিং ইউনিট

কর্মপ্রবাহ → কাজ → ধাপ

পর্যায় → চাকরি

ট্রিগার

দশ:

নিয়ম: / শুধুমাত্র:

তলব গোপন

${{ গোপনীয়তা৷NAME }}

$NAME (CI/CD ভেরিয়েবল)

প্রস্তুত উপাদান

ব্যবহার করে: action@v4

অন্তর্ভুক্ত: /টেমপ্লেট

রানার

রান অন:

ট্যাগ:

তিনটি মিনি কেস

কেস 1 — কমিয়ে 6 ঘন্টা 40 মিনিট করা হয়েছে। একটি দল তাদের ম্যানুয়াল টেস্ট-বিল্ড-ডিপ্লোয় প্রক্রিয়া স্বয়ংক্রিয় করতে চেয়েছিল, কিন্তু কেউ YAML এর সাথে পরিচিত ছিল না। তারা YZ কে "Node.js প্রকল্প, GitHub অ্যাকশন, npm পরীক্ষা এবং npm বিল্ড ইন পুশ টু মেইন, শুধুমাত্র v* ট্যাগে স্থাপন" হিসাবে বর্ণনা করেছে। AI 40 লাইনের একটি কার্যকরী কঙ্কাল তৈরি করেছে; দলটি প্রতিটি পদক্ষেপ যাচাই করেছে এবং 40 মিনিটের মধ্যে লাইভ হয়েছে। তারা যদি হাতে লিখে দিত, তাহলে একদিনের কাজ হয়ে যেত।

কেস 2 — প্রমাণীকরণে একটি নিরাপত্তা দুর্বলতা ধরা পড়েছে। একজন প্রকৌশলী AI কে ওয়ার্কফ্লো স্থাপন করতে বলেছিলেন। আউটপুটে অনুমতি অন্তর্ভুক্ত ছিল: সব লিখুন - যার অর্থ টোকেন সংগ্রহস্থল, প্যাকেজ, সবকিছুতে লিখতে পারে। প্রকৌশলী এটি লক্ষ্য করেছেন এবং অনুমতি দিয়ে এটি সংকুচিত করেছেন: { বিষয়বস্তু: পড়ুন, প্যাকেজ: লিখুন }। এটি সম্পূর্ণ রিপোজিটরি প্রতিস্থাপন একটি হাইজ্যাক নির্ভরতার ঝুঁকি দূর করেছে।

কেস 3 - হ্যালুসিনেটরি অ্যাকশন। একটি দল AI-প্রস্তাবিত ব্যবহারগুলি চালায়: actions/deploy-to-aws@v3 লাইন; এমন কোন অফিসিয়াল অ্যাকশন ছিল না, এআই নামটি তৈরি করেছে। পাইপলাইন বিস্ফোরণে ‘অ্যাকশন নট ফাউন্ড’। পাঠ: মার্কেটপ্লেসে যাচাই করুন যে প্রতিটি উপাদান ব্যবহার করে বলা হয়: আসলে বিদ্যমান।

চারটি অনুলিপিযোগ্য টেমপ্লেট

1) বেসিক সিআই ওয়ার্কফ্লো:

গিটহাব অ্যাকশনের জন্য একটি সিআই ওয়ার্কফ্লো লিখুন। প্রকল্প: [ভাষা/ফ্রেমওয়ার্ক]। ট্রিগার: মূল শাখায় পুশ এবং টান অনুরোধ। পদক্ষেপ: নির্ভরতা ইনস্টল করুন, পরীক্ষা চালান, লিন্ট চালান। NO Deploy.Runner ubuntu-latest. কোন গোপন প্রয়োজন. YAML টীকা করুন।

2) স্থাপন করা সিডি ওয়ার্কফ্লো (নিরাপদ):

[প্ল্যাটফর্ম] এর জন্য কর্মপ্রবাহ স্থাপন করুন। এটি শুধুমাত্র 'v*' ট্যাগে কাজ করা উচিত। লক্ষ্য: [মিডিয়া/ক্লাউড]। নিয়মাবলী:- কখনোই গোপন কথা প্লেইন টেক্সটে লিখবেন না, তাদের ${{ সিক্রেটস দিয়ে কল করবেন।

3) বিদ্যমান পাইপলাইন বর্ণনা করুন:

নিম্নলিখিত [প্ল্যাটফর্ম] পাইপলাইন লাইনটি লাইন দ্বারা বর্ণনা করুন: প্রতিটি কাজ কী করে, এটি কোন ক্রমে চলে, কোন গোপনীয়তা ব্যবহার করে এবং এর দুটি ঝুঁকিপূর্ণ পয়েন্ট কী? অবশেষে, 3টি উন্নতির পরামর্শ দিন৷ পাইপলাইন: [YAML সামগ্রী]

4) পাইপলাইনের গতি বাড়ান:

নিম্নলিখিত CI পাইপলাইনটি ধীরে চলছে (সময়কাল: [X মিনিট])। ক্যাশে ব্যবহার, সমান্তরাল কাজ এবং অপ্রয়োজনীয় পদক্ষেপের জন্য পরীক্ষা করুন। 5টি কংক্রিট, কার্যকর ত্বরণের পরামর্শ দিন এবং প্রতিটির আনুমানিক প্রভাব লিখুন। পাইপলাইন: [YAML]

দুর্বল প্রম্পট / শক্তিশালী প্রম্পট

দুর্বল: "GitHub অ্যাকশন ওয়ার্কফ্লো লিখুন।"

ফলাফল: কোন ভাষা, কোনটি ট্রিগার, একটি স্থাপনা আছে কিনা তা স্পষ্ট নয়; এআই একটি জেনেরিক নোড উদাহরণ দেয়, সম্ভবত আপনার প্রকল্পের সাথে খাপ খাবে না এবং গোপনীয়তা হার্ডকোড করতে পারে।

শক্তিশালী: "GitHub অ্যাকশন ওয়ার্কফ্লো লিখুন। Python 3.12 প্রজেক্ট, pytest + ruff এ পুল রিকোয়েস্ট এবং মেইন পুশ চালান; কোন ডিপ্লোয় নেই; পিপ ক্যাশে দিয়ে ডিপেন্ডেন্সি ত্বরান্বিত করুন; কোন সিক্রেটের প্রয়োজন নেই। মন্তব্য সহ YAML এক্সপোর্ট করুন।"

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

সাধারণ ভুল

  • YAML এ সিক্রেট এম্বেড করা। প্লেইনটেক্সট পাসওয়ার্ড/টোকেন হল সবচেয়ে সাধারণ সিআই দুর্বলতা।
  • অত্যধিক বিস্তৃত অনুমতি. সব লিখার পরিবর্তে প্রয়োজনীয় ন্যূনতম অনুমতি দিন।
  • অস্তিত্বহীন কর্ম/টেমপ্লেটের উপর নির্ভর করা। মার্কেটপ্লেসে এআই-তৈরি ব্যবহারগুলি যাচাই করুন: লাইনগুলি৷
  • CI এর সাথে বিভ্রান্তিকর স্থাপনা। পরীক্ষা প্রতিটি ধাক্কায় চলতে পারে, তবে স্থাপনা অবশ্যই নিয়ন্ত্রণ এবং অনুমোদিত হতে হবে।
  • ক্যাশে ব্যবহার করছেন না। প্রতিটি রানে স্ক্র্যাচ থেকে নির্ভরতা ইনস্টল করা মিনিটের মধ্যে পাইপলাইনকে ধীর করে দেয়।
  • প্রধান সংগ্রহস্থলে সরাসরি প্রথম ওয়ার্কফ্লো চেষ্টা করা হচ্ছে। এটি প্রথমে একটি পরীক্ষা সংগ্রহস্থলে চালান।

সংক্ষেপে

CI/CD পাইপলাইনগুলি হল স্বয়ংক্রিয় পাইপ যা কোডকে নিরাপদে প্রোড-এ নিয়ে যায় এবং YAML দিয়ে সংজ্ঞায়িত করা হয়। এআই দ্রুত গিটহাব অ্যাকশন এবং গিটল্যাব সিআই-এর জন্য কার্যকরী ব্লুপ্রিন্ট তৈরি করে — তবে আপনাকে প্ল্যাটফর্ম, ভাষা, ট্রিগার এবং স্থাপনের সুযোগ সম্পর্কে পরিষ্কার হতে হবে। নিরাপত্তার তিনটি নিয়ম আছে: রেফারেন্স দ্বারা কল গোপন, ন্যূনতম বিশেষাধিকার প্রদান, লগে গোপনীয়তা প্রিন্ট করবেন না। প্রতিটি ব্যবহার:/include: উপাদান আসলে বিদ্যমান এবং প্রতিটি ধাপ কি করে তা যাচাই করার দায়িত্ব আপনার।

আবেদন টাস্ক

একটি সাধারণ নমুনা প্রকল্প চয়ন করুন (এমনকি আপনার ভাষায় একটি "হ্যালো ওয়ার্ল্ড"ও করবে)। উপরের "বেসিক CI ওয়ার্কফ্লো" টেমপ্লেটের সাথে AI-কে একটি ওয়ার্কফ্লো তৈরি করতে দিন। তারপর: (1) প্রতিটি পদক্ষেপ কী করে তা আপনার নিজের ভাষায় লিখুন; (2) যাচাই করুন যে কোনও গোপনীয়তা এম্বেড করা নেই এবং অনুমতিগুলি সংকীর্ণ; (3) সম্ভব হলে, এটি একটি পরীক্ষা ট্যাঙ্কে চালান এবং লাল-সবুজ আচরণ পর্যবেক্ষণ করুন।

চেকলিস্ট

  • [ ] আমি আমার প্রম্পটে প্ল্যাটফর্ম, ভাষা/ফ্রেমওয়ার্ক, ট্রিগার এবং ডিপ্লয় স্কোপ যোগ করেছি।
  • [ ] আমি বুঝতে পারি যে প্রতিটি কাজ এবং পদক্ষেপ জেনারেট করা YAML-এ কী করে।
  • [ ] কোন গোপন বিষয় প্লেইনটেক্সট নয়; সমস্ত ${{ secrets.X }} / CI ভেরিয়েবল।
  • [ ] আমি ন্যূনতম কর্তৃপক্ষের অনুমতিগুলিকে সংকুচিত করেছি৷
  • [ ] আমি যাচাই করেছি যে সমস্ত নামক অ্যাকশন/টেমপ্লেট আসলে বিদ্যমান।
  • [ ] আমি অনুমোদন/সুরক্ষার সাথে নিয়ন্ত্রিত স্থাপনা পদক্ষেপ করেছি।