Bazel 2.0 -rakennusjärjestelmän julkaisu

Saatavilla avoimien kokoonpanotyökalujen vapauttaminen Bazel 2.0, jonka ovat kehittäneet Googlen insinöörit ja jota käytettiin useimpien yrityksen sisäisten projektien kokoamiseen. Bazel rakentaa projektin suorittamalla tarvittavat kääntäjät ja testit. Se tukee koodin rakentamista ja testaamista Java-, C++-, Objective-C-, Python-, Rust-, Go- ja monilla muilla kielillä sekä mobiilisovellusten rakentamista Androidille ja iOS:lle. Projektin koodi jakelija lisensoitu Apache 2.0:lla.

Merkittävä versiomuutos sisältää muutoksia, jotka rikkovat taaksepäin yhteensopivuuden. Bazel 2.0:sta alkaen seuraavat tilat ovat oletusarvoisesti käytössä: "—inyhteensopiva_remap_main_repo" (linkit nimen perusteella ja @-osoitteen kautta linkitetään nyt samaan arkistoon), "-inyhteensopiva_disallow_dict_lookup"_(hajautusavainten käyttö),
"--incompatible_remove_native_maven_jar" ja "--inyhteensopiva_prohibit_aapt1". Muita muutoksia ovat mm.

  • Tiimissä kysely kokeellinen tuki on ilmestynyt uudelle versiolle "proto"-tulostusmuodosta (-output=proto), joka on tällä hetkellä oletuksena pois käytöstä (-inyhteensopiva_proto_output_v2) ja tarjoaa kompaktimman esityksen tiedoista;
  • Lisättiin "--incompatible_remove_enabled_toolchain_types" -lippu PlatformConfiguration.enabled_toolchain_types-kentän poistamiseksi.
  • Lisätty suojaus sellaisten pakettien lataamista vastaan, jotka käyttävät syklisiä symbolisia linkkejä ladattaessa polkuja niitä laajennettaessa;
  • Otettu käyttöön mahdollisuus käyttää "--disk_cache" -lippua ulkoisten gRPC-välimuistien kanssa;
  • Debian-paketti ja binääriasennusohjelma sisältävät parannetun kerroksen, joka käsittelee ~/.bazelversion-tiedostoja ja ympäristömuuttujan $USE_BAZEL_VERSION;
  • Ajontiedostojen luettelotiedostojen vanhenemisen valmistelemiseksi lippu "--experimental_skip_runfiles_manifests" on lisätty.

Bazelin erityispiirteitä ovat kokoonpanoprosessin suuri nopeus, luotettavuus ja toistettavuus. Suuren rakennusnopeuden saavuttamiseksi Bazel käyttää aktiivisesti välimuisti- ja rinnakkaistekniikoita rakennusprosessissa. BUILD-tiedostoissa on määriteltävä täysin kaikki riippuvuudet, joiden perusteella tehdään päätökset komponenttien uudelleen rakentamisesta muutosten jälkeen (vain muuttuneet tiedostot rakennetaan uudelleen) ja kokoonpanoprosessin rinnastaminen. Työkalu varmistaa myös toistettavan kokoonpanon, ts. Projektin rakentamisen tulos kehittäjän koneelle on täysin identtinen kolmannen osapuolen järjestelmiin, kuten jatkuvaan integrointipalvelimiin, rakentamisen kanssa.

Toisin kuin Make ja Ninja, Bazel käyttää kokoonpanosääntöjen rakentamiseen korkeamman tason lähestymistapaa, jossa sen sijaan, että määritellään komentojen sidonta rakennettaviin tiedostoihin, käytetään abstraktimpia valmiita lohkoja, kuten "suoritettavan tiedoston rakentaminen C++, "kirjaston rakentaminen C++:lla" tai "testin suorittaminen C++:lle" sekä kohde- ja rakennusalustojen tunnistaminen. BUILD-tekstitiedostossa projektin komponentit kuvataan kirjastojen, suoritettavien tiedostojen ja testien joukkona ilman yksityiskohtia yksittäisten tiedostojen ja kääntäjien kutsukomentojen tasolla. Lisätoiminnot toteutetaan laajennusten yhdistämismekanismin kautta.

Yksittäisten kokoonpanotiedostojen käyttöä eri alustoille ja arkkitehtuureille tuetaan, esimerkiksi yhtä kokoonpanotiedostoa ilman muutoksia voidaan käyttää sekä palvelinjärjestelmässä että mobiililaitteessa. Rakennusjärjestelmä on suunniteltu alusta alkaen rakentamaan optimaalisesti Google-projekteja, mukaan lukien erittäin suuret projektit ja projektit, jotka sisältävät koodia useilla ohjelmointikielillä, vaativat laajaa testausta ja on rakennettu useille alustoille.

Lähde: opennet.ru

Lisää kommentti