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

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

Տարբերակի զգալի փոփոխությունը ներառում է փոփոխությունների ավելացում, որոնք խախտում են հետընթաց համատեղելիությունը: Սկսած Bazel 2.0-ից՝ լռելյայն միացված են հետևյալ ռեժիմները՝ «—incompatible_remap_main_repo» (հղումները անունով և @ now-ի միջոցով կապում են նույն պահեստին), «—incompatible_disallow_dict_lookup»_ (չհաշվող բանալիների օգտագործում),
«--incompatible_remove_native_maven_jar» և «--incompatible_prohibit_aapt1»: Այլ փոփոխությունները ներառում են.

  • Թիմում aquery Փորձարարական աջակցություն է հայտնվել «proto» ելքային ձևաչափի նոր խմբագրության համար (-output=proto), որը ներկայումս անջատված է լռելյայնորեն (-incompatible_proto_output_v2) և ապահովում է տվյալների ավելի կոմպակտ ներկայացում.
  • Ավելացրել է «--incompatible_remove_enabled_toolchain_types» դրոշը՝ PlatformConfiguration.enabled_toolchain_types դաշտը հեռացնելու համար;
  • Ավելացվել է պաշտպանություն փաթեթների բեռնումից, որոնք օգտագործում են ցիկլային սիմվոլիկ հղումներ՝ դրանք ընդլայնելիս ուղիները բեռնելիս.
  • Իրականացրել է «--disk_cache» դրոշը արտաքին gRPC քեշերի հետ օգտագործելու հնարավորությունը;
  • Debian փաթեթը և երկուական տեղադրիչը ներառում են բարելավված շերտ, որը մշակում է ~/.bazelversion ֆայլերը և $USE_BAZEL_VERSION միջավայրի փոփոխականը;
  • Նախապատրաստվելով runfiles մանիֆեստի ֆայլերի հնազանդմանը, ավելացվել է «--experimental_skip_runfiles_manifests» դրոշակը:

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

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

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

Source: opennet.ru

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