इकाइयाँ
1. DevOps और Cloud AI का परिचय: भूमिकाएँ, सीमाएँ, प्रमाणीकरण, सुरक्षा और रहस्य 2. आर्टिफिशियल इंटेलिजेंस के साथ सीआई/सीडी पाइपलाइन डिजाइन करना: गिटहब एक्शन और गिटलैब सीआई 3. कोड के रूप में बुनियादी ढांचे का प्रबंधन: टेराफॉर्म और आईएसी के साथ आर्टिफिशियल इंटेलिजेंस 4. कंटेनरीकरण: आर्टिफिशियल इंटेलिजेंस के साथ डॉकरफाइल और छवि अनुकूलन 5. कुबेरनेट्स: मेनिफेस्ट, हेल्म और एआई-पावर्ड ऑर्केस्ट्रेशन 6. निगरानी और अवलोकन: मीट्रिक, लॉग, ट्रेस और अलार्म नियम 7. घटना प्रबंधन और पोस्टमॉर्टम: आर्टिफिशियल इंटेलिजेंस के साथ मूल कारण विश्लेषण 8. क्लाउड कॉस्ट ऑप्टिमाइजेशन (फिनऑप्स): आर्टिफिशियल इंटेलिजेंस के साथ कचरे की तलाश 9. स्क्रिप्ट और ऑटोमेशन जेनरेशन: बैश, पायथन और पावरशेल 10. सुरक्षा और रहस्य प्रबंधन: DevSecOps और आर्टिफिशियल इंटेलिजेंस 11. उत्पाद सत्यापन, रिलीज़ रणनीतियाँ और एंड-टू-एंड एआई वर्कफ़्लो
इकाई 2 / 11

आर्टिफिशियल इंटेलिजेंस के साथ सीआई/सीडी पाइपलाइन डिजाइन करना: गिटहब एक्शन और गिटलैब सीआई

लाभ:

  • सीआई/सीडी अवधारणा, पाइपलाइन एनाटॉमी (ट्रिगर, जॉब, स्टेप, रनर, आर्टिफैक्ट) और गिटहब एक्शन और गिटलैब सीआई के बीच अंतर को समझने की क्षमता और कृत्रिम बुद्धिमत्ता सही संदर्भ के साथ पाइपलाइन तैयार करती है।
  • कृत्रिम बुद्धिमत्ता द्वारा उत्पादित पाइपलाइन में गुप्त संदर्भों, अनुमतियों और बुलाए गए घटकों के अस्तित्व की जांच और सुरक्षित करने की क्षमता
  • सादे पाठ में रहस्य न लिखने, न्यूनतम प्राधिकरण देने और तैनाती को सीआई से अलग करके नियंत्रित रखने के सिद्धांतों को लागू करने की क्षमता

आधुनिक सॉफ़्टवेयर का हृदय स्वचालित पाइपलाइन है जिसके माध्यम से कोड डेवलपर के कंप्यूटर से तब तक निकलता है जब तक वह सुरक्षित रूप से ग्राहक तक नहीं पहुंच जाता। इस पाइप को सीआई/सीडी कहा जाता है। सीआई (सतत एकीकरण) प्रत्येक कोड परिवर्तन का स्वचालित संकलन और परीक्षण है; इसका उद्देश्य डेवलपर के कीबोर्ड छोड़ने से पहले ही बग को पकड़ना है। सीडी (सतत वितरण/परिनियोजन) स्वचालित रूप से तैयार होने या यहां तक ​​कि परीक्षण किए गए कोड को जारी करने की प्रक्रिया है। सीआई/सीडी पाइपलाइन एक कॉन्फ़िगरेशन फ़ाइल है जो इन चरणों को क्रम में परिभाषित करती है - आमतौर पर YAML (एक मानव-पठनीय कॉन्फ़िगरेशन टेक्स्ट प्रारूप) में लिखी जाती है।

इन YAML फ़ाइलों को हाथ से लिखना थकाऊ, क्रियात्मक और त्रुटि-प्रवण है; यदि इंडेंटेशन एक जगह से खिसक जाता है तो पूरी पाइपलाइन टूट जाती है। यहीं पर AI आता है: सही संदर्भ के साथ, यह सेकंडों में एक कार्यशील ड्राफ्ट तैयार करता है। लेकिन यह समझना और सत्यापित करना आपका काम है कि प्रत्येक उत्पन्न चरण क्या करता है - क्योंकि यह वह पाइप है जो आपके कोड को उत्पाद तक ले जाता है।

सीआई/सीडी पाइपलाइन की शारीरिक रचना

