Ինչպես ենք թողարկում ծրագրային ապահովման պատչերը GitLab-ում

Ինչպես ենք թողարկում ծրագրային ապահովման պատչերը GitLab-ում

GitLab-ում մենք մշակում ենք ծրագրային ապահովման ուղղումները երկու եղանակով՝ ձեռքով և ավտոմատ: Կարդացեք՝ տեղեկանալու թողարկման մենեջերի աշխատանքի մասին՝ ստեղծելու և մատակարարելու կարևոր թարմացումներ gitlab.com-ում ավտոմատ տեղակայման միջոցով, ինչպես նաև օգտատերերի համար նախատեսված patches-ի մասին, որոնց հետ կարող են աշխատել իրենց սեփական տեղադրումների վրա:

Ես խորհուրդ եմ տալիս հիշեցում տեղադրել ձեր խելացի ժամացույցի վրա. ամեն ամիս 22-ին GitLab-ի հետ աշխատող օգտատերերը կարող են տեսնել մեր արտադրանքի ընթացիկ տարբերակի թարմացումները: Ամսական թողարկումը պարունակում է նոր հնարավորություններ, գոյություն ունեցողների զարգացումներ և հաճախ ցույց է տալիս գործիքավորման կամ միաձուլման համայնքի հարցումների վերջնական արդյունքը:

Բայց, ինչպես ցույց է տալիս պրակտիկան, ծրագրային ապահովման մշակումը հազվադեպ է առանց թերությունների: Երբ հայտնաբերվում է վրիպակ կամ անվտանգության խոցելիություն, առաքման թիմում թողարկման մենեջերը մեր օգտատերերի համար պատչ է ստեղծում՝ իրենց տեղադրումներով: Gitlab.com-ը թարմացվում է CD գործընթացի ընթացքում: Մենք CD-ի այս գործընթացն անվանում ենք ավտոմատ տեղակայում, որպեսզի խուսափենք GitLab-ի 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 կուտակվում են, թողարկման մենեջերը դիտարկում է համատեքստը՝ որոշելու շտկում թողարկելու հրատապությունը, և երբ հասնում է դրանց որոշակի քանակի, դրանք բոլորը միավորվում և թողարկվում են: Հետհրատարակման ուղղումները կամ անվտանգության թարմացումներն ամփոփված են բլոգային գրառումներում:

Ինչպես է թողարկման մենեջերը ստեղծում patches

Մենք օգտագործում ենք GitLab CI-ն և մեր ChatOps-ի նման այլ գործառույթներ՝ պատչեր ստեղծելու համար: Թողարկման կառավարիչը գործարկում է ուղղման թողարկումը՝ ակտիվացնելով ChatOps թիմը մեր ներքին ալիքում #releases Slack-ում։

/chatops run release prepare 12.10.1

ChatOps-ն աշխատում է Slack-ում՝ տարբեր իրադարձություններ գործարկելու համար, որոնք այնուհետև մշակվում և իրականացվում են GitLab-ի կողմից: Օրինակ, առաքման թիմը ստեղծեց ChatOps-ը, որպեսզի ավտոմատացնի տարբեր բաներ՝ կարկատներ թողարկելու համար:

Երբ թողարկման մենեջերը սկսում է ChatOps թիմը Slack-ում, մնացած աշխատանքը ավտոմատ կերպով տեղի է ունենում GitLab-ում՝ օգտագործելով CICD: Կա երկկողմանի հաղորդակցություն ChatOps-ի միջև Slack-ում և GitLab-ում թողարկման գործընթացում, քանի որ թողարկման կառավարիչը ակտիվացնում է գործընթացի որոշ հիմնական քայլերը:

Ստորև բերված տեսանյութը ցույց է տալիս GitLab-ի համար patch պատրաստելու տեխնիկական գործընթացը:

Ինչպես է ավտոմատ տեղակայումն աշխատում gitlab.com-ում

Գործընթացը և գործիքները, որոնք օգտագործվում են gitlab.com-ը թարմացնելու համար, նման են կարկատների ստեղծման համար օգտագործվողներին: gitlab.com-ի թարմացումն ավելի քիչ ձեռքով աշխատանք է պահանջում թողարկման մենեջերի տեսանկյունից:

