GitLab жүйесінде бағдарламалық жасақтама патчтарын қалай шығарамыз

GitLab жүйесінде бағдарламалық жасақтама патчтарын қалай шығарамыз

GitLab-те біз бағдарламалық құралды түзетуді екі жолмен өңдейміз: қолмен және автоматты түрде. gitlab.com сайтында автоматтандырылған орналастыру арқылы маңызды жаңартуларды жасау және жеткізу бойынша шығарылым менеджерінің жұмысы, сондай-ақ пайдаланушыларға өз қондырғыларында жұмыс істеуге арналған патчтар туралы білу үшін оқыңыз.

Мен смарт сағатыңызға еске салғыш орнатуды ұсынамын: әр айдың 22-сі күні өз нысандарында GitLab-пен жұмыс істейтін пайдаланушылар өніміміздің ағымдағы нұсқасының жаңартуларын көре алады. Ай сайынғы шығарылым жаңа мүмкіндіктерді, бұрыннан барлардың әзірлемелерін қамтиды және көбінесе құралдарды немесе біріктіруге арналған қауымдастық сұрауларының соңғы нәтижесін көрсетеді.

Бірақ, тәжірибе көрсеткендей, бағдарламалық жасақтаманы әзірлеу кемшіліктерсіз сирек болады. Қате немесе қауіпсіздік осалдығы анықталғанда, жеткізу тобындағы шығарылым менеджері біздің пайдаланушыларымыз үшін орнатуларымен бірге патч жасайды. Gitlab.com ықшам дискі процесі кезінде жаңартылады. GitLab жүйесіндегі CD мүмкіндігімен шатастырмау үшін бұл CD процесін автоматты түрде орналастыру деп атаймыз. Бұл процесс пайдаланушылар, тұтынушылар және біздің ішкі әзірлеу тобымыз жіберген тарту сұрауларының ұсыныстарын қамтуы мүмкін, осылайша патчтарды шығарудың қызықсыз мәселесін шешу екі түрлі жолмен шешіледі.

«Біз GitLab.com сайтына шығарар алдында әзірлеушілер жасаған барлық нәрселерді күн сайын барлық орталарға орналастыруды қамтамасыз етеміз.", деп түсіндіреді Марин Янковки, Инфрақұрылым департаментінің аға техникалық менеджері. "Орнатуларыңызға арналған шығарылымдарды gitlab.com орналастыруларына арналған суреттер ретінде қарастырыңыз, олар үшін пайдаланушылар өз қондырғыларында орнату үшін пайдалана алатындай бума жасау үшін бөлек қадамдар қостық.«.

Қатеге немесе осалдыққа қарамастан, gitlab.com тұтынушылары олар жарияланғаннан кейін көп ұзамай түзетулерді алады, бұл автоматтандырылған CD процесінің артықшылығы болып табылады. Жеке қондырғылары бар пайдаланушыларға арналған патчтарды шығару менеджері бөлек дайындауды қажет етеді.

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

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

gitlab.com тұтынушылары да, олардың қондырғыларын пайдаланушылар да жеткізу тобының цикл уақытын қысқарту және орналастыруды жылдамдату әрекеттерінен пайда көреді. Бұл мақалада біз осы екі әдістің ұқсастықтары мен айырмашылықтарын түсіндіреміз. мәселелер, сонымен қатар жеткізу тобымыздың сайтта жұмыс істейтін пайдаланушылар үшін патчтарды қалай дайындайтынын және автоматтандырылған орналастыру арқылы gitlab.com сайтын қалай жаңартып отырғанымызды сипаттайтын боламыз.

Шығарылым менеджері не істейді?

Топ мүшелері ай сайын шығару менеджерінің рөлін беру шығарылымдар арасында орын алуы мүмкін патчтарды және қауіпсіздік шығарылымдарын қоса алғанда, пайдаланушыларға олардың нысандарындағы шығарылымдарымыз. Олар сонымен қатар компанияның автоматтандырылған, үздіксіз орналастыруға көшуіне жетекшілік етеді.

