એકમો
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 કોન્સેપ્ટ, પાઇપલાઇન એનાટોમી (ટ્રિગર, જોબ, સ્ટેપ, રનર, આર્ટિફેક્ટ) અને GitHub એક્શન્સ અને GitLab CI વચ્ચેના તફાવતોને સમજવાની ક્ષમતા અને યોગ્ય સંદર્ભ સાથે કૃત્રિમ બુદ્ધિ ઉત્પન્ન કરતી પાઇપલાઇન્સ ધરાવે છે.
  • કૃત્રિમ બુદ્ધિ દ્વારા ઉત્પાદિત પાઇપલાઇનમાં ગુપ્ત સંદર્ભો, પરવાનગીઓ અને કહેવાતા ઘટકોના અસ્તિત્વને તપાસવાની અને સુરક્ષિત કરવાની ક્ષમતા
  • સાદા લખાણમાં રહસ્યો ન લખવા, ન્યૂનતમ અધિકૃતતા આપવા, અને જમાવટને CI થી અલગ કરીને નિયંત્રિત રાખવાના સિદ્ધાંતોને લાગુ કરવાની ક્ષમતા

આધુનિક સૉફ્ટવેરનું હૃદય એ સ્વયંસંચાલિત પાઇપલાઇન છે જેના દ્વારા કોડ વિકાસકર્તાના કમ્પ્યુટરને ત્યાં સુધી છોડી દે છે જ્યાં સુધી તે ગ્રાહક સુધી સુરક્ષિત રીતે પહોંચે નહીં. આ પાઇપને CI/CD કહેવામાં આવે છે. CI (સતત એકીકરણ) એ દરેક કોડ ફેરફારનું સ્વચાલિત સંકલન અને પરીક્ષણ છે; તેનો હેતુ વિકાસકર્તા કીબોર્ડ છોડે તે પહેલાં બગને પકડવાનો છે. સીડી (સતત ડિલિવરી/ડિપ્લોયમેન્ટ) એ સ્વચાલિત તૈયારી અથવા તો પરીક્ષણ કરાયેલ કોડની રિલીઝ છે. CI/CD પાઇપલાઇન એ રૂપરેખાંકન ફાઇલ છે જે આ પગલાંને ક્રમમાં વ્યાખ્યાયિત કરે છે — સામાન્ય રીતે YAML (માનવ વાંચી શકાય તેવું રૂપરેખાંકન ટેક્સ્ટ ફોર્મેટ) માં લખવામાં આવે છે.

આ YAML ફાઇલોને હાથથી લખવી એ કંટાળાજનક, વર્બોઝ અને ભૂલથી ભરેલું છે; જો ઇન્ડેન્ટેશન એક જગ્યાથી સરકી જાય, તો આખી પાઇપલાઇન તૂટી જાય છે. આ તે છે જ્યાં AI આવે છે: યોગ્ય સંદર્ભ સાથે, તે સેકન્ડોમાં કાર્યકારી ડ્રાફ્ટ બનાવે છે. પરંતુ દરેક જનરેટ કરેલ પગલું શું કરે છે તે સમજવા અને ચકાસવાનું તમારું કામ છે — કારણ કે આ તે પાઇપ છે જે તમારા કોડને પ્રોડમાં લઈ જાય છે.

CI/CD પાઇપલાઇનની શરીરરચના

દરેક પાઇપલાઇનમાં અનેક મૂળભૂત ખ્યાલોનો સમાવેશ થાય છે. તમે આ જાણ્યા વિના AI આઉટપુટને નિયંત્રિત કરી શકતા નથી:

  • ટ્રિગર: પાઇપલાઇન શું શરૂ કરે છે? સામાન્ય રીતે શાખા તરફ દબાણ, પુલ વિનંતી (મર્જ વિનંતી) અથવા શેડ્યૂલ.
  • જોબ: તાર્કિક એકમ જે શ્રેણીબદ્ધ પગલાંઓનું અમલીકરણ કરે છે; ઉદાહરણ તરીકે "ટેસ્ટ", "બિલ્ડ", "ડિપ્લોય".
  • પગલું: નોકરીમાં એક જ આદેશ અથવા ક્રિયા.
  • રનર: વર્ચ્યુઅલ મશીન અથવા કન્ટેનર જેના પર નોકરીઓ ચાલે છે.
  • આર્ટિફેક્ટ: એક જોબ દ્વારા ઉત્પાદિત અને અનુગામી જોબ્સ દ્વારા ઉપયોગમાં લેવાતું આઉટપુટ (ઉદાહરણ તરીકે, એક સંકલિત ફાઇલ).
  • ગુપ્ત: ગોપનીય માહિતી કે જે પાઇપલાઇનનો ઉપયોગ કરે છે પરંતુ રીપોઝીટરીમાં સાદા ટેક્સ્ટમાં રહેવી જોઈએ નહીં.