प्रत्येक पाइपलाइन में कई बुनियादी अवधारणाएँ शामिल होती हैं। इन्हें जाने बिना आप AI आउटपुट को नियंत्रित नहीं कर सकते:

  • ट्रिगर: पाइपलाइन किससे शुरू होती है? आमतौर पर किसी शाखा के लिए एक धक्का, एक पुल अनुरोध (मर्ज अनुरोध), या एक शेड्यूल।
  • कार्य: तार्किक इकाई जो चरणों की एक श्रृंखला निष्पादित करती है; उदाहरण के लिए "परीक्षण", "निर्माण", "तैनाती"।
  • चरण: किसी कार्य के भीतर एक एकल आदेश या कार्रवाई।
  • रनर: वर्चुअल मशीन या कंटेनर जिस पर नौकरियां चलती हैं।
  • विरूपण साक्ष्य: एक कार्य द्वारा उत्पादित और बाद के कार्यों द्वारा उपयोग किया जाने वाला आउटपुट (उदाहरण के लिए, एक संकलित फ़ाइल)।
  • गुप्त: गोपनीय जानकारी जो पाइपलाइन उपयोग करती है लेकिन रिपॉजिटरी में सादे पाठ में नहीं रहनी चाहिए।

GitHub Actions इस परिभाषा को .github/workflows/*.yml फ़ाइलों में रखता है; इकाई वर्कफ़्लो → कार्य → चरण पदानुक्रम है। दूसरी ओर, GitLab CI, .gitlab-ci.yml फ़ाइल में स्टेज → जॉब संरचना का उपयोग करता है। एआई दोनों वाक्यविन्यास जानता है, लेकिन आपको स्पष्ट रूप से कहना होगा कि आप कौन सा वाक्यविन्यास चाहते हैं।

युक्ति: एआई से पाइपलाइनों के लिए पूछते समय, हमेशा निर्दिष्ट करें: प्लेटफ़ॉर्म (गिटहब एक्शन या गिटलैब सीआई), भाषा/फ्रेमवर्क (नोड, .NET, पायथन…), ट्रिगर, और क्या इसे तैनात किया जाएगा। जानकारी के ये चार टुकड़े आउटपुट की उपयोगिता को दोगुना कर देते हैं।

चरण दर चरण: एआई के साथ एक पाइपलाइन डिजाइन करना

  1. लक्ष्य स्पष्ट करें. जैसे "मुख्य पर पुश पर परीक्षण चलाएं, छवि बनाएं, लेकिन केवल टैग फेंकने पर ही तैनात करें"।
  2. कंकाल का उत्पादन करें. बुनियादी वर्कफ़्लो के लिए AI से पूछें।
  3. चरणों को पढ़ें और समझें. सत्यापित करें कि प्रत्येक रन और उपयोग लाइन क्या करती है।
  4. गुप्त सन्दर्भों की जाँच करें. क्या रहस्यों को ${{secrets.NAME }} कहा जाता है या वे कोड में अंतर्निहित हैं?
  5. इसे स्थानीय/सीआई पर आज़माएँ। इसे एक छोटे परीक्षण भंडार पर चलाएं, लाल-हरा (असफल-पास) व्यवहार देखें।
  6. धीरे-धीरे विस्तार करें. सबसे पहले बस सीआई (परीक्षण) जोड़ें, फिर निर्माण करें, अंत में तैनाती जोड़ें।

सुरक्षा: गुप्त और अनुमति पाइपलाइन में

सीआई/सीडी उन स्थानों में से एक है जहां रहस्य सबसे अधिक लीक होते हैं। तीन सुनहरे नियम:

  1. YAML में कभी भी सादे पाठ में रहस्य न लिखें। प्लेटफ़ॉर्म के गुप्त भंडार (GitHub Secrets, GitLab CI/CD वेरिएबल्स) का उपयोग करें और इसे ${{secrets.X }} के साथ कॉल करें।
  2. सबसे कम विशेषाधिकार. आप पाइपलाइन को जो टोकन देंगे, उसमें केवल उतना ही अधिकार होगा जितना आवश्यक हो। इसे अनुमतियों के साथ सीमित करें: GitHub क्रियाओं में ब्लॉक करें।
  3. लॉग पर सीक्रेट न दबाएं. echo $TOKEN जैसी पंक्तियाँ लॉग में रहस्य प्रकट करती हैं। प्लेटफ़ॉर्म मुखौटा, लेकिन सावधान भी रहें।
सावधानी: सुविधा के लिए, एआई कभी-कभी नमूना पाइपलाइनों में पासवर्ड: 123456 या अत्यधिक व्यापक अनुमतियाँ: राइट-ऑल जैसे एम्बेडेड मान डालता है। इसे हमेशा ठीक करें: रहस्य को संदर्भ में बदलें, अनुमति को संक्षिप्त करें।

तुलना चार्ट

संकल्पना

गिटहब क्रियाएँ

गिटलैब सीआई

कॉन्फ़िगरेशन फ़ाइल

.github/workflows/*.yml

.gitlab-ci.yml

निर्माण इकाई

वर्कफ़्लो → कार्य → चरण

चरण → कार्य

ट्रिगर

दस:

नियम: / केवल:

सम्मन रहस्य

${{रहस्य.नाम }}

$नाम (सीआई/सीडी वेरिएबल्स)

तैयार घटक

उपयोग: Action@v4

शामिल करें: /टेम्पलेट

धावक

चलता रहता है:

टैग:

तीन मिनी मामले

केस 1 - घटाकर 6 घंटे 40 मिनट कर दिया गया। एक टीम अपनी मैन्युअल परीक्षण-निर्माण-तैनाती प्रक्रिया को स्वचालित करना चाहती थी, लेकिन कोई भी YAML से परिचित नहीं था। उन्होंने YZ को "नोड.जेएस प्रोजेक्ट, गिटहब एक्शन, एनपीएम टेस्ट और एनपीएम बिल्ड इन पुश टू मेन, केवल वी* टैग में तैनात" के रूप में वर्णित किया। एआई ने 40 लाइनों का एक कार्यशील ढांचा तैयार किया; टीम ने हर चरण का सत्यापन किया और 40 मिनट में लाइव हो गई। यदि वे इसे हाथ से लिखते तो यह एक दिन का काम होता।

केस 2 - प्रमाणीकरण ने एक सुरक्षा भेद्यता पकड़ी। एक इंजीनियर ने एआई से वर्कफ़्लो तैनात करने के लिए कहा। आउटपुट में अनुमतियाँ शामिल हैं: राइट-ऑल - जिसका अर्थ है कि टोकन रिपॉजिटरी, पैकेज, सब कुछ पर लिख सकता है। इंजीनियर ने इस पर ध्यान दिया और इसे अनुमतियों के साथ सीमित कर दिया: { सामग्री: पढ़ें, पैकेज: लिखें }। इससे संपूर्ण रिपॉजिटरी की जगह अपहृत निर्भरता का जोखिम समाप्त हो गया।

केस 3 - मतिभ्रम क्रिया। एक टीम ने AI-सुझाए गए उपयोग चलाए: Actions/deploy-to-aws@v3 लाइन; ऐसी कोई आधिकारिक कार्रवाई नहीं हुई, एआई ने नाम बनाया। "कार्रवाई नहीं मिली" के साथ पाइपलाइन फट गई। पाठ: मार्केटप्लेस में सत्यापित करें कि उपयोग के साथ बुलाया गया प्रत्येक घटक वास्तव में मौजूद है।

चार प्रतिलिपि योग्य टेम्पलेट

1) बेसिक सीआई वर्कफ़्लो:

GitHub क्रियाओं के लिए CI वर्कफ़्लो लिखें। प्रोजेक्ट: [भाषा/फ़्रेमवर्क]। ट्रिगर: मुख्य शाखा में पुश और पुल अनुरोध। चरण: निर्भरताएँ स्थापित करें, परीक्षण चलाएँ, लिंट चलाएँ। कोई तैनाती नहीं। रनर उबंटू-नवीनतम। किसी रहस्य की आवश्यकता नहीं है. YAML पर टिप्पणी करें.

2) तैनात सीडी वर्कफ़्लो (सुरक्षित):

[प्लेटफ़ॉर्म] के लिए परिनियोजन वर्कफ़्लो लिखें। इसे केवल 'v*' टैग पर काम करना चाहिए। लक्ष्य: [मीडिया/क्लाउड]। नियम: - रहस्यों को कभी भी सादे पाठ में न लिखें, उन्हें ${{रहस्यों'' से पुकारें।

3) मौजूदा पाइपलाइन का वर्णन करें:

निम्नलिखित [प्लेटफ़ॉर्म] पाइपलाइन का पंक्ति दर पंक्ति वर्णन करें: प्रत्येक कार्य क्या करता है, यह किस क्रम में चलता है, यह किस रहस्य का उपयोग करता है, और इसके दो सबसे जोखिम भरे बिंदु क्या हैं? अंत में, 3 सुधार सुझाएं। पाइपलाइन: [YAML सामग्री]

4) पाइपलाइन को गति दें:

निम्नलिखित सीआई पाइपलाइन धीरे-धीरे चल रही है (अवधि: [एक्स मिनट])। कैश उपयोग, समानांतर नौकरियों और अनावश्यक चरणों की जांच करें। 5 ठोस, कार्रवाई योग्य त्वरण सुझाव दें और प्रत्येक का अनुमानित प्रभाव लिखें। पाइपलाइन: [YAML]

कमजोर संकेत/मजबूत संकेत

कमज़ोर: "GitHub क्रियाएँ वर्कफ़्लो लिखें।"

परिणाम: यह स्पष्ट नहीं है कि कौन सी भाषा, कौन सा ट्रिगर, क्या कोई तैनाती है; एआई एक सामान्य नोड उदाहरण देता है, संभवतः आपके प्रोजेक्ट में फिट नहीं होगा, और रहस्य को हार्डकोड कर सकता है।

मजबूत: "गिटहब एक्शन वर्कफ़्लो लिखें। पायथन 3.12 प्रोजेक्ट, पुल अनुरोध और मुख्य पुश में पाइटेस्ट + रफ़ चलाएं; कोई तैनाती नहीं; पाइप कैश के साथ निर्भरता में तेजी लाएं; कोई रहस्य आवश्यक नहीं है। टिप्पणियों के साथ YAML निर्यात करें।"

अंतर: दूसरा संकेत भाषा, ट्रिगर, दायरा (कोई तैनाती नहीं), प्रदर्शन अपेक्षा और सुरक्षा बाधा देता है। आउटपुट सीधे काम करता है.

सामान्य गलतियाँ

  • YAML में रहस्य एम्बेड करना। प्लेनटेक्स्ट पासवर्ड/टोकन सबसे आम सीआई भेद्यता है।
  • अत्यधिक व्यापक परमिट. सब कुछ लिखने के बजाय आवश्यक न्यूनतम अनुमति दें।
  • अस्तित्वहीन क्रिया/टेम्पलेट पर भरोसा करना। एआई-निर्मित उपयोगों को सत्यापित करें: मार्केटप्लेस में लाइनें।
  • सीआई के साथ भ्रमित करने वाली तैनाती। परीक्षण हर पुश पर चल सकता है, लेकिन परिनियोजन को नियंत्रित और अनुमोदित किया जाना चाहिए।
  • कैश का उपयोग नहीं किया जा रहा है. प्रत्येक रन पर स्क्रैच से निर्भरता स्थापित करने से पाइपलाइन मिनटों में धीमी हो जाती है।
  • पहले वर्कफ़्लो को सीधे मुख्य रिपॉजिटरी में आज़माना। इसे पहले परीक्षण भंडार पर चलाएँ।

संक्षेप में

सीआई/सीडी पाइपलाइन स्वचालित पाइप हैं जो कोड को सुरक्षित रूप से उत्पाद तक ले जाती हैं और इन्हें वाईएएमएल से परिभाषित किया जाता है। AI तेजी से GitHub Actions और GitLab CI के लिए कार्यशील ब्लूप्रिंट तैयार करता है - लेकिन आपको प्लेटफ़ॉर्म, भाषा, ट्रिगर और तैनाती के दायरे के बारे में स्पष्ट होना होगा। सुरक्षा में तीन नियम हैं: संदर्भ द्वारा रहस्यों को कॉल करना, न्यूनतम विशेषाधिकार देना, लॉग में रहस्यों को प्रिंट न करना। यह सत्यापित करना आपकी ज़िम्मेदारी है कि प्रत्येक उपयोग:/शामिल: घटक वास्तव में मौजूद है और प्रत्येक चरण क्या करता है।

आवेदन कार्य

एक सरल नमूना प्रोजेक्ट चुनें (यहां तक कि आपकी भाषा में "हैलो वर्ल्ड" भी काम करेगा)। एआई को उपरोक्त "बेसिक सीआई वर्कफ़्लो" टेम्पलेट के साथ एक वर्कफ़्लो तैयार करने को कहें। फिर: (1) अपने शब्दों में लिखें कि प्रत्येक चरण क्या करता है; (2) सत्यापित करें कि कोई रहस्य अंतर्निहित नहीं है और अनुमतियाँ सीमित हैं; (3) यदि संभव हो, तो इसे एक परीक्षण टैंक में चलाएं और लाल-हरे व्यवहार का निरीक्षण करें।

जांच सूची

  • [ ] मैंने अपने प्रॉम्प्ट में प्लेटफ़ॉर्म, भाषा/ढांचा, ट्रिगर और तैनाती का दायरा जोड़ा।
  • [ ] मैं समझता हूं कि उत्पन्न YAML में प्रत्येक कार्य और चरण क्या करता है।
  • [ ] कोई रहस्य सादा पाठ नहीं है; सभी ${{रहस्य.एक्स }} / सीआई वैरिएबल।
  • [ ] मैंने अनुमतियों को न्यूनतम प्राधिकार तक सीमित कर दिया है।
  • [ ] मैंने सत्यापित किया कि सभी बुलाए गए कार्य/टेम्पलेट वास्तव में मौजूद हैं।
  • [ ] मैंने परिनियोजन चरण को अनुमोदन/सुरक्षा के साथ नियंत्रित किया।