ChatOps-ի միջոցով տեղակայումներ գործարկելու փոխարեն մենք օգտագործում ենք CI-ի առանձնահատկությունները, օրինակ. պլանավորված խողովակաշարեր, որի հետ թողարկման կառավարիչը կարող է պլանավորել որոշակի գործողություններ, որոնք պետք է կատարվեն անհրաժեշտ ժամանակին: Ձեռնարկի գործընթացի փոխարեն կա խողովակաշար, որը պարբերաբար աշխատում է ժամը մեկ անգամ, որը ներբեռնում է GitLab նախագծերում կատարված նոր փոփոխությունները, փաթեթավորում դրանք և պլանավորում տեղակայումը և ավտոմատ կերպով կատարում է թեստավորում, QA և այլ անհրաժեշտ քայլեր:

«Այսպիսով, մենք ունենք բազմաթիվ տեղակայումներ, որոնք աշխատում են տարբեր միջավայրերում մինչև gitlab.com-ը, և այն բանից հետո, երբ այդ միջավայրերը լավ վիճակում են և թեստավորումը ցույց է տալիս լավ արդյունքներ, թողարկման մենեջերը սկսում է gitlab.com-ի տեղակայման գործողությունները», - ասում է Մարինը:

CICD տեխնոլոգիան gitlab.com-ի թարմացումներին աջակցելու համար ավտոմատացնում է ամբողջ գործընթացը մինչև այն կետը, երբ թողարկման կառավարիչը պետք է ձեռքով գործարկի արտադրական միջավայրի տեղակայումը gitlab.com-ում:

Մարին մանրամասնում է gitlab.com-ի թարմացման գործընթացի մասին ստորև ներկայացված տեսանյութում:

Էլ ի՞նչ է անում առաքման թիմը:

Gitlab.com-ի թարմացման գործընթացների և ներքին հաճախորդներին patches թողարկելու միջև հիմնական տարբերությունն այն է, որ վերջին գործընթացը պահանջում է ավելի շատ ժամանակ և ավելի շատ ձեռքով աշխատանք թողարկման մենեջերից:

«Մենք երբեմն ուշացնում ենք կարկատանների թողարկումը հաճախորդներին իրենց տեղադրումներով՝ հաղորդված խնդիրների, գործիքակազմի հետ կապված խնդիրների պատճառով, և քանի որ կան բազմաթիվ նրբերանգներ, որոնք պետք է հաշվի առնել մեկ կարկատել թողարկելիս», - ասում է Մարինը:

Առաքման թիմի կարճաժամկետ նպատակներից մեկն է նվազեցնել թողարկման մենեջերի ձեռքով աշխատանքի ծավալը՝ թողարկումն արագացնելու համար: Թիմն աշխատում է պարզեցնել, պարզեցնել և ավտոմատացնել թողարկման գործընթացը, ինչը կօգնի շտկել ցածր ծանրության խնդիրները (S3 և S4, մոտ. թարգմանիչ) Արագության վրա կենտրոնանալը հիմնական կատարողական ցուցիչն է. անհրաժեշտ է նվազեցնել MTTP-ը՝ միաձուլման հարցում ստանալուց մինչև gitlab.com-ում արդյունքի տեղակայման ժամանակը, ներկայիս 50 ժամից մինչև 8 ժամ:

Առաքման թիմը նաև աշխատում է gitlab.com-ը Kubernetes-ի վրա հիմնված ենթակառուցվածք տեղափոխելու վրա:

Խմբագրի հ.բ.Եթե ​​դուք արդեն լսել եք Kubernetes տեխնոլոգիայի մասին (և ես կասկած չունեմ, որ լսել եք), բայց դեռ չեք դիպել ձեր ձեռքերով, խորհուրդ եմ տալիս մասնակցել առցանց ինտենսիվ դասընթացների։ Կուբերնետես բազա, որը կանցկացվի սեպտեմբերի 28-30-ը, և Kubernetes Mega, որը տեղի կունենա հոկտեմբերի 14-16-ը։ Սա թույլ կտա վստահորեն նավարկել և աշխատել տեխնոլոգիայի հետ:

Սրանք երկու մոտեցումներ են, որոնք հետապնդում են նույն նպատակը. թարմացումների արագ առաքում ինչպես gitlab.com-ի, այնպես էլ նրանց հաստատությունների հաճախորդների համար:

Մեզ համար որևէ գաղափար կամ առաջարկ կա՞:

Բոլորը կարող են իրենց ներդրումն ունենալ GitLab-ում, և մենք ողջունում ենք մեր ընթերցողների արձագանքները: Եթե ​​ունեք որևէ գաղափար մեր առաքման թիմի համար, մի հապաղեք ստեղծել հարցում նշված team: Delivery.

Source: www.habr.com

Добавить комментарий