GitHub ક્રિયાઓ આ વ્યાખ્યાને .github/workflows/*.yml ફાઇલોમાં રાખે છે; એકમ વર્કફ્લો → જોબ → સ્ટેપ હાયરાર્કી છે. GitLab CI, બીજી તરફ, .gitlab-ci.yml ફાઇલમાં સ્ટેજ → જોબ સ્ટ્રક્ચરનો ઉપયોગ કરે છે. AI બંને વાક્યરચના જાણે છે, પરંતુ તમારે સ્પષ્ટપણે કહેવું જોઈએ કે તમને કયું વાક્યરચના જોઈએ છે.

ટીપ: જ્યારે AI ને પાઇપલાઇન્સ માટે પૂછો, ત્યારે હંમેશા સ્પષ્ટ કરો: પ્લેટફોર્મ (GitHub ક્રિયાઓ અથવા GitLab CI), ભાષા/ફ્રેમવર્ક (નોડ, .NET, Python…), ટ્રિગર અને તે જમાવવામાં આવશે કે કેમ. માહિતીના આ ચાર ટુકડાઓ આઉટપુટની ઉપયોગિતાને બમણી કરે છે.

સ્ટેપ બાય સ્ટેપ: AI સાથે પાઇપલાઇન ડિઝાઇન કરવી

  1. ધ્યેય સ્પષ્ટ કરો. જેમ કે "મુખ્ય પર પુશ કરવા પર પરીક્ષણો ચલાવો, છબી બનાવો, પરંતુ જ્યારે ટેગ ફેંકવામાં આવે ત્યારે જ તૈનાત કરો".
  2. હાડપિંજર ઉત્પન્ન કરો. મૂળભૂત વર્કફ્લો માટે AI ને પૂછો.
  3. પગલાંઓ વાંચો અને સમજો. દરેક રન અને યુઝ લાઇન શું કરે છે તે ચકાસો.
  4. ગુપ્ત સંદર્ભો તપાસો. શું રહસ્યોને ${{ secrets.NAME }} સાથે કહેવામાં આવે છે અથવા તે કોડમાં એમ્બેડ કરેલા છે?
  5. તેને સ્થાનિક રીતે અજમાવી જુઓ/CI. તેને નાના ટેસ્ટ રિપોઝીટરી પર ચલાવો, લાલ-લીલો (ફેલ-પાસ) વર્તન જુઓ.
  6. ધીમે ધીમે વિસ્તૃત કરો. પહેલા ફક્ત CI (ટેસ્ટ) ઉમેરો, પછી બિલ્ડ કરો, છેલ્લે એડ ડિપ્લોય કરો.

સુરક્ષા: ગુપ્ત અને પાઇપલાઇનમાં પરવાનગી

CI/CD એ એવી જગ્યાઓમાંથી એક છે જ્યાં રહસ્યો સૌથી વધુ લીક થાય છે. ત્રણ સુવર્ણ નિયમો:

  1. YAML માં સાદા ટેક્સ્ટમાં ક્યારેય રહસ્યો લખશો નહીં. પ્લેટફોર્મની સિક્રેટ રીપોઝીટરીનો ઉપયોગ કરો (GitHub Secrets, GitLab CI/CD વેરીએબલ્સ) અને તેને ${{ secrets.X }} સાથે કૉલ કરો.
  2. ઓછામાં ઓછો વિશેષાધિકાર. તમે પાઈપલાઈનને જે ટોકન આપો છો તેની પાસે જરૂરી હોય તેટલી જ સત્તા હશે. પરવાનગીઓ સાથે આને સંકુચિત કરો: GitHub ક્રિયાઓમાં અવરોધિત કરો.
  3. લોગ પર ગુપ્ત દબાવો નહીં. echo $TOKEN જેવી રેખાઓ લૉગમાંનું રહસ્ય છતી કરે છે. પ્લેટફોર્મ માસ્ક, પણ સાવચેત રહો.
સાવધાન: સગવડતા માટે, AI કેટલીકવાર એમ્બેડેડ મૂલ્યો મૂકે છે જેમ કે પાસવર્ડ: 123456 અથવા વધુ પડતી વ્યાપક પરવાનગીઓ: નમૂના પાઇપલાઇનમાં લખો-બધું. હંમેશા આને ઠીક કરો: સંદર્ભમાં રહસ્ય બદલો, પરવાનગી સંકુચિત કરો.

સરખામણી ચાર્ટ

ખ્યાલ

GitHub ક્રિયાઓ

GitLab CI

રૂપરેખાંકન ફાઇલ

.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 લાઇન; આવી કોઈ સત્તાવાર કાર્યવાહી ન હતી, AI એ નામ બનાવ્યું. "કાર્યવાહી મળી નથી" સાથે પાઈપલાઈન ફૂટી. પાઠ: માર્કેટપ્લેસમાં ચકાસો કે દરેક ઘટકને ઉપયોગો સાથે બોલાવવામાં આવે છે: વાસ્તવમાં અસ્તિત્વમાં છે.

ચાર નકલ કરી શકાય તેવા નમૂનાઓ

1) મૂળભૂત CI વર્કફ્લો:

GitHub ક્રિયાઓ માટે CI વર્કફ્લો લખો. પ્રોજેક્ટ: [LANGUAGE/FRAMEWORK].ટ્રિગર: દબાણ કરો અને મુખ્ય શાખા તરફ ખેંચવાની વિનંતી. પગલાં: નિર્ભરતા સ્થાપિત કરો, પરીક્ષણો ચલાવો, લિન્ટ ચલાવો. 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 cache સાથે નિર્ભરતાને વેગ આપો; કોઈ રહસ્યોની જરૂર નથી. ટિપ્પણીઓ સાથે YAML ની ​​નિકાસ કરો."

તફાવત: બીજો પ્રોમ્પ્ટ ભાષા, ટ્રિગર, અવકાશ (કોઈ જમાવટ નથી), પ્રદર્શન અપેક્ષા અને સુરક્ષા અવરોધ આપે છે. આઉટપુટ સીધું કામ કરે છે.

સામાન્ય ભૂલો

  • YAML માં રહસ્ય એમ્બેડ કરવું. પ્લેનટેક્સ્ટ પાસવર્ડ/ટોકન એ સૌથી સામાન્ય CI નબળાઈ છે.
  • વધુ પડતી વ્યાપક પરવાનગી. બધા લખવાને બદલે જરૂરી ન્યૂનતમ પરવાનગી આપો.
  • અવિદ્યમાન ક્રિયા/નમૂના પર આધાર રાખવો. માર્કેટપ્લેસમાં AI દ્વારા બનાવેલા ઉપયોગોને ચકાસો: રેખાઓ.
  • મૂંઝવણભરી જમાવટ CI સાથે. પરીક્ષણ દરેક દબાણ પર ચાલી શકે છે, પરંતુ જમાવટ નિયંત્રિત અને મંજૂર હોવી જોઈએ.
  • કેશનો ઉપયોગ કરતા નથી. દરેક રન પર શરૂઆતથી નિર્ભરતા સ્થાપિત કરવાથી પાઇપલાઇન મિનિટોમાં ધીમી પડી જાય છે.
  • મુખ્ય રીપોઝીટરીમાં સીધા જ પ્રથમ વર્કફ્લોનો પ્રયાસ કરી રહ્યાં છીએ. તેને પહેલા ટેસ્ટ રિપોઝીટરી પર ચલાવો.

સારાંશમાં

CI/CD પાઇપલાઇન્સ એ સ્વયંસંચાલિત પાઈપો છે જે કોડને પ્રોડમાં સુરક્ષિત રીતે ખસેડે છે અને YAML સાથે વ્યાખ્યાયિત કરવામાં આવે છે. AI ઝડપથી GitHub ક્રિયાઓ અને GitLab CI માટે કાર્યકારી બ્લુપ્રિન્ટ્સ બનાવે છે - પરંતુ તમારે પ્લેટફોર્મ, ભાષા, ટ્રિગર અને ડિપ્લોય સ્કોપ વિશે સ્પષ્ટ રહેવાની જરૂર છે. સુરક્ષામાં ત્રણ નિયમો છે: સંદર્ભ દ્વારા કૉલ રહસ્યો, લઘુત્તમ વિશેષાધિકારો આપો, લોગમાં રહસ્યો છાપશો નહીં. તે ચકાસવાની જવાબદારી તમારી છે કે દરેક ઉપયોગ કરે છે:/include: ઘટક ખરેખર અસ્તિત્વમાં છે અને દરેક પગલું શું કરે છે.

એપ્લિકેશન કાર્ય

એક સરળ નમૂના પ્રોજેક્ટ પસંદ કરો (તમારી ભાષામાં "હેલો વર્લ્ડ" પણ કરશે). AI ને ઉપરના "મૂળભૂત CI વર્કફ્લો" ટેમ્પલેટ સાથે વર્કફ્લો ઉત્પન્ન કરવા દો. પછી: (1) દરેક પગલું શું કરે છે તે તમારા પોતાના શબ્દોમાં લખો; (2) ચકાસો કે કોઈ રહસ્યો એમ્બેડેડ નથી અને પરવાનગીઓ સાંકડી છે; (3) જો શક્ય હોય તો, તેને ટેસ્ટ ટાંકીમાં ચલાવો અને લાલ-લીલા વર્તનનું અવલોકન કરો.

ચેકલિસ્ટ

  • [ ] મેં મારા પ્રોમ્પ્ટમાં પ્લેટફોર્મ, ભાષા/ફ્રેમવર્ક, ટ્રિગર અને ડિપ્લોય સ્કોપ ઉમેર્યા છે.
  • [ ] હું સમજું છું કે દરેક કાર્ય અને પગલું જનરેટ કરેલ YAML માં શું કરે છે.
  • [ ] કોઈ રહસ્ય સાદા લખાણ નથી; બધા ${{ secrets.X }} / CI ચલ.
  • [ ] મેં ન્યૂનતમ સત્તાધિકારી માટે પરવાનગીઓને સંકુચિત કરી.
  • [ ] મેં ચકાસ્યું છે કે બધી કહેવાતી ક્રિયાઓ/ટેમ્પ્લેટ્સ ખરેખર અસ્તિત્વમાં છે.
  • [] મેં ડિપ્લોયમેન્ટ સ્ટેપને મંજૂરી/સુરક્ષા સાથે નિયંત્રિત કર્યું છે.