CI/CD શું છે? Continuous Integration અને Delivery સરળ શબ્દોમાં
CI/CD એ સૉફ્ટવેર મોકલવાની એવી રીત છે જેમાં દરેક કોડ ફેરફાર આપમેળે બિલ્ડ, પરીક્ષણ થાય છે અને — જો તે પાસ થાય — તો રિલીઝ માટે તૈયાર કે રિલીઝ કરાય છે. CI (continuous integration) નો અર્થ છે કે ફેરફારો વારંવાર મર્જ થાય છે અને દરેક વખતે સ્વચાલિત પરીક્ષણોથી તપાસાય છે. CD (continuous delivery અથવા deployment) નો અર્થ છે કે જે ફેરફારો પાસ થાય છે તે ઓછા કે કોઈ મેન્યુઅલ કામ વગર તમારા વપરાશકર્તાઓ તરફ પેક કરાય અને મોકલાય છે.
મુદ્દો સરળ છે: ભૂલો થયાની થોડી મિનિટોમાં પકડો, અઠવાડિયાઓ પછી જ્યારે ગ્રાહક તેને શોધે ત્યારે નહીં.
AI સાથે બનાવતી વખતે CI/CD કેમ મહત્વનું છે
AI બિલ્ડર ઝડપથી કોડ ફેરફાર કરે છે. એક જ પ્રોમ્પ્ટ દસ ફાઇલોને સ્પર્શી શકે. આ ઝડપ ત્યાં સુધી સરસ છે જ્યાં સુધી ચેકઆઉટ પેજનો ફેરફાર ચૂપચાપ લૉગિન પેજને તોડે, અને કોઈ વપરાશકર્તા તમને ઇમેઇલ ન કરે ત્યાં સુધી કોઈને ખબર ન પડે.
આ જ માટે CI/CD સલામતી જાળ છે. દરેક ફેરફાર સારો છે એમ માનવાને બદલે, પાઇપલાઇન દરેક વખતે એ જ તપાસ ચલાવે છે:
- શું એપ ભૂલો વગર હજુ બિલ્ડ થાય છે?
- શું સ્વચાલિત પરીક્ષણો હજુ પાસ થાય છે?
- શું કોડ પ્રોજેક્ટના નિયમોનું પાલન કરે છે (ટાઇપ્સ, ફોર્મેટિંગ, સુરક્ષા તપાસ)?
કોઈપણ તપાસ નિષ્ફળ જાય તો, ફેરફાર વપરાશકર્તાઓ સુધી પહોંચે તે પહેલાં રોકાય છે. તમારો કોડ જેટલો ઝડપી બદલાય, એટલી વધુ કિંમતી એવી તપાસ છે જે ક્યારેય થાકતી નથી કે પગલું છોડતી નથી.
રોજિંદા ઉદાહરણથી સમજ
દરરોજ સવારે દુકાનોને બ્રેડ વેચતી બેકરીનો વિચાર કરો.
- CI/CD વગર, દરેક બેકર અઠવાડિયું પોતાની રેસિપીમાં ફેરફાર કરે છે, પછી શુક્રવારે રાત્રે બધા ભેગા કરે છે અને આશા રાખે છે કે બ્રેડ હજુ ફૂલશે. જ્યારે નથી ફૂલતી, ત્યારે કોના ફેરફારથી એમ થયું તે કોઈને ખબર નથી.
- CI સાથે, દરેક નાનો રેસિપી ફેરફાર તરત ટેસ્ટ લોફમાં બેક થાય છે અને તપાસાય છે — સ્વાદ, વજન, આકાર. ખરાબ ફેરફાર એ જ દિવસે પકડાય છે, અને તમને બરાબર ખબર હોય કે તે કયો હતો.
- CD સાથે, તપાસમાં પાસ થયેલી લોફ સીધી ડિલિવરી વૅનમાં જાય છે, દરેક વખતે એક જ રીતે પેક અને લેબલ થયેલી, એવું નહીં કે કોઈ સવારે 5 વાગ્યે હાથથી બૉક્સ ભરે.
તપાસ બેકરોને વધુ સારા બનાવતી નથી. તે તેમની ભૂલોને સસ્તી બનાવે છે.
CI/CD પાઇપલાઇન કેવી રીતે કામ કરે છે
પાઇપલાઇન એ પગલાંની યાદી છે જે CI/CD સેવા કંઈક થાય ત્યારે આપમેળે ચલાવે છે — સામાન્ય રીતે જ્યારે કોઈ GitHub જેવા રિપોઝિટરીમાં કોડ પુશ કરે. એક સામાન્ય પાઇપલાઇન આવી દેખાય છે:
| પગલું | શું થાય છે | શું પકડે છે |
|---|---|---|
| 1. ટ્રિગર | કોડ પુશ થાય અથવા pull request ખોલાય | — |
| 2. ઇન્સ્ટૉલ | તાજું મશીન કોડ અને તેની ડિપેન્ડન્સી ડાઉનલોડ કરે | ગુમ કે તૂટેલા પેકેજ |
| 3. બિલ્ડ | એપ કમ્પાઇલ કે બંડલ થાય | સિન્ટૅક્સ અને ટાઇપ ભૂલો, તૂટેલા ઇમ્પોર્ટ |
| 4. ટેસ્ટ | સ્વચાલિત પરીક્ષણો ચાલે | જે સુવિધાઓ હવે કામ નથી કરતી |
| 5. તપાસ | Linting, ફોર્મેટિંગ, સુરક્ષા સ્કૅન | સ્ટાઇલ સમસ્યાઓ, જાણીતા નબળા પેકેજ, લીક થયેલી કી |
| 6. સ્ટેજિંગ પર ડિપ્લૉય | એપ પ્રોડક્શનની ટેસ્ટ નકલ પર જાય | માત્ર વાસ્તવિક વાતાવરણમાં દેખાતી સમસ્યાઓ |
| 7. પ્રોડક્શન પર ડિપ્લૉય | એપ લાઇવ થાય — આપમેળે અથવા મંજૂરી પછી | — |
દરેક પગલું સ્વચ્છ મશીન પર ચાલે છે, કોઈના લૅપટૉપ પર નહીં, એટલે "મારા કમ્પ્યુટર પર તો ચાલે છે" એ બહાનું રહેતું નથી. જો પગલું નિષ્ફળ જાય, તો પાઇપલાઇન અટકે છે અને ફેરફાર કરનારને જણાવે છે.
પગલાં એક કન્ફિગરેશન ફાઇલમાં વ્યાખ્યાયિત છે જે કોડ સાથે રહે છે. ઉદાહરણ તરીકે GitHub Actionsમાં, તે રિપોઝિટરીના .github/workflows ફોલ્ડરમાં એક YAML ફાઇલ છે.
Continuous delivery વિરુદ્ધ continuous deployment
"CD" અસ્પષ્ટ છે, અને લોકો તેનો બંને રીતે ઉપયોગ કરે છે:
| Continuous delivery | Continuous deployment | |
|---|---|---|
| પરીક્ષણો આપમેળે ચાલે | હા | હા |
| રિલીઝ આપમેળે પેક થાય | હા | હા |
| આપમેળે લાઇવ થાય | ના — વ્યક્તિ "release" ક્લિક કરે | હા — પાસ થયેલો દરેક ફેરફાર મોકલાય |
| માટે સારું | મોટાભાગની નાની ટીમો, ચૂકવણી કરનારા વપરાશકર્તાવાળી એપ | મજબૂત ટેસ્ટ કવરેજ અને મૉનિટરિંગ ધરાવતી ટીમો |
Continuous deployment ત્યારે જ સારી રીતે કામ કરે છે જો ટેસ્ટ સારા હોય. જો તમારા ટેસ્ટ ચેકઆઉટને આવરી ન લે, તો continuous deployment ખુશીથી તૂટેલું ચેકઆઉટ મોકલી દેશે.
કામ કરેલું ઉદાહરણ: પાઇપલાઇન સાથે બુકિંગ એપ
ધારો કે તમારી પાસે સલૂન બુકિંગ એપ છે, અને તેનો કોડ GitHub રિપોઝિટરીમાં છે. તમે AI બિલ્ડરને કહો "પ્રથમ વખતના ગ્રાહકો માટે 10% ડિસ્કાઉન્ટ ઉમેરો."
- ફેરફાર નવી બ્રાન્ચમાં પુશ થાય છે અને pull request ખોલાય છે.
- પાઇપલાઇન શરૂ થાય છે. તે પૅકેજ ઇન્સ્ટૉલ કરે છે અને એપ બિલ્ડ કરે છે — આ પાસ થાય છે.
- તે ટેસ્ટ ચલાવે છે. એક ટેસ્ટ, "પાછો આવતો ગ્રાહક પૂરો ભાવ ચૂકવે છે," નિષ્ફળ થાય છે: ડિસ્કાઉન્ટ બધાને લાગુ થઈ રહ્યું છે.
- Pull request પર લાલ ક્રૉસ દેખાય છે. ફેરફાર મર્જ ન થઈ શકે.
- તમે AIને તે ઠીક કરવા કહો છો. તે સુધારો પુશ કરે છે; પાઇપલાઇન ફરી ચાલે છે અને બધું પાસ થાય છે.
- ફેરફાર મર્જ થાય છે. પાઇપલાઇન તેને સ્ટેજિંગ વાતાવરણ પર ડિપ્લૉય કરે છે, જ્યાં તમે ટેસ્ટ બુકિંગ કરો છો.
- તમે મંજૂરી આપો છો, અને તે પ્રોડક્શન પર ડિપ્લૉય થાય છે.
પાઇપલાઇન વગર, પગલું 3 તમારા ગ્રાહકોના ખિસ્સામાં થયું હોત.
મુખ્ય શબ્દો
| શબ્દ | અર્થ |
|---|---|
| પાઇપલાઇન | દરેક ફેરફાર પર ચાલતા પગલાંનો સ્વચાલિત ક્રમ. |
| બિલ્ડ | સ્રોત કોડને ચાલી શકે તેવી વસ્તુમાં ફેરવવો. |
| સ્વચાલિત પરીક્ષણ (Automated test) | બીજો કોડ યોગ્ય કામ કરે છે કે નહીં તે તપાસતો કોડ. |
| Pull request (PR) | પ્રસ્તાવિત ફેરફાર જે મર્જ થતાં પહેલાં બીજા (અને પાઇપલાઇન) તપાસે. GitHub શું છે જુઓ. |
| બ્રાન્ચ (Branch) | ફેરફારોની અલગ લાઇન, જેથી ચાલુ કામ મુખ્ય કોડને અસર ન કરે. |
| સ્ટેજિંગ (Staging) | પ્રોડક્શનને મળતી આવતી તમારી એપની ખાનગી નકલ, વપરાશકર્તાઓ પહેલાં ફેરફારો તપાસવા માટે. |
| પ્રોડક્શન (Production) | તમારા વપરાશકર્તાઓ વાપરે તે લાઇવ એપ. |
| Rollback | રિલીઝ ખોટી થાય ત્યારે અગાઉના કાર્યરત વર્ઝન પર પાછા જવું. |
| લીલો / લાલ બિલ્ડ | પાઇપલાઇન ચાલ્યા પછી પાસ / નિષ્ફળ. |
સામાન્ય ગેરસમજો
- "CI/CD એટલે મારી એપનું પરીક્ષણ થયું." પાઇપલાઇન ફક્ત તમારી પાસેના ટેસ્ટ ચલાવે છે. જો ટેસ્ટ ન હોય, તો CI ફક્ત એટલું સાબિત કરે છે કે એપ બિલ્ડ થાય છે — બીજું કંઈ નહીં. સૌથી મહત્વના પ્રવાહો માટે ટેસ્ટ લખવા AIને કહો.
- "CI/CD ફક્ત મોટી કંપનીઓ માટે છે." GitHub Actions જેવાં હોસ્ટેડ સાધનો સેટ કરવા માટે ટૂંકી કન્ફિગરેશન ફાઇલ લે છે, અને નાની ટીમો તેમને સતત વાપરે છે. મહેનત સાધનોની નહીં, ટેસ્ટની લાગે છે.
- "આપમેળે ડિપ્લૉયનો અર્થ છે કોઈ કશું તપાસતું નથી." સારી પાઇપલાઇન તપાસ ઉમેરે છે, દૂર કરતી નથી. ઘણી ટીમો પ્રોડક્શન પહેલાં માનવ મંજૂરીનું પગલું રાખે છે.
- "જો પાઇપલાઇન લીલી છે, તો એપ કામ કરે છે." તેનો અર્થ છે કે સ્વચાલિત તપાસ પાસ થઈ. તમારે હજુ પણ ફેરફાર જાતે અજમાવવો જોઈએ, શક્ય હોય તો પ્રીવ્યૂ અથવા સ્ટેજિંગ પર.
- "CI/CD બૅકઅપનું સ્થાન લે છે." ના. ટેસ્ટ પાસ કરતું ખરાબ ડેટાબેઝ માઇગ્રેશન હજુ પણ વાસ્તવિક ડેટાને નુકસાન પહોંચાડી શકે. બૅકઅપ અને રોલબૅકનો રસ્તો રાખો.
તમારા AI બિલ્ડરને શું પૂછવું
- "સાઇન-અપ, લૉગિન અને ચેકઆઉટ માટે સ્વચાલિત ટેસ્ટ લખો, અને મને બતાવો કે તે કેવી રીતે ચલાવવા."
- "GitHub Actions વર્કફ્લો સેટ કરો જે દરેક pull request પર ડિપેન્ડન્સી ઇન્સ્ટૉલ કરે, એપ બિલ્ડ કરે અને ટેસ્ટ ચલાવે."
- "પાઇપલાઇનમાં ટાઇપ ચેક અને લિન્ટર ઉમેરો, અને ભૂલો પર તેને નિષ્ફળ થવા દો."
- "પાઇપલાઇનનું દરેક પગલું શું કરે છે તે સાદી ભાષામાં સમજાવો."
- "ડિપ્લૉય અડધે નિષ્ફળ જાય તો શું થાય? હું રોલબૅક કેવી રીતે કરું?"
- "ખાતરી કરો કે રિપોઝિટરીમાં કે પાઇપલાઇન લૉગમાં કોઈ સિક્રેટ હાર્ડ-કોડ કે પ્રિન્ટ થયેલું નથી."
જો તમારી એપ API કી વાપરે, તો પાઇપલાઇનને પણ તેની જરૂર છે — CI ટૂલમાં એન્ક્રિપ્ટેડ સિક્રેટ તરીકે સાચવેલી, કન્ફિગરેશન ફાઇલમાં ક્યારેય નહીં. જુઓ એન્વાયર્નમેન્ટ વેરિએબલ અને સિક્રેટ.
CI/CD અને Mythex
Mythex તમારા માટે CI પાઇપલાઇન ચલાવતું નથી, પણ તે પોતાની રીતે ઘણી એ જ જરૂરિયાતો આવરી લે છે:
- ચેકપૉઇન્ટ. દરેક સફળ એજન્ટ ટર્ન પછી, Mythex git ચેકપૉઇન્ટ સાચવે છે, અને જો ફેરફાર ખોટો થાય તો Revert to this point પ્રોજેક્ટને પાછો લાવે છે. જુઓ ચેટ.
- App Testing.
/testટાઇપ કરો અને એજન્ટ તમારા લાઇવ પ્રીવ્યૂ પર વપરાશકર્તાની જેમ ક્લિક કરે છે અને તૂટેલા પ્રવાહોની જાણ કરે છે — દરેક પબ્લિશ પહેલાં ઉપયોગી. જુઓ App Testing. - પબ્લિશ કરવું એ જાણીજોઈને લીધેલું પગલું છે. ફેરફારો પહેલા ખાનગી પ્રીવ્યૂમાં દેખાય છે; તમારી જાહેર એપ ફક્ત ફરી પબ્લિશ કરો ત્યારે જ અપડેટ થાય છે — continuous deployment કરતાં continuous deliveryની વધુ નજીક.
- GitHub સિંક (Pro). પ્રોજેક્ટને GitHub રિપોઝિટરી સાથે સિંક કરો અને દરેક પુશ પર ટેસ્ટ ચલાવવા તમે તમારા પોતાના GitHub Actions વર્કફ્લો ઉમેરી શકો છો. જુઓ GitHub અને એક્સપોર્ટ.
લાઇવ જતાં પહેલાં હાથથી શું ટેસ્ટ કરવું તેની ચેકલિસ્ટ માટે, જુઓ લૉન્ચ પહેલાં તમારી એપ કેવી રીતે ટેસ્ટ કરવી, અને વર્ઝન કંટ્રોલ સાથે કામ કરવા માટે, AI-બનાવેલી એપ સાથે Git કેવી રીતે વાપરવું.
પ્રશ્નો
CI/CD નો અર્થ શું છે?
CI એટલે continuous integration: દરેક કોડ ફેરફાર વારંવાર મર્જ થાય છે અને આપમેળે બિલ્ડ તથા પરીક્ષણ થાય છે. CD એટલે continuous delivery અથવા continuous deployment: જે ફેરફારો પરીક્ષણ પાસ કરે તે આપમેળે રિલીઝ માટે તૈયાર થાય (delivery) અથવા મેન્યુઅલ પગલા વગર વપરાશકર્તાઓ સુધી પહોંચે (deployment).
continuous delivery અને continuous deployment વચ્ચે શો ફરક છે?
continuous deliveryમાં, પાઇપલાઇન પાસ કરતો દરેક ફેરફાર રિલીઝ માટે તૈયાર હોય છે, પણ ક્યારે લાઇવ કરવો તે હજુ પણ વ્યક્તિ નક્કી કરે છે. continuous deploymentમાં, પાસ થયેલો દરેક ફેરફાર માનવ મંજૂરી વગર આપમેળે લાઇવ થાય છે.
AI સાથે બનાવેલી નાની એપ માટે મને CI/CD જોઈએ?
પહેલા દિવસે નહીં. થોડા વપરાશકર્તાવાળી નાની એપ પ્રીવ્યૂમાં પરીક્ષણ કરીને અને હાથથી પબ્લિશ કરીને ચાલી શકે. જ્યારે ઘણા લોકો કોડ બદલે, જ્યારે વાસ્તવિક ગ્રાહકો એપ પર આધાર રાખે, અથવા જ્યારે જે પહેલાં ચાલતું હતું તે વારંવાર તૂટે ત્યારે CI/CD નો ઉપયોગ થાય છે.
CI/CD માટે કયાં સાધનો વપરાય છે?
સામાન્ય સાધનોમાં GitHub Actions, GitLab CI/CD, CircleCI અને Jenkins છે, તેમજ હોસ્ટિંગ પ્લેટફૉર્મની બિલ્ટ-ઇન ડિપ્લૉય પાઇપલાઇન. બધા એક જ મૂળભૂત કામ કરે છે: કોડ બદલાય ત્યારે પગલાંની યાદી આપમેળે ચલાવવી.