avatud ehituskomplektide väljaanne , mille on arendanud Google'i insenerid ja mida kasutatakse enamikus ettevõtte sisestes projektides. Versioon 1.0 tähistas üleminekut semantilise versioonihalduse kasutamisele ning samuti on sellele iseloomulik suur hulk tagasiühilduvust rikkuvaid muudatusi. Projekti kood ainekood on litsentsitud Apache 2.0 all.
Bazel võimaldab projekti ehitamist, käivitades vajalikud kompilaatorid ja testid. Ehitussüsteem on algselt kavandatud Google'i projektide optimaalseks ehitamiseks, sealhulgas väga suurte projektide ning projektide ehitamiseks, mis sisaldavad mitme programmeerimiskeele koodi, nõudvaid ulatuslikku testimist ja kokku pandud erinevate platvormide jaoks. Toetatakse koodi ehitamist ja testimist Java, C++, Objective-C, Python, Rust, Go ja paljude teiste keelte jaoks, samuti mobiilirakenduste koostamist Androidi ja iOS-i jaoks. Ühendatud ehitusfailide kasutamine erinevate platvormide ja arkitektuuride jaoks on toetatud, näiteks võib sama ehitusfaili muuta muutmata nii serverisüsteemide kui ka mobiilseadmete jaoks.
Bazel on tuntud oma kõrge kiirus, usaldusväärsus ja ehitusprotsessi korduvus. Kõrge ehituskiiruse saavutamiseks kasutatakse Bazelis aktiivselt vahemälu ja ehitusprotsessi nihutamise tehnikaid. BUILD-failides on kõik sõltuvused täielikult määratletud, mille põhjal tehakse otsuseid komponentide ümberkompileerimise kohta pärast muudatusi (ümber kompileeritakse ainult muudetud failid) ja ehitusprotsessi nihutamise osas. Tööriistakomplekt tagab ka ehituse korduvuse, st arendaja arvutis tehtud projekti ehitus tulemus vastab täielikult ehitusele kolmandates süsteemides, nagu pideva integreerimise serverid.
Erinevalt Make'ist ja Ninja'st kasutab Bazel kõrgema taseme lähenemist, millega luuakse ehitusreegleid, rakendades abstraktsemaid valmis komponente, nagu "C++ täidetava faili ehitamine", "C++ raamatukogu ehitamine" või "C++ testi käitamine", samuti sihtplatvormide ja ehitusplatvormide määramine. BUILD tekstifailis kirjeldatakse projekti komponente kui raamatukogude, täidetavate failide ja testide kogumit, vältides detailide kirjeldamist üksikute failide ja kompilaatori kutsumisjoonte tasemel. Täiendavat funktsionaalsust rakendatakse laienduste ühendamise mehhanismi kaudu.
Allikas: opennet.ru
