युनिट्स
1. DevOps आणि Cloud AI चा परिचय: भूमिका, सीमा, प्रमाणीकरण, सुरक्षा आणि रहस्ये 2. कृत्रिम बुद्धिमत्तेसह CI/CD पाइपलाइन डिझाइन करणे: GitHub क्रिया आणि GitLab CI 3. कोड म्हणून पायाभूत सुविधा व्यवस्थापित करणे: टेराफॉर्म आणि IaC सह कृत्रिम बुद्धिमत्ता 4. कंटेनरायझेशन: डॉकरफाइल आणि आर्टिफिशियल इंटेलिजन्ससह इमेज ऑप्टिमायझेशन 5. कुबर्नेट्स: मॅनिफेस्ट, हेल्म आणि एआय-पॉवर्ड ऑर्केस्ट्रेशन 6. देखरेख आणि निरीक्षणक्षमता: मेट्रिक, लॉग, ट्रेस आणि अलार्म नियम 7. घटना व्यवस्थापन आणि पोस्टमॉर्टम: आर्टिफिशियल इंटेलिजन्ससह मूळ कारण विश्लेषण 8. क्लाउड कॉस्ट ऑप्टिमायझेशन (फिनऑप्स): कृत्रिम बुद्धिमत्तेसह कचरा शोधणे 9. स्क्रिप्ट आणि ऑटोमेशन जनरेशन: बॅश, पायथन आणि पॉवरशेल 10. सुरक्षा आणि रहस्ये व्यवस्थापन: DevSecOps आणि कृत्रिम बुद्धिमत्ता 11. उत्पादन पडताळणी, रिलीझ स्ट्रॅटेजीज आणि एंड-टू-एंड AI वर्कफ्लो
युनिट 2 / 11

कृत्रिम बुद्धिमत्तेसह CI/CD पाइपलाइन डिझाइन करणे: GitHub क्रिया आणि GitLab CI

नफा:

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

आधुनिक सॉफ्टवेअरचे हृदय ही स्वयंचलित पाइपलाइन आहे ज्याद्वारे कोड विकसकाचा संगणक सुरक्षितपणे ग्राहकापर्यंत पोहोचेपर्यंत सोडतो. या पाईपला CI/CD म्हणतात. CI (कंटिन्युअस इंटिग्रेशन) हे प्रत्येक कोड बदलाचे स्वयंचलित संकलन आणि चाचणी आहे; विकसकाने कीबोर्ड सोडण्यापूर्वी बग पकडणे हा त्याचा उद्देश आहे. सीडी (सतत डिलिव्हरी/डिप्लॉयमेंट) ही स्वयंचलित तयारी किंवा चाचणी केलेल्या कोडचे प्रकाशन आहे. CI/CD पाइपलाइन ही एक कॉन्फिगरेशन फाइल आहे जी या पायऱ्या क्रमाने परिभाषित करते — सामान्यतः YAML (मानव-वाचनीय कॉन्फिगरेशन मजकूर स्वरूप) मध्ये लिहिलेली असते.

या YAML फाइल्स हाताने लिहिणे कंटाळवाणे, शब्दशः आणि त्रुटी-प्रवण आहे; इंडेंटेशन एका जागेने घसरल्यास, संपूर्ण पाइपलाइन तुटते. येथेच AI येते: योग्य संदर्भासह, ते काही सेकंदात कार्यरत मसुदा तयार करते. परंतु प्रत्येक व्युत्पन्न केलेली पायरी काय करते हे समजून घेणे आणि सत्यापित करणे हे तुमचे काम आहे — कारण ही पाईप आहे जी तुमचा कोड प्रोडमध्ये घेऊन जाते.

सीआय/सीडी पाइपलाइनची शरीररचना

प्रत्येक पाइपलाइनमध्ये अनेक मूलभूत संकल्पना असतात. आपण हे जाणून घेतल्याशिवाय AI आउटपुट नियंत्रित करू शकत नाही:

  • ट्रिगर: पाइपलाइन कशापासून सुरू होते? सहसा शाखेकडे पुश, पुल विनंती (विलीन करण्याची विनंती) किंवा वेळापत्रक.
  • नोकरी: तार्किक एकक जे चरणांची मालिका कार्यान्वित करते; उदाहरणार्थ "चाचणी", "बिल्ड", "डिप्लॉय".
  • पायरी: नोकरीमध्ये एकच आदेश किंवा क्रिया.
  • धावणारा: आभासी मशीन किंवा कंटेनर ज्यावर नोकऱ्या चालतात.
  • आर्टिफॅक्ट: एका जॉबद्वारे उत्पादित केलेले आउटपुट आणि त्यानंतरच्या नोकऱ्यांद्वारे वापरले जाते (उदाहरणार्थ, संकलित फाइल).
  • गुप्त: गोपनीय माहिती जी पाइपलाइन वापरते परंतु रेपॉजिटरीमध्ये साध्या मजकुरात राहू नये.