Өзін-өзі орнату нұсқалары мен gitlab.com шығарылымдары ұқсас жұмыс үрдістерін пайдаланады, бірақ әртүрлі уақытта жұмыс істейді, деп түсіндіреді Марин.

Ең алдымен, шығарылым менеджері шығарылым түріне қарамастан, GitLab қолданбасы gitlab.com сайтында іске қосылған сәттен бастап қолжетімді және қауіпсіз болуын қамтамасыз етеді, соның ішінде тұтынушылардың инфрақұрылымында сол мәселелердің аяқталмауын қамтамасыз етеді. меншікті мүмкіндіктері.

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

Шығарылым менеджері түзетуді дайындау керек пе немесе оны қашан қолдану керектігін шешуі керек - және бұл жағдайдың контекстіне өте тәуелді, »әзірше машиналар контекстті басқаруда адамдар сияқты жақсы емес– дейді Марин.

Мұның бәрі түзетулер туралы

Патчтар дегеніміз не және олар бізге не үшін қажет?

Шығарылым менеджері қатенің ауырлығына қарай түзетуді шығару керек пе деп шешеді.

Қателер олардың ауырлығына байланысты өзгереді. Сондықтан S4 немесе S3 қателері стилистикалық болуы мүмкін, мысалы, пиксель немесе белгішені ауыстыру. Бұл маңызды емес, бірақ ешкімнің жұмыс процесіне айтарлықтай әсер етпейді, яғни мұндай S3 немесе S4 қателері үшін түзету жасалу ықтималдығы аз, деп түсіндіреді Марин.

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

S1 немесе S2 осалдықтарына арналған патч дайын болғаннан кейін шығарылым менеджері патчты шығаруды бастайды.

Мысалы, GitLab 12.10.1 патч бірнеше блоктау мәселелері анықталғаннан кейін жасалды және әзірлеушілер оларды тудырған негізгі мәселені түзетеді. Шығарылым менеджері тағайындалған ауырлық деңгейлерінің дұрыстығын бағалады және растаудан кейін блоктау мәселелері анықталғаннан кейін XNUMX сағат ішінде дайын болатын түзетуді шығару процесі іске қосылды.

Көптеген S4, S3 және S2 жинақталғанда, шығару менеджері түзетуді шығарудың өзектілігін анықтау үшін контекстке қарайды және олардың белгілі бір санына жеткенде, олардың барлығы біріктіріліп шығарылады. Шығарылымнан кейінгі түзетулер немесе қауіпсіздік жаңартулары блог жазбаларында жинақталған.

Шығарылым менеджері патчтарды қалай жасайды

Біз патчтарды жасау үшін GitLab CI және ChatOps сияқты басқа мүмкіндіктерді пайдаланамыз. Шығарылым менеджері ішкі арнамыздағы ChatOps тобын белсендіру арқылы түзетудің шығарылуын іске қосады #releases Slack-те.

/chatops run release prepare 12.10.1

ChatOps әр түрлі оқиғаларды іске қосу үшін Slack ішінде жұмыс істейді, содан кейін оларды GitLab өңдейді және орындайды. Мысалы, жеткізу тобы патчтарды шығару үшін әртүрлі заттарды автоматтандыру үшін ChatOps орнатты.

Шығарылым менеджері ChatOps тобын Slack жүйесінде іске қосқаннан кейін, жұмыстың қалған бөлігі CICD көмегімен GitLab жүйесінде автоматты түрде орындалады. Шығару процесі кезінде Slack ішіндегі ChatOps және GitLab арасында екі жақты байланыс бар, өйткені шығарылым менеджері процестің кейбір негізгі қадамдарын белсендіреді.

Төмендегі бейнеде GitLab үшін патчты дайындаудың техникалық процесі көрсетілген.

gitlab.com сайтында автоматты орналастыру қалай жұмыс істейді

gitlab.com жаңарту үшін пайдаланылатын процесс және құралдар патчтарды жасау үшін қолданылатындарға ұқсас. gitlab.com сайтын жаңарту шығарылым менеджерінің көзқарасы бойынша аз қолмен жұмысты қажет етеді.

