Buck2, nový systém sestavení Facebooku

Buck2-Hero

Buck2, nový open source systém sestavení Facebooku

Facebook představil nedávno vydal nový systém sestavení nazvaný "Buck2", který uvádí, že je zaměřené na budování projektů z úložišť velmi velké, které obsahují kód v různých jazycích programování.

Rozdíly mezi novou implementací a systémem dříve používaný dolar Prostřednictvím Facebooku místo Javy používají jazyk Rust a výrazné zvýšení efektivity a výkonu montážního procesu (v interních testech na stejné infrastruktuře provádí Buck2 montážní úlohy dvakrát rychleji než Buck).

Sestavovací systémy stojí mezi vývojářem a jeho spuštěným kódem, takže cokoli, co můžeme udělat pro rychlejší nebo produktivnější prostředí, přímo ovlivňuje, jak efektivní může být vývojář. Cílem Buck2 bylo zachovat to, co jsme na Buck1 milovali (základy a pracovní postupy), inspirovat se inovacemi po Buck1 (včetně Bazel, Adapton a Shake) a zaměřit se na rychlost a umožnit nové zážitky.

O Buck2

Je zdůrazněno, že systém není vázán na tvorbu kódu v konkrétních jazycích a hned po vybalení podporuje stavitelské projekty napsané v C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell a OCaml používané Facebookem.

Jazyk Starlark, založený na Pythonu (stejně jako v Bazelu), se používá k navrhování pluginů, vytváření skriptů a pravidel. Starlark vám umožňuje rozšířit možnosti systému sestavení a abstrahovat od konkrétních jazyků používaných v budovaných projektech.

Je to zmíněno vysokého výkonu je dosaženo ukládáním výsledků do mezipaměti, paralelizace práce a podpora vzdáleného provádění úloh (Remote Build Execution).

Prostředí stavby používá pojem „hermetičnost“: kompilovaný kód je odtržen od vnějšího světa, během procesu sestavení se nic nenačte zvenčí a opakované provádění úlohy na různých systémech vede ke stejnému výsledku (opakovaná sestavení, například výsledek kompilace projektu na stroj od vývojáře bude přesně stejný jako sestavení na serveru pro nepřetržitou integraci). Nedostatek závislosti je v Buck2 vnímán jako chyba.

Na straně Klíčové vlastnosti Buck2, vynikají následující:

  • Pravidla pro podporu programovacích jazyků a základního systému sestavování jsou zcela oddělená. Pravidla jsou napsána v jazyce Starlark a sada nástrojů a implementace Starlark jsou napsány v Rustu.
  • Sestavovací systém používá jeden přírůstkový graf závislosti (bez stagingu), který umožňuje zvýšit hloubku paralelizace práce ve srovnání s Buckem a Bazelem a vyhnout se mnoha druhům chyb.
  • Kód Buck2 zveřejněný na GitHubu a pravidla podpory programovacího jazyka jsou téměř totožné s interní verzí používanou v infrastruktuře Facebooku (jediné rozdíly jsou v odkazu na edice kompilátoru a servery sestavení používané Facebookem).
  • Systém sestavení je navržen tak, aby se integroval se systémy vzdáleného provádění úloh, které vám umožňují spouštět úlohy na vzdálených serverech. Vzdálené spouštění API je kompatibilní s Bazel a bylo testováno na kompatibilitu s Buildbarn a EngFlow.
  • Je zajištěna integrace s virtuálními souborovými systémy, ve kterých je prezentován obsah celého úložiště, ale ve skutečnosti se pracuje se skutečnou lokální částí části úložiště (vývojář vidí celé úložiště, ale pouze to, co je vyžadováno) soubory, ke kterým se přistupuje, se načítají z úložiště). Jsou podporovány VFS založené na EdenFS a Git LFS, které používá Sapling.

A konečně, pro ty, kteří se chtějí o něm dozvědět více, by měli vědět, že kód je šířen pod licencí Apache 2.0 a mohou konzultovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.