GitHub क्रिया ही व्याख्या .github/workflows/*.yml फाइल्समध्ये ठेवते; युनिट वर्कफ्लो → जॉब → पायरी पदानुक्रम आहे. GitLab CI, दुसरीकडे, .gitlab-ci.yml फाइलमध्ये स्टेज → जॉब स्ट्रक्चर वापरते. AI ला दोन्ही वाक्यरचना माहित आहेत, परंतु तुम्हाला कोणता हवा आहे हे तुम्ही स्पष्टपणे सांगावे.

टीप: AI ला पाइपलाइनसाठी विचारताना, नेहमी निर्दिष्ट करा: प्लॅटफॉर्म (GitHub क्रिया किंवा GitLab CI), भाषा/फ्रेमवर्क (Node, .NET, Python…), ट्रिगर आणि ते तैनात केले जाईल की नाही. माहितीचे हे चार तुकडे आउटपुटची उपयुक्तता दुप्पट करतात.

चरण-दर-चरण: AI सह पाइपलाइन डिझाइन करणे

  1. ध्येय स्पष्ट करा. जसे की "पुश टू मेन, बिल्ड इमेज वर चाचण्या चालवा, परंतु टॅग टाकल्यावरच तैनात करा".
  2. सांगाडा तयार करा. मूलभूत कार्यप्रवाहासाठी AI ला विचारा.
  3. पायऱ्या वाचा आणि समजून घ्या. प्रत्येक रन आणि वापरते लाइन काय करते ते सत्यापित करा.
  4. गुप्त संदर्भ तपासा. गुपिते ${{ secrets.NAME }} सह कॉल केली जातात किंवा ते कोडमध्ये एम्बेड केलेले आहेत?
  5. स्थानिक / CI वापरून पहा. ते एका लहान चाचणी भांडारावर चालवा, लाल-हिरवे (फेल-पास) वर्तन पहा.
  6. हळूहळू विस्तृत करा. प्रथम फक्त CI (चाचणी) जोडा, नंतर बिल्ड करा, शेवटचा जोडा तैनात करा.

सुरक्षा: पाइपलाइनमध्ये गुप्त आणि परवानगी

सीआय/सीडी हे अशा ठिकाणांपैकी एक आहे जिथे गुपिते सर्वात जास्त लीक होतात. तीन सुवर्ण नियम:

  1. YAML मध्ये साध्या मजकुरात कधीही रहस्ये लिहू नका. प्लॅटफॉर्मचे गुप्त भांडार (GitHub Secrets, GitLab CI/CD व्हेरिएबल्स) वापरा आणि त्याला ${{ secrets.X }} सह कॉल करा.
  2. किमान विशेषाधिकार. तुम्ही पाईपलाईनला दिलेल्या टोकनला आवश्यक तेवढेच अधिकार असतील. परवानगीसह हे कमी करा: GitHub क्रियांमध्ये अवरोधित करा.
  3. लॉगवर गुप्त दाबू नका. प्रतिध्वनी $TOKEN सारख्या रेषा लॉगमधील रहस्य प्रकट करतात. प्लॅटफॉर्म मास्क, पण सावधगिरी बाळगा.
खबरदारी: सोयीसाठी, AI काहीवेळा पासवर्ड: 123456 सारखी एम्बेडेड मूल्ये ठेवते: 123456 किंवा जास्त प्रमाणात परवानग्या: नमुना पाइपलाइनमध्ये सर्व लिहा. याचे नेहमी निराकरण करा: संदर्भासाठी गुप्त बदला, परवानगी संकुचित करा.

तुलना चार्ट

संकल्पना

GitHub क्रिया

GitLab CI

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

.github/workflows/*.yml

.gitlab-ci.yml

इमारत युनिट

कार्यप्रवाह → नोकरी → पायरी

टप्पा → नोकरी

ट्रिगर

दहा:

नियम: / फक्त:

गुप्त बोलावणे

${{ गुपिते.NAME }}

$NAME (CI/CD व्हेरिएबल्स)

तयार घटक

वापरते: action@v4

समाविष्ट करा: /टेम्प्लेट

धावपटू

रन-ऑन:

टॅग:

तीन लहान प्रकरणे

केस 1 - 6 तास आणि 40 मिनिटांपर्यंत कमी केले. एका संघाला त्यांची मॅन्युअल चाचणी-बिल्ड-डिप्लॉय प्रक्रिया स्वयंचलित करायची होती, परंतु YAML शी कोणीही परिचित नव्हते. त्यांनी YZ चे वर्णन "Node.js प्रोजेक्ट, GitHub Actions, npm चाचणी आणि npm बिल्ड इन पुश टू मेन, फक्त v* टॅगमध्ये तैनात" असे केले. AI ने 40 ओळींचा कार्यरत सांगाडा तयार केला; टीमने प्रत्येक पायरीची पडताळणी केली आणि 40 मिनिटांत लाइव्ह झाली. त्यांनी ते हाताने लिहिले असते तर ते दिवसभराचे काम झाले असते.

केस 2 — प्रमाणीकरणाने सुरक्षा भेद्यता पकडली. एका अभियंत्याने एआयला वर्कफ्लो तैनात करण्यास सांगितले. आउटपुटमध्ये परवानग्या समाविष्ट आहेत: लेखन-सर्व — म्हणजे टोकन रेपॉजिटरी, पॅकेजेस, सर्वकाही लिहू शकते. अभियंत्याने हे लक्षात घेतले आणि परवानगीसह ते कमी केले: { contents: read, packages: write }. यामुळे संपूर्ण रेपॉजिटरी बदलून अपहृत अवलंबित्वाचा धोका दूर झाला.

केस 3 - भ्रामक क्रिया. एका टीमने AI-सुचवलेले वापर चालवले: actions/deploy-to-aws@v3 लाइन; अशी कोणतीही अधिकृत कारवाई नव्हती, एआयने नाव बनवले. ‘ॲक्शन नॉट फाउंड’ अशी पाइपलाइन फुटली. धडा: मार्केटप्लेसमध्ये सत्यापित करा की प्रत्येक घटक वापरासह म्हणतात: प्रत्यक्षात अस्तित्वात आहे.

चार कॉपी करण्यायोग्य टेम्पलेट्स

1) मूलभूत CI कार्यप्रवाह:

GitHub क्रियांसाठी CI वर्कफ्लो लिहा. प्रकल्प: [भाषा/चौकट]. ट्रिगर: मुख्य शाखेकडे पुश आणि खेचण्याची विनंती. पायऱ्या: अवलंबन स्थापित करा, चाचण्या चालवा, लिंट चालवा. NO Deploy.Runner ubuntu-latest. कोणतेही रहस्य आवश्यक नाही. YAML भाष्य करा.

2) उपयोजित सीडी वर्कफ्लो (सुरक्षित):

[PLATFORM] साठी उपयोजित कार्यप्रवाह लिहा. हे फक्त 'v*' टॅगवरच चालले पाहिजे. लक्ष्य: [मीडिया/क्लाउड]. नियम:- साध्या मजकुरात कधीही गुपिते लिहू नका, त्यांना ${{ गुपिते सह कॉल करा.

3) विद्यमान पाइपलाइनचे वर्णन करा:

खालील [प्लॅटफॉर्म] पाइपलाइन लाइनचे ओळीनुसार वर्णन करा: प्रत्येक काम काय करते, ते कोणत्या क्रमाने चालते, ते कोणते रहस्य वापरते आणि त्याचे दोन धोकादायक मुद्दे कोणते आहेत? शेवटी, 3 सुधारणा सुचवा. पाइपलाइन: [YAML सामग्री]

4) पाइपलाइनचा वेग वाढवा:

खालील CI पाइपलाइन हळू चालत आहे (कालावधी: [X मिनिट]). कॅशे वापर, समांतर नोकऱ्या आणि अनावश्यक पायऱ्या तपासा. 5 ठोस, कृती करण्यायोग्य प्रवेग सूचना द्या आणि प्रत्येकाचा अंदाजे परिणाम लिहा. पाइपलाइन: [YAML]

कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट

कमकुवत: "GitHub क्रिया वर्कफ्लो लिहा."

परिणाम: कोणती भाषा, कोणती ट्रिगर, उपयोजन आहे की नाही हे स्पष्ट नाही; AI एक सामान्य नोड उदाहरण देते, कदाचित तुमच्या प्रकल्पात बसणार नाही आणि गुप्त हार्डकोड करू शकते.

सशक्त: "GitHub क्रियांचा वर्कफ्लो लिहा. Python 3.12 प्रकल्प, पुल विनंती आणि मुख्य पुशमध्ये pytest + ruff चालवा; उपयोजित नाही; pip कॅशेसह अवलंबनांना गती द्या; कोणतेही रहस्य आवश्यक नाही. टिप्पण्यांसह YAML निर्यात करा."

फरक: दुसरा प्रॉम्प्ट भाषा, ट्रिगर, स्कोप (उपयोजन नाही), कार्यप्रदर्शन अपेक्षा आणि सुरक्षा मर्यादा देते. आउटपुट थेट कार्य करते.

सामान्य चुका

  • YAML मध्ये रहस्य एम्बेड करणे. प्लेनटेक्स्ट पासवर्ड/टोकन ही सर्वात सामान्य सीआय भेद्यता आहे.
  • जास्त व्यापक परवानगी. सर्व लिहिण्याऐवजी आवश्यक किमान परवानगी द्या.
  • अस्तित्वात नसलेल्या कृती/टेम्पलेटवर अवलंबून राहणे. मार्केटप्लेसमधील एआय-निर्मित उपयोगांची पडताळणी करा: ओळी.
  • गोंधळात टाकणारा तैनात CI सह. चाचणी प्रत्येक पुशवर चालू शकते, परंतु उपयोजन नियंत्रित आणि मंजूर करणे आवश्यक आहे.
  • कॅशे वापरत नाही. प्रत्येक रनवर सुरवातीपासून अवलंबित्व स्थापित केल्याने पाइपलाइन काही मिनिटांनी कमी होते.
  • प्रथम कार्यप्रवाह थेट मुख्य भांडारात वापरून पहा. ते प्रथम चाचणी भांडारावर चालवा.

सारांशात

CI/CD पाइपलाइन हे स्वयंचलित पाईप्स आहेत जे कोड सुरक्षितपणे प्रोडमध्ये हलवतात आणि YAML सह परिभाषित केले जातात. AI त्वरीत GitHub Actions आणि GitLab CI साठी कार्यरत ब्लूप्रिंट तयार करते — परंतु तुम्हाला प्लॅटफॉर्म, भाषा, ट्रिगर आणि उपयोजित स्कोप याबद्दल स्पष्ट असणे आवश्यक आहे. सुरक्षेमध्ये तीन नियम आहेत: संदर्भानुसार कॉल गुपिते, किमान विशेषाधिकार मंजूर करा, लॉगमध्ये रहस्ये छापू नका. प्रत्येक वापरते:/समाविष्ट: घटक प्रत्यक्षात अस्तित्वात आहेत आणि प्रत्येक पायरी काय करते हे सत्यापित करणे ही तुमची जबाबदारी आहे.

अर्ज कार्य

एक साधा नमुना प्रकल्प निवडा (तुमच्या भाषेत "हॅलो वर्ल्ड" देखील करेल). AI ला वरील "बेसिक CI वर्कफ्लो" टेम्प्लेटसह वर्कफ्लो तयार करा. नंतर: (1) प्रत्येक पाऊल काय करते ते तुमच्या स्वतःच्या शब्दात लिहा; (२) कोणतीही गुपिते एम्बेड केलेली नाहीत आणि परवानग्या अरुंद आहेत याची पडताळणी करा; (3) शक्य असल्यास, ते चाचणी टाकीमध्ये चालवा आणि लाल-हिरव्या वर्तनाचे निरीक्षण करा.

चेकलिस्ट

  • मी माझ्या प्रॉम्प्टवर प्लॅटफॉर्म, भाषा/फ्रेमवर्क, ट्रिगर आणि डिप्लॉय स्कोप जोडले.
  • व्युत्पन्न केलेल्या YAML मध्ये प्रत्येक कार्य आणि पाऊल काय करते हे मला समजते.
  • [ ] कोणतेही रहस्य साधा मजकूर नाही; सर्व ${{ secrets.X }} / CI व्हेरिएबल.
  • [ ] मी किमान अधिकाऱ्यांसाठी परवानग्या कमी केल्या आहेत.
  • [ ] मी सत्यापित केले की सर्व म्हणतात क्रिया/टेम्प्लेट्स प्रत्यक्षात अस्तित्वात आहेत.
  • [ ] मी उपयोजनाची पायरी मंजूरी/संरक्षणासह नियंत्रित केली आहे.