CI/CD жана жайгаштыруу (deployment)
Жашыл тесттер топтомун иштеп жаткан продакшен-кызматка айландыруу -- автоматтык, коопсуз жана суроо-талаптарды жоготпой.
git pull аткаруу" деген ишенимсиз ырым-жырымды машина ар дайым бирдей аткарган кайталанма конвейерге алмаштырат.
- классикалык конвейер баскычтарын -- линтер -> тесттер -> курулуш -> жайгаштыруу -- сүрөттөп, тартип эмне үчүн маанилүү экенин түшүнүү;
- чөйрөлөрдү (dev, staging, production) ажыратып, бир артефактты алар аркылуу өткөрүү;
- CIдеги сырларды (secrets) репозиторийге эч качан коммит кылбай башкаруу;
- токтоосуз (zero-downtime) жайгаштырууну түшүндүрүп, rolling, blue-green жана canary стратегияларын салыштыруу;
- чыныгы GitHub Actions workflow'ун окуп, ар бир кадам эмне бергенин билүү.
1. CI жана CD -- көп чаташтырылган үч термин
Үч тамганын артында үч башка идея жашырынган. Аларды так айырмалоо ар кандай куралды жана колдонмону түшүнүктүү кылат.
- Үзгүлтүксүз интеграция (CI) -- ар бир push жана ар бир pull request'те автоматтык тапшырма кодду алат, көз карандылыктарды орнотот, линтерди иштетет, тесттерди өткөрөт жана курулуш жасайт. Анын убадасы тар, бирок күчтүү: "main дайыма компиляцияланат жана тесттеринен өтөт."
- Үзгүлтүксүз жеткирүү (Continuous Delivery, CD) -- ар бир жашыл курулуш автоматтык түрдө жайгаштырууга жарактуу артефактка (Docker образы, tar-архив, версияланган бандл) таңгакталып, stagingге чейин жеткирилет. "Продакшенге чыгаруу" баскычын дагы эле адам басат.
- Үзгүлтүксүз жайгаштыруу (Continuous Deployment, ошондой эле CD) -- ошол эле, бирок акыркы кадам да автоматтык: main'деги жашыл курулуш адамдын катышуусуз продакшенге чейин жетет.
Көпчүлүк командалар CI плюс жеткирүүнү иштетишет, анан тесттери, мониторинги жана артка кайтаруусу кол менен басууну өткөрүп жиберерлик ишенимдүү болгондо толук жайгаштырууга өтүшөт. Конвейер бирдей; айырмасы акыркы бекитүүдө гана.
Эмне үчүн жалпы эле автоматташтыруу? Кол менен деплой -- жума күнү кечки алтыда чарчаган адам аткарган текшерүү тизмеси. Конвейер -- ошол эле тизмени машина ар дайым бирдей, текшерсе боло турган лог менен аткарат. Ал "менде иштеген" жана "миграцияны унутуп калдым" деген инциденттердин бүтүн классын жоёт.