Bazel 2.0 ehitussüsteemi väljalase

Saadaval avatud montaažitööriistade vabastamine Bazel 2.0, mille töötasid välja Google'i insenerid ja mida kasutati enamiku ettevõtte siseprojektide koostamiseks. Bazel koostab projekti, käivitades vajalikud kompilaatorid ja testid. See toetab koodi koostamist ja testimist Java, C++, Objective-C, Python, Rust, Go ja paljudes teistes keeltes, samuti mobiilirakenduste loomist Androidi ja iOS-i jaoks. Projekti kood jaotatud litsentsitud Apache 2.0 alusel.

Oluline versioonimuudatus hõlmab muudatuste lisamist, mis rikuvad tagasiühilduvust. Alates Bazel 2.0-st on järgmised režiimid vaikimisi lubatud: "—incompatible_remap_main_repo" (lingid nime järgi ja @ kaudu lingivad nüüd samasse hoidlasse), "-incompatible_disallow_dict_lookup"_ (räsimatute võtmete kasutamine),
"--incompatible_remove_native_maven_jar" ja "--incompatible_prohibit_aapt1". Muud muudatused hõlmavad järgmist:

  • Meeskonnas aquery on ilmunud eksperimentaalne tugi väljundvormingu “proto” uuele väljaandele (-output=proto), mis on praegu vaikimisi välja lülitatud (-incompatible_proto_output_v2) ja pakub kompaktsemat andmete esitlust;
  • Välja PlatformConfiguration.enabled_toolchain_types eemaldamiseks lisati lipp "--incompatible_remove_enabled_toolchain_types";
  • Lisatud kaitse selliste pakettide laadimise eest, mis kasutavad teede laadimisel nende laiendamisel tsüklilisi sümboolseid linke;
  • Rakendatud võimalus kasutada väliste gRPC vahemäludega lippu "--disk_cache";
  • Debiani pakett ja binaarinstaller sisaldavad täiustatud kihti, mis käsitleb faile ~/.bazelversion ja keskkonnamuutujat $USE_BAZEL_VERSION;
  • Käivitusfailide manifestifailide aegumise ettevalmistamiseks on lisatud lipp "--experimental_skip_runfiles_manifests".

Bazeli eripärade hulgas on montaažiprotsessi suur kiirus, töökindlus ja korratavus. Suure koostamiskiiruse saavutamiseks kasutab Bazel koostamise protsessis aktiivselt vahemällu salvestamise ja paralleelstamise tehnikaid. BUILD-failid peavad täielikult defineerima kõik sõltuvused, mille põhjal otsustatakse pärast muudatuste tegemist komponentide ümberehitamist (ümber ehitatakse ainult muudetud failid) ja koosteprotsessi paralleelseks muutmiseks. Tööriistad tagavad ka korratava montaaži, s.t. arendaja masinas projekti ehitamise tulemus on täiesti identne kolmandate osapoolte süsteemidele, näiteks pideva integratsiooni serveritele, ehitamisega.

Erinevalt Makeist ja Ninjast kasutab Bazel montaažireeglite koostamisel kõrgema taseme lähenemist, mille puhul selle asemel, et määratleda ehitatavate failidega käskude sidumist, kasutatakse abstraktsemaid valmisplokke, näiteks „käivitatava faili loomine C++”, “teegi loomine C++-s” või “testi käivitamine C++ jaoks”, samuti siht- ja ehitusplatvormide tuvastamine. Tekstifailis BUILD kirjeldatakse projekti komponente teekide, käivitatavate failide ja testidena, ilma üksikfailide ja kompilaatori kutsekäskude tasemel üksikasjalikult kirjeldamata. Lisafunktsioone rakendatakse laienduste ühendamise mehhanismi kaudu.

Toetatud on üksikute koostefailide kasutamine erinevate platvormide ja arhitektuuride jaoks, näiteks saab üht muudatusteta koostefaili kasutada nii serverisüsteemi kui ka mobiilseadme jaoks. Koostamissüsteem on algusest peale loodud selleks, et luua optimaalselt Google'i projekte, sealhulgas väga suuri projekte ja projekte, mis sisaldavad koodi mitmes programmeerimiskeeles, nõuavad põhjalikku testimist ja on loodud mitmele platvormile.

Allikas: opennet.ru

Lisa kommentaar