Release av byggsystemet Bazel 2.0

Tillgängliga frigöring av öppna monteringsverktyg Bazel 2.0, utvecklad av ingenjörer från Google och används för att montera de flesta av företagets interna projekt. Bazel bygger projektet genom att köra nödvändiga kompilatorer och tester. Den stöder att bygga och testa kod i Java, C++, Objective-C, Python, Rust, Go och många andra språk, samt att bygga mobilapplikationer för Android och iOS. Projektkod levererad av licensierad under Apache 2.0.

En betydande versionsändring innebär tillägg av ändringar som bryter bakåtkompatibiliteten. Från och med Bazel 2.0 är följande lägen aktiverade som standard: "—incompatible_remap_main_repo" (länkar med namn och via @ länkar nu till samma arkiv), "—incompatible_disallow_dict_lookup"_(användning av unhashable nycklar),
"--incompatible_remove_native_maven_jar" och "--incompatible_prohibit_aapt1". Andra ändringar inkluderar:

  • I ett lag en fråga experimentellt stöd har dykt upp för en ny utgåva av utdataformatet "proto" (-output=proto), som för närvarande är inaktiverat som standard (-incompatible_proto_output_v2) och ger en mer kompakt presentation av data;
  • Lade till flaggan "--incompatible_remove_enabled_toolchain_types" för att ta bort fältet PlatformConfiguration.enabled_toolchain_types;
  • Tillagt skydd mot att ladda paket som använder cykliska symboliska länkar vid laddning av banor när de utökas;
  • Implementerade möjligheten att använda flaggan "--disk_cache" med externa gRPC-cacher;
  • Debianpaketet och det binära installationsprogrammet innehåller ett förbättrat lager som hanterar ~/.bazelversion-filer och miljövariabeln $USE_BAZEL_VERSION;
  • Som förberedelse för utfasningen av runfiles manifestfiler har flaggan "--experimental_skip_runfiles_manifests" lagts till.

Bland de utmärkande egenskaperna hos Bazel är monteringsprocessens höga hastighet, tillförlitlighet och repeterbarhet. För att uppnå hög bygghastighet använder Bazel aktivt caching och parallelliseringstekniker för byggprocessen. BUILD-filer måste helt definiera alla beroenden, utifrån vilka beslut fattas om att bygga om komponenter efter att ändringar har gjorts (endast ändrade filer byggs om) och parallellisera monteringsprocessen. Verktyg säkerställer också repeterbar montering, d.v.s. resultatet av att bygga ett projekt på utvecklarens maskin kommer att vara helt identiskt med byggandet på tredjepartssystem, såsom kontinuerliga integrationsservrar.

Till skillnad från Make och Ninja, använder Bazel ett tillvägagångssätt på högre nivå för att bygga sammansättningsregler, där istället för att definiera bindningen av kommandon till filerna som byggs, används mer abstrakta färdiga block, som att "bygga en körbar fil i C++", "bygga ett bibliotek i C++" eller "köra ett test för C++", samt identifiera mål- och byggplattformar. I BUILD-textfilen beskrivs projektkomponenterna som ett gäng bibliotek, körbara filer och tester, utan detaljer på nivån för enskilda filer och kompilatoranropskommandon. Ytterligare funktionalitet implementeras genom mekanismen för att ansluta tillägg.

Användningen av enstaka monteringsfiler för olika plattformar och arkitekturer stöds, till exempel kan en monteringsfil utan ändringar användas för både ett serversystem och en mobil enhet. Byggsystemet är designat från grunden för att optimalt bygga Google-projekt, inklusive mycket stora projekt och projekt som innehåller kod på flera programmeringsspråk, kräver omfattande testning och är byggda för flera plattformar.

Källa: opennet.ru

Lägg en kommentar