publikimi i mjeteve të montimit me burim të hapur , i zhvilluar nga inxhinierët e Google dhe i përdorur për të ndërtuar shumicën e projekteve të brendshme të kompanisë. Bazel merret me ndërtimin e projekteve, duke ekzekutuar kompilatorët dhe testet e nevojshme. Ai mbështet ndërtimin dhe testimin e kodit në Java, C++, Objective-C, Python, Rust, Go dhe shumë gjuhë të tjera, si dhe ndërtimin e aplikacioneve mobile për Android dhe iOS. Kodi i projektit licencuar sipas Apache 2.0.
Një ndryshim i rëndësishëm në version përfshin shtimin e ndryshimeve që prishin pajtueshmërinë e prapambetur. Duke filluar me Bazel 2.0, modalitetet e mëposhtme aktivizohen si parazgjedhje: "--incompatible_remap_main_repo" (referencat me emër dhe me @ tani i referohen të njëjtit depo), "--incompatible_disallow_dict_lookup" (përdorimi i çelësave të pakapshëm),
"--incompatible_remove_native_maven_jar" dhe "--incompatible_prohibit_aapt1". Ndryshime të tjera përfshijnë:
- Në ekip Mbështetje eksperimentale është shtuar për një version të ri të formatit të daljes "proto" (--output=proto), i cili aktualisht është i çaktivizuar si parazgjedhje (--incompatible_proto_output_v2) dhe ofron një përfaqësim më kompakt të të dhënave;
- U shtua flamuri "--incompatible_remove_enabled_toolchain_types" për të hequr fushën PlatformConfiguration.enabled_toolchain_types;
- Shtoi mbrojtje kundër ngarkimit të paketave që përdorin lidhje simbolike rrethore gjatë zgjerimit të shtigjeve;
- Implementova mundësinë për të përdorur flamurin "--disk_cache" me memorje të jashtme gRPC;
- Në paketim për Debian dhe instaluesi binar përfshin një shtresë të përmirësuar që trajton skedarët ~/.bazelversion dhe variablin e mjedisit $USE_BAZEL_VERSION;
- Në përgatitje për heqjen dorë nga runfiles me manifeste, është shtuar flamuri "--experimental_skip_runfiles_manifests".
Ndër karakteristikat dalluese të Bazel janë shpejtësia e lartë, besueshmëria dhe përsëritshmëria e procesit të ndërtimit. Për të arritur shpejtësi të lartë ndërtimi, Bazel përdor në mënyrë aktive teknikat e ruajtjes në memorje dhe paralelizimit. Skedarët BUILD duhet të përcaktojnë plotësisht të gjitha varësitë, të cilat përdoren për të përcaktuar nëse do të rindërtohen komponentët pas ndryshimeve (vetëm skedarët e ndryshuar rindërtohen) dhe nëse do të paralelizohet procesi i ndërtimit. Mjetet gjithashtu garantojnë përsëritshmërinë e ndërtimit, që do të thotë se projekti i ndërtuar në makinën e zhvilluesit do të jetë plotësisht në përputhje me ndërtimin në sisteme të palëve të treta, siç janë serverat e integrimit të vazhdueshëm.
Ndryshe nga Make dhe Ninja, Bazel përdor një qasje të nivelit më të lartë për ndërtimin e rregullave të ndërtimit. Në vend që të përcaktojë lidhjet e komandave për skedarët që po ndërtohen, ai përdor blloqe më abstrakte dhe të gatshme, të tilla si "ndërto një skedar ekzekutues C++", "ndërto një bibliotekë C++" ose "ekzekuto një test C++", si dhe përcakton platformat e synuara dhe të ndërtimit. Në skedarin tekst BUILD, komponentët e projektit përshkruhen si grupe bibliotekash, skedarësh ekzekutues dhe testesh, pa detajuar skedarët individualë dhe komandat e thirrjes së përpiluesit. Funksionaliteti shtesë zbatohet përmes zgjerimeve.
Mbështetet përdorimi i skedarëve të vetëm ndërtimi për platforma dhe arkitektura të ndryshme. Për shembull, një skedar i vetëm ndërtimi mund të përdoret i pandryshuar si për sistemin e serverit ashtu edhe për një pajisje mobile. Sistemi i ndërtimit është projektuar nga themelet për të ndërtuar në mënyrë optimale projekte Google, duke përfshirë projekte shumë të mëdha dhe projekte që përmbajnë kod në gjuhë të shumta programimi, që kërkojnë testime të gjera dhe që ndërtohen për platforma të shumta.
Burimi: opennet.ru
