Հղում. ինչպես է աշխատում շարունակական ինտեգրման գործընթացը

Այսօր մենք կանդրադառնանք տերմինի պատմությանը, կքննարկենք CI-ի ներդրման դժվարությունները և կտրամադրենք մի քանի հայտնի գործիքներ, որոնք կօգնեն ձեզ աշխատել դրա հետ:

Հղում. ինչպես է աշխատում շարունակական ինտեգրման գործընթացը
/flickr/ Ալթուղ Կարակոչ / CC BY- ի կողմից / Լուսանկարը փոփոխված է

Ժամկետ

Շարունակական ինտեգրումը հավելվածների մշակման մոտեցում է, որը ներառում է նախագծերի հաճախակի կառուցում և կոդի փորձարկում:

Նպատակը ինտեգրման գործընթացը կանխատեսելի դարձնելն է և պոտենցիալ վրիպակներն ու սխալները վաղ փուլում հայտնաբերելն է, որպեսզի ավելի շատ ժամանակ մնա դրանք շտկելու համար։

Շարունակական ինտեգրացիա տերմինն առաջին անգամ հայտնվել է 1991 թվականին։ Այն ներկայացվել է UML լեզվի ստեղծողի կողմից Գրեդի Բուչ (Գրեյդի Բուչ): Ինժեները ներկայացրեց CI հայեցակարգը որպես իր սեփական զարգացման պրակտիկայի մաս. Booch մեթոդ. Այն ենթադրում էր ճարտարապետության աստիճանական կատարելագործում օբյեկտի վրա հիմնված համակարգերի նախագծման ժամանակ: Գրադին չի նկարագրել շարունակական ինտեգրման պահանջներ: Բայց ավելի ուշ իր գրքում «Օբյեկտ-կողմնորոշված ​​վերլուծություն և դիզայն՝ հավելվածներով«Նա ասաց, որ մեթոդաբանության նպատակն է արագացնել «ներքին թողարկումների» թողարկումը։

Պատմություն

1996 թ.-ին մեթոդաբանությունը ստեղծողների կողմից ընդունվել է CI ծայրահեղ ծրագրավորում (XP) - Քենթ Բեկ (Քենթ Բեկ) և Ռոն Ջեֆրիս (Ռոն Ջեֆրիս): Շարունակական ինտեգրումը դարձավ նրանց մոտեցման տասներկու հիմնական սկզբունքներից մեկը: XP-ի հիմնադիրները պարզաբանել են CI մեթոդոլոգիայի պահանջները և նշել նախագիծը օրական մի քանի անգամ կառուցելու անհրաժեշտությունը։

2000-ականների սկզբին Agile Alliance-ի հիմնադիրներից մեկը սկսեց խթանել շարունակական ինտեգրման մեթոդաբանությունը. Մարտին Ֆաուլեր (Մարտին Ֆաուլեր): Նրա փորձերը CI-ի հետ հանգեցրին այս ոլորտում առաջին ծրագրային գործիքին՝ CruiseControl-ին: Կոմունալ ծրագիրը ստեղծվել է Մարտինի գործընկեր Մեթյու Ֆոմելի կողմից:

Գործիքում կառուցման ցիկլը իրականացվում է որպես դևոն, որը պարբերաբար ստուգում է տարբերակների կառավարման համակարգը կոդի բազայում փոփոխությունների համար: Լուծումը կարելի է ներբեռնել այսօր՝ այն տարածվում է BSD-ի նման լիցենզիայի ներքո:

CI-ի համար ծրագրային ապահովման հայտնվելուն պես ավելի ու ավելի շատ ընկերություններ սկսեցին կիրառել այդ պրակտիկան: Forrester հետազոտության համաձայն [էջ 5 հաշվետվություն], 2009 թվականին հարցված հիսուն տեխնոլոգիական ընկերությունների 86%-ն օգտագործել կամ ներդրել է CI մեթոդներ։

Այսօր շարունակական ինտեգրման պրակտիկան օգտագործվում է տարբեր ոլորտների կազմակերպությունների կողմից: 2018 թվականին խոշոր ամպային մատակարարը հարցում է անցկացրել ծառայությունների, կրթության և ֆինանսական ոլորտների ընկերությունների ՏՏ մասնագետների շրջանում։ Վեց հազար հարցվածներից 58%-ն ասել է, որ իրենց աշխատանքում օգտագործում են CI գործիքներ և սկզբունքներ։

Ինչպես է այն աշխատում

Շարունակական ինտեգրումը հիմնված է երկու գործիքների վրա՝ տարբերակի կառավարման համակարգ և CI սերվեր: Վերջինս կարող է լինել կամ ֆիզիկական սարք, կամ վիրտուալ մեքենա ամպային միջավայրում: Մշակողները նոր կոդ են վերբեռնում օրը մեկ կամ մի քանի անգամ: CI սերվերը ավտոմատ կերպով պատճենում է այն բոլոր կախվածությունների հետ և կառուցում այն: Այնուհետև այն իրականացնում է ինտեգրման և միավորի թեստեր: Եթե ​​թեստերը հաջողությամբ անցնեն, CI համակարգը տեղակայում է կոդը:

Գործընթացի ընդհանուր դիագրամը կարող է ներկայացվել հետևյալ կերպ.

Հղում. ինչպես է աշխատում շարունակական ինտեգրման գործընթացը

