Нұсқаулықтар

CI/CD дегеніміз не? Үздіксіз интеграция және жеткізу қарапайым түсіндіріледі

CI/CD — бағдарламаны жеткізудің әдісі, онда әр код өзгерісі автоматты түрде құрастырылады, тексеріледі және — өтсе — шығаруға дайындалады немесе шығарылады. CI (үздіксіз интеграция) өзгерістердің жиі біріктірілетінін және әр жолы автоматты тесттермен тексерілетінін білдіреді. CD (үздіксіз жеткізу немесе орналастыру) өткен өзгерістердің аз немесе мүлде қолмен жұмыссыз пайдаланушыларға қарай оралатынын және жіберілетінін білдіреді.

Мақсаты қарапайым: қателерді оларды жасағаннан кейін бірнеше минутта ұстау, клиент оларды тапқан апталарға дейін күтпеу.

AI көмегімен құрастырғанда CI/CD неге маңызды

AI құрастырушылары код өзгерістерін жылдам жасайды. Бір сұраныс он файлға әсер етуі мүмкін. Бұл жылдамдық тамаша, бірақ төлем бетіндегі өзгеріс кіру бетін үнсіз бұзып, біреу сізге хат жазғанға дейін ешкім байқамағанға дейін ғана.

CI/CD дәл осы жағдай үшін қауіпсіздік торы. Әр өзгеріс дұрыс деп сенудің орнына, конвейер әр жолы бірдей тексерулерді іске қосады:

  • Қосымша қателіксіз әлі құрастырыла ма?
  • Автоматты тесттер әлі өте ме?
  • Код жобаның ережелерін сақтай ма (типтер, пішімдеу, қауіпсіздік тексерулері)?

Егер кез келген тексеру сәтсіз болса, өзгеріс пайдаланушыларға жетпей тоқтайды. Кодыңыз неғұрлым жылдам өзгерсе, қажіметпейтін және қадамды өткізіп жібермейтін тексеру соғұрлым құнды.

Күнделікті салыстыру

Күн сайын дүкендерге нан сататын наубайхананы елестетіңіз.

  • CI/CD-сыз әр наубайшы апта бойы өз рецептін өзгертеді, содан жұма түні барлығы оларды біріктіріп, нан әлі көтеріле ме деп үміттенеді. Көтерілмеген кезде, кімнің өзгерісі себеп болғанын ешкім білмейді.
  • CI-мен әр шағын рецепт өзгерісі бірден сынақ наны ретінде пісіріледі және тексеріледі — дәмі, салмағы, пішіні. Жаман өзгеріс сол күні ұсталады, және дәл қайсысы екенін білесіз.
  • CD-мен тексеруден өткен наңдар таңертең сағат 5-те қолмен қорап жинаудың орнына, әр жолы бірдей оралып, таңбаланып, бірден жеткізу көлігіне шығады.

Тексеру наубайшыларды жақсартпайды. Ол олардың қателіктерін арзан етеді.

CI/CD конвейері қалай жұмыс істейді

Конвейер — CI/CD қызметі бірдеңе болғанда автоматты түрде іске қосатын қадамдар тізімі — әдетте біреу кодты GitHub сияқты репозиторийге жібергенде. Әдеттегі конвейер мынадай:

ҚадамНе боладыНені ұстайды
1. Іске қосуКод жіберіледі немесе pull request ашылады—
2. ОрнатуТаза машина кодты және оның тәуелділіктерін жүктейдіЖоқ немесе бұзылған пакеттер
3. ҚұрастыруҚосымша компиляцияланады немесе топтастырыладыСинтаксис және типтер қателері, бұзылған импорттар
4. ТестАвтоматты тесттер іске қосыладыЕнді жұмыс істемейтін мүмкіндіктер
5. ТексерулерЛинтинг, пішімдеу, қауіпсіздік сканерлеріСтиль мәселелері, белгілі осал пакеттер, ашылып қалған кілттер
6. Сынақ ортасына орналастыруҚосымша өндірістің тест көшірмесіне шығадыТек нақты ортада көрінетін мәселелер
7. Өндіріске орналастыруҚосымша тірі болады — автоматты түрде немесе мақұлдаудан кейін—

Әр қадам біреудің ноутбугінде емес, таза машинада жұмыс істейді, сондықтан «менің компьютерімде жұмыс істейді» деген себеп жоқ болады. Қадам сәтсіз болса, конвейер тоқтайды және өзгерісті жасаған адамға хабарлайды.

Қадамдар кодпен бірге тұратын конфигурация файлында анықталады. Мысалы, GitHub Actions-та бұл репозиторийдің .github/workflows қалтасындағы YAML файлы.

Үздіксіз жеткізу мен үздіксіз орналастыру