ChatOps көмегімен орналастыруларды іске қосудың орнына біз CI мүмкіндіктерін пайдаланамыз, мысалы: жоспарланған құбырлар, оның көмегімен шығару менеджері қажетті уақытта орындалатын белгілі әрекеттерді жоспарлай алады. Қолмен орындалатын процестің орнына GitLab жобаларына енгізілген жаңа өзгерістерді жүктеп алатын, оларды буып-түйетін және орналастыруды жоспарлайтын және автоматты түрде тестілеуді, QA және басқа қажетті қадамдарды орындайтын сағатына бір рет жұмыс істейтін құбыр желісі бар.

«Сонымен, бізде gitlab.com сайтынан бұрын әртүрлі орталарда жұмыс істейтін көптеген орналастырулар бар және сол орталар жақсы күйде және тестілеу жақсы нәтижелерді көрсеткеннен кейін, шығарылым менеджері gitlab.com орналастыру әрекеттерін бастайды», - дейді Марин.

gitlab.com жаңартуларын қолдауға арналған CICD технологиясы шығарылым менеджері gitlab.com сайтына өндіріс ортасын орналастыруды қолмен іске қосуы қажет болатындай бүкіл процесті автоматтандырады.

Марин төмендегі бейнеде gitlab.com жаңарту процесі туралы егжей-тегжейлі айтып береді.

Жеткізу тобы тағы не істейді?

gitlab.com жаңарту процестері мен патчтарды тұтынушыларға үйдегі шығару арасындағы негізгі айырмашылық мынада: соңғы процесс шығару менеджерінен көбірек уақыт пен көбірек қолмен жұмысты талап етеді.

«Біз кейде хабарланған мәселелерге, құралдарға қатысты мәселелерге байланысты және бір патчты шығарған кезде ескеру қажет көптеген нюанстар болғандықтан, орнатуларымен бірге тұтынушыларға патчтарды шығаруды кешіктіреміз», - дейді Марин.

Жеткізу тобының қысқа мерзімді мақсаттарының бірі шығаруды жылдамдату үшін шығару менеджерінің қолмен жұмыс көлемін азайту болып табылады. Команда шығару процесін жеңілдету, оңтайландыру және автоматтандыру бойынша жұмыс істеуде, бұл төмен ауырлықтағы мәселелерді (S3 және S4, шамамен. аудармашы). Жылдамдыққа назар аудару өнімділіктің негізгі көрсеткіші болып табылады: MTTP - біріктіру сұрауын алудан нәтижені gitlab.com сайтына орналастыруға дейінгі уақытты ағымдағы 50 сағаттан 8 сағатқа дейін қысқарту қажет.

Жеткізу тобы сонымен қатар gitlab.com сайтын Kubernetes негізіндегі инфрақұрылымға көшіру үстінде.

Редактордың n.b.: Егер сіз Kubernetes технологиясы туралы естіген болсаңыз (және сізде бар екеніне күмәнім жоқ), бірақ оны әлі қолыңызбен ұстамаған болсаңыз, мен онлайн қарқынды курстарға қатысуды ұсынамын. Кубернетес базасы28-30 қыркүйекте өтетін және Kubernetes Mega14-16 қазан аралығында өтеді. Бұл технологиямен сенімді шарлауға және жұмыс істеуге мүмкіндік береді.

Бұл бір мақсатты көздейтін екі тәсіл: gitlab.com үшін де, олардың нысандарындағы клиенттер үшін де жаңартуларды жылдам жеткізу.

Біз үшін қандай да бір идеялар немесе ұсыныстар?

Әрбір адам GitLab-қа өз үлестерін қосуға шақырады және біз оқырмандарымыздың пікірлерін қуана қабылдаймыз. Біздің жеткізу тобына қатысты идеяларыңыз болса, тартынбаңыз сұрау жасау хабарламамен team: Delivery.

Ақпарат көзі: www.habr.com

пікір қалдыру