CI մեթոդոլոգիան մի շարք պահանջներ է ներկայացնում մշակողների համար.

  • Անմիջապես շտկեք խնդիրները: Այս սկզբունքը CI եկավ ծայրահեղ ծրագրավորումից: Սխալների շտկումը ծրագրավորողների առաջնահերթ խնդիրն է:
  • Գործընթացների ավտոմատացում: Մշակողները և մենեջերները պետք է անընդհատ ինտեգրման գործընթացում խոչընդոտներ փնտրեն և վերացնեն դրանք: Օրինակ, ինտեգրման մեջ հաճախ խոչընդոտ է լինում պարզվում է փորձարկում.
  • Հնարավորինս հաճախ հավաքներ անցկացրեք: Օրը մեկ անգամ՝ թիմի աշխատանքը համաժամեցնելու համար:

Իրականացման դժվարություններ

Առաջին խնդիրը գործառնական բարձր ծախսերն են: Նույնիսկ եթե ընկերությունն օգտագործում է բաց CI գործիքներ (որի մասին կխոսենք ավելի ուշ), այն դեռ պետք է գումար ծախսի ենթակառուցվածքի աջակցության վրա: Այնուամենայնիվ, ամպային տեխնոլոգիաները կարող են լինել լուծումը:

Նրանք պարզեցնում են տարբեր մասշտաբի համակարգչային կոնֆիգուրացիաների հավաքումը: Ընկերության գումարած վճարել միայն օգտագործված ռեսուրսների համար, որն օգնում է խնայել ենթակառուցվածքները:

Ըստ հարցումների [էջ 14 Հոդված], շարունակական ինտեգրումը մեծացնում է ընկերության աշխատակիցների բեռը (առնվազն սկզբում): Նրանք պետք է սովորեն նոր գործիքներ, իսկ գործընկերները միշտ չէ, որ օգնում են վերապատրաստման հարցում: Հետևաբար, դուք պետք է գործ ունենաք նոր շրջանակների և ծառայությունների հետ անմիջապես:

Երրորդ դժվարությունը ավտոմատացման հետ կապված խնդիրներն են: Այս խնդրին բախվում են մեծ քանակությամբ հին կոդ ունեցող կազմակերպությունները, որոնք չեն ծածկված ավտոմատացված թեստերով: Սա հանգեցնում է նրան, որ կոդը պարզապես վերաշարադրվում է մինչև CI-ի ամբողջական իրականացումը:

Հղում. ինչպես է աշխատում շարունակական ինտեգրման գործընթացը
/flickr/ նրանց / CC BY-SA- ն

Ով օգտագործում է

ՏՏ հսկաներն առաջիններից էին, ովքեր գնահատեցին մեթոդաբանության առավելությունները: Google օգտագործում շարունակական ինտեգրում 2000-ականների կեսերից: CI-ն իրականացվել է որոնման համակարգում ուշացումների խնդիրը լուծելու համար։ Շարունակական ինտեգրումն օգնեց արագ հայտնաբերել և լուծել խնդիրները: Այժմ CI-ն օգտագործվում է ՏՏ հսկայի բոլոր գերատեսչությունների կողմից։

Շարունակական ինտեգրումն օգնում է նաև փոքր ընկերություններին, և CI գործիքներն օգտագործվում են նաև ֆինանսական և առողջապահական կազմակերպությունների կողմից: Օրինակ, Morningstar-ում շարունակական ինտեգրման ծառայություններն օգնեցին 70%-ով ավելի արագ կարկատել խոցելիությունը: Իսկ Philips Healthcare բժշկական հարթակը կարողացավ կրկնապատկել թեստավորման թարմացումների արագությունը:

Գործիքներ

Ահա մի քանի հայտնի գործիքներ CI-ի համար.

  • Jenkins ամենահայտնի CI համակարգերից մեկն է: Այն աջակցում է ավելի քան հազար պլագիններ տարբեր VCS-ների, ամպային հարթակների և այլ ծառայությունների հետ ինտեգրվելու համար: Մենք նաև օգտագործում ենք Jenkins-ը 1cloud: գործիքում ներառված է մեր DevOps համակարգում. Նա պարբերաբար ստուգում է թեստավորման համար նախատեսված Git մասնաճյուղը։
  • Buildbot — python շրջանակ՝ ձեր սեփական շարունակական ինտեգրման գործընթացները գրելու համար: Գործիքի սկզբնական կարգավորումը բավականին բարդ է, բայց դա փոխհատուցվում է հարմարեցման լայն տարբերակներով: Շրջանակի առավելությունների թվում օգտվողները նշում են դրա ցածր ռեսուրսների ինտենսիվությունը:
  • Համագումար CI Pivotal-ի սերվեր է, որն օգտագործում է Docker կոնտեյներներ: Concourse CI-ն ինտեգրվում է ցանկացած գործիքների և տարբերակների կառավարման համակարգերի հետ: Մշակողները նշում են, որ համակարգը հարմար է ցանկացած չափի ընկերություններում աշխատելու համար։
  • Gitlab CI GitLab տարբերակի կառավարման համակարգում ներկառուցված գործիք է: Ծառայությունն աշխատում է ամպի մեջ և օգտագործում է YAML ֆայլերը կազմաձևման համար: Ինչպես Concourse-ը, Gitlab CI-ն կիրառվում է Docker կոնտեյներներ, որոնք օգնում են մեկուսացնել տարբեր գործընթացները միմյանցից:
  • Codeship ամպային CI սերվեր է, որն աշխատում է GitHub-ի, GitLab-ի և BitBucket-ի հետ: Պլատֆորմը չի պահանջում երկար նախնական կարգավորում՝ ստանդարտ նախապես տեղադրված CI գործընթացները հասանելի են Codeship-ում: Փոքր (ամսական մինչև 100 կառուցում) և բաց կոդով նախագծերի համար Codeship-ը հասանելի է անվճար:

Նյութեր մեր կորպորատիվ բլոգից.

Source: www.habr.com

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