«CD» мағынасы екіұшты, адамдар оны екі түрлі қолданады:

Үздіксіз жеткізуҮздіксіз орналастыру
Тесттер автоматты түрде іске қосыладыИәИә
Шығарылым автоматты түрде ораладыИәИә
Автоматты түрде тірі жүйеге шығадыЖоқ — адам «шығару» түймесін басадыИә — өткен әр өзгеріс жіберіледі
ҚолайлыКөпшілік шағын командалар, төлеуші пайдаланушылары бар қосымшаларКүшті тест қамтуы мен бақылауы бар командалар

Үздіксіз орналастыру тесттер жақсы болғанда ғана жақсы жұмыс істейді. Егер тесттеріңіз төлемді қамтымаса, үздіксіз орналастыру бұзылған төлемді қуана жібереді.

Жұмыс мысалы: конвейері бар брондау қосымшасы

Сізде сұлулық салонының брондау қосымшасы бар делік, және оның коды GitHub репозиторийінде. AI құрастырушысына «алғаш рет келген клиенттерге 10% жеңілдік қосыңыз» дейсіз.

  1. Өзгеріс жаңа бутаққа жіберіледі және pull request ашылады.
  2. Конвейер іске қосылады. Ол пакеттерді орнатып, қосымшаны құрастырады — бұл өтеді.
  3. Тесттерді іске қосады. Бір тест, «қайтып келген клиент толық баға төлейді», сәтсіз аяқталады: жеңілдік барлығына қолданылып жатыр.
  4. Pull request қызыл крест көрсетеді. Өзгерісті біріктіруге болмайды.
  5. AI-дан түзетуін сұрайсыз. Ол түзетуді жібереді; конвейер қайта іске қосылады және бәрі өтеді.
  6. Өзгеріс біріктіріледі. Конвейер оны сынақ ортасына орналастырады, онда тест брондауын жасап көресіз.
  7. Мақұлдайсыз, ол өндіріске орналастырылады.

Конвейерсіз 3-қадам клиенттеріңіздің қалтасында орын алар еді.

Негізгі терминдер

ТерминМағынасы
КонвейерӘр өзгеріс үшін іске қосылатын қадамдардың автоматты реттілігі.
ҚұрастыруБастапқы кодты іске қосылатын нәрсеге айналдыру.
Автоматты тестБасқа кодтың дұрыс жұмыс істейтінін тексеретін код.
Pull request (PR)Біріктірілмес бұрын басқалар (және конвейер) қарайтын ұсынылған өзгеріс. GitHub дегеніміз не қараңыз.
Бутақ (branch)Орындалып жатқан жұмыс негізгі кодқа әсер етпеуі үшін бөлек өзгерістер желісі.
Сынақ ортасы (staging)Пайдаланушылар көрместен бұрын өзгерістерді тексеру үшін өндірісті көшіретін жеке көшірме.
Өндіріс (production)Пайдаланушыларыңыз қолданатын тірі қосымша.
Қайтару (rollback)Шығарылым дұрыс болмағанда алдыңғы жұмыс нұсқасына оралу.
Жасыл / қызыл құрастыруКонвейер іске қосылуының өтуі / сәтсіз аяқталуы.

Жиі кездесетін қате түсініктер

  • «CI/CD қосымшамның тестілендігін білдіреді». Конвейер тек бар тесттерді іске қосады. Тест болмаса, CI тек қосымшаның құрастырылатынын дәлелдейді — одан басқа ештеңе. AI-дан ең маңызды ағындарға тесттер жазуды сұраңыз.
  • «CI/CD тек үлкен компанияларға арналған». GitHub Actions сияқты хостингтегі құралдарды баптау үшін қысқа конфигурация файлы жеткілікті, ал шағын командалар оларды жиі пайдаланады. Күш-жігерді құрал емес, тесттер талап етеді.
  • «Автоматты орналастыру ешкім ештеңені тексермейді дегенді білдіреді». Жақсы конвейерлер тексерулерді алып тастамай, қосады. Көптеген командалар өндірістен бұрын адамның мақұлдау қадамын сақтайды.
  • «Конвейер жасыл болса, қосымша жұмыс істейді». Бұл автоматты тексерулер өтті дегенді білдіреді. Өзгерісті әлі де өзіңіз, мүмкіндігінше превьюде немесе сынақ ортасында көріңіз.
  • «CI/CD резервтік көшірмелерді алмастырады». Олай емес. Тесттерден өткен қате деректер қорын көшіру де нақты деректерге зиян келтіруі мүмкін. Резервтік көшірмелер мен қайтару мүмкіндігін сақтаңыз.

