Bazel 1.0 build համակարգի թողարկում

Ներկայացվել է բաց հավաքման գործիքների թողարկում Բազել 1.0, որը մշակվել է Google-ի ինժեներների կողմից և օգտագործվում է ընկերության ներքին նախագծերի մեծ մասը հավաքելու համար: Release 1.0-ը նշանավորեց անցումը դեպի իմաստային թողարկման տարբերակ և նաև աչքի ընկավ մեծ թվով փոփոխությունների ներմուծմամբ, որոնք խախտում էին հետընթաց համատեղելիությունը: Ծրագրի կոդը տարածվում է լիցենզավորված Apache 2.0-ի համաձայն:

Bazel-ը կառուցում է նախագիծը՝ գործարկելով անհրաժեշտ կոմպիլյատորները և թեստերը: Կառուցման համակարգը նախագծված է ի սկզբանե Google-ի նախագծերը օպտիմալ կերպով կառուցելու համար, ներառյալ շատ մեծ նախագծերն ու նախագծերը, որոնք պարունակում են կոդ ծրագրավորման բազմաթիվ լեզուներով, պահանջում են լայնածավալ փորձարկում և կառուցված են բազմաթիվ հարթակների համար: Այն աջակցում է Java, C++, Objective-C, Python, Rust, Go և շատ այլ լեզուներով կոդի ստեղծմանը և փորձարկմանը, ինչպես նաև Android-ի և iOS-ի համար բջջային հավելվածների ստեղծմանը: Աջակցվում է մեկ հավաքման ֆայլերի օգտագործումը տարբեր հարթակների և ճարտարապետության համար, օրինակ, հավաքման մեկ ֆայլ առանց փոփոխությունների կարող է օգտագործվել ինչպես սերվերային համակարգի, այնպես էլ շարժական սարքի համար:

Bazel-ի տարբերակիչ հատկանիշներից են հավաքման գործընթացի բարձր արագությունը, հուսալիությունը և կրկնելիությունը: Բարձր կառուցման արագության հասնելու համար Bazel-ը ակտիվորեն օգտագործում է քեշավորման և զուգահեռացման տեխնիկան կառուցման գործընթացի համար: BUILD ֆայլերը պետք է ամբողջությամբ սահմանեն բոլոր կախվածությունները, որոնց հիման վրա որոշումներ են կայացվում փոփոխություններ կատարելուց հետո բաղադրիչները վերակառուցելու մասին (միայն փոխված ֆայլերը վերակառուցվում են) և զուգահեռացնում են հավաքման գործընթացը: Գործիքավորումը նաև ապահովում է կրկնվող հավաքում, այսինքն. Մշակողի մեքենայի վրա նախագծի կառուցման արդյունքը լիովին նույնական կլինի երրորդ կողմի համակարգերի վրա կառուցվածին, ինչպիսիք են շարունակական ինտեգրման սերվերները:

Ի տարբերություն Make-ի և Ninja-ի, Bazel-ը օգտագործում է հավաքման կանոնների կառուցման ավելի բարձր մակարդակի մոտեցում, որտեղ կառուցվող ֆայլերի հետ հրամանների կապը սահմանելու փոխարեն օգտագործվում են ավելի վերացական պատրաստի բլոկներ, ինչպիսիք են «գործարկվող ֆայլի ստեղծումը C++», «գրադարանի կառուցում C++-ում» կամ «փորձարկում C++-ի համար», ինչպես նաև թիրախային և կառուցման հարթակների նույնականացում: BUILD տեքստային ֆայլում նախագծի բաղադրիչները նկարագրվում են որպես գրադարանների, գործարկվող ֆայլերի և թեստերի մի փունջ՝ առանց առանձին ֆայլերի մակարդակով մանրամասնելու և կոմպիլյատորի կանչի հրամանների: Լրացուցիչ գործառույթն իրականացվում է ընդարձակման միացման մեխանիզմի միջոցով:

Source: opennet.ru

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