AI құрастырушыдан не сұрау керек

  • «Тіркелу, кіру және төлем үшін автоматты тесттер жазыңыз және оларды қалай іске қосу керектігін көрсетіңіз.»
  • «Әр pull request-те тәуелділіктерді орнататын, қосымшаны құрастыратын және тесттерді іске қосатын GitHub Actions жұмыс процесін орнатыңыз.»
  • «Конвейерге типтерді тексеру мен линтерді қосыңыз және қателерде сәтсіз аяқталуын қамтамасыз етіңіз.»
  • «Конвейердің әр қадамы не істейтінін қарапайым тілмен түсіндіріңіз.»
  • «Орналастыру жартылай өткенде не болады? Қалай қайтаруға болады?»
  • «Репозиторийде немесе конвейер журналдарында құпия мәндер жазылмағанын тексеріңіз.»

Егер қосымшаңыз API кілттерін пайдаланса, конвейерге де олар керек — оларды CI құралында шифрланған құпиялар ретінде сақтаңыз, конфигурация файлында ешқашан. Орта айнымалылары мен құпиялар бөлімін қараңыз.

CI/CD және Mythex

Mythex сізге CI конвейерін іске қоспайды, бірақ өз жолымен бірдей қажеттіктердің бірнешеуін қамтамасыз етеді:

  • Бақылау нүктелері. Агенттің әр сәтті жауабынан кейін Mythex git бақылау нүктесін сақтайды, ал өзгеріс дұрыс болмағанда Осы нүктеге қайтару жобаны кері қайтарады. Чат бөлімін қараңыз.
  • App Testing. /test теріңіз — агент тірі превьюңізді пайдаланушы сияқты аралап, бұзылған ағындар туралы хабарлайды. Әр жариялау алдында пайдалы. App Testing бөлімін қараңыз.
  • Жариялау — ойластырылған қадам. Өзгерістер алдымен жеке превьюде көрінеді; жалпыға ортақ қосымшаңыз тек қайта жариялағаннан кейін жаңарады — үздіксіз орналастырудан гөрі үздіксіз жеткізуге жақын.
  • GitHub синхрондау (Pro). Жобаны GitHub репозиторийімен синхрондасаңыз, әр push-та тесттерді іске қосу үшін өз GitHub Actions жұмыс процестеріңізді қоса аласыз. GitHub және экспорт бөлімін қараңыз.

Жарияланар алдында қолмен не тексеру керегінің тізімі үшін қосымшаны іске қосар алдында қалай тексеру керек бетін, ал нұсқаларды бақылаумен жұмыс істеу үшін AI-мен құрастырылған қосымшада Git-ті қалай пайдалану керек бетін қараңыз.

Сұрақтар

CI/CD нені білдіреді?

CI — үздіксіз интеграция дегенді білдіреді: әр код өзгерісі жиі біріктіріліп, автоматты түрде құрастырылып және тексеріледі. CD — үздіксіз жеткізу немесе үздіксіз орналастыру дегенді білдіреді: тесттен өткен өзгерістер шығаруға автоматты түрде дайындалады (жеткізу) немесе қолмен қадамсыз пайдаланушыларға шығарылады (орналастыру).

Үздіксіз жеткізу мен үздіксіз орналастырудың айырмашылығы неде?

Үздіксіз жеткізуде конвейерден өткен әр өзгеріс шығаруға дайын болады, бірақ оны тірі жүйеге қашан жіберу керектігін әлі адам шешеді. Үздіксіз орналастыруда өткен әр өзгеріс адамның мақұлдау қадамынсыз автоматты түрде тірі жүйеге шығады.

AI-мен құрастырылған шағын қосымшаға CI/CD керек пе?

Бірінші күннен емес. Бірнеше пайдаланушысы бар шағын қосымша сынақты превьюде өткізіп, жариялауды қолмен жасап, жүре алады. CI/CD өзін ақтайды, бірнеше адам кодты өзгерткенде, нақты клиенттер қосымшаға тәуелді болғанда немесе бұрын жұмыс істеген нәрселерді жиі бұзғанда.

CI/CD үшін қандай құралдар қолданылады?

Кең таралғандары: GitHub Actions, GitLab CI/CD, CircleCI және Jenkins, сондай-ақ хостинг платформаларының кіріктірілген орналастыру конвейерлері. Олардың бәрі бірдей негізгі жұмысты атқарады: код өзгерген сайын қадамдар тізімін автоматты түрде іске қосады.

Mythex · Pricing · ЖИ көмегімен кез келген нәрсені жасаңыз · Сайттар мен қосымшаларға арналған үлгілер · Mythex салыстыруда · ЖИ-мен қосымша жасау сөздігі · ЖИ-мен қосымша жасауға арналған тегін құралдар · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)