Facebook адкрыў код праекта DotSlash

Facebook абвясціў аб адкрыцці кода ўтыліты каманднага радка dotslash, створанай для спрашчэння распаўсюджвання набору выкананых файлаў для розных платформаў. Утыліта разлічана на выкананне сцэнарыяў, якія аўтаматызуюць загрузку падыходнага для бягучай платформы выкананага файла, праверку яго цэласнасці і выкананне. Код утыліты напісаны на мове Rust і распаўсюджваецца пад ліцэнзіямі MIT і Apache 2.0.

Утыліта вырашае задачы, падобныя з shell-скрыптамі для запуску выкананых файлаў для бягучай платформы, але пры гэтым пазбаўляе ад неабходнасці ўключэння ў камплект выкананых файлаў для ўсіх падтрымліваемых платформаў. DotSlash таксама дазваляе захоўваць інфармацыю аб сабраных выкананых файлаў у рэпазітары разам з кодам, пры гэтым размяшчаючы самі файлы на асобных загрузных серверах, што дазваляе пазбегнуць росты памеру рэпазітара і зменшыць нагрузку на сістэму ўводу/высновы пры выкананні аперацый кланавання.

Пры выкарыстанні DotSlash набор спецыфічных для розных платформаў выкананых файлаў замяняецца на адзін сцэнар, улучальны апісанне логікі выбару выкананага файла ў прывязцы да падтрымоўваных платформам. Пасля запуску DotSlash-сцэнара неабходны для бягучай платформы выкананы файл дынамічна загружаецца, распакоўваецца, правяраецца па крыптаграфічным хэшы і захоўваецца ў лакальным кэшы для наступных запускаў. Файлы перадаюцца ў сціснутым выглядзе. Сцэнары DotSlash могуць генеравацца аўтаматычна для рэлізаў, якія публікуюцца на GitHub.

Прыклад DotSlash-сцэнара для распаўсюджвання зборак Node.js 18.19.0 для платформ macOS ARM64, macOS x86_64 і Linux x86_64: #!/usr/bin/env dotslash { "name": "node-v18.19.0", "platforms": { "macos-aarch64": { "size": 40660307, ​​"hash": "blake3", "digest": »: «node-v6 -darwin-arm2/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v33951/node-v586-darwin-arm7670016.tar.gz" } ] }, "macos-x9_503": { "size": 028454, "hash": "blake9249", "digest": "5e556347f3e98de347fe34c18.19.0fa64e18.19.0c18.19.0z64 , "path": "node-v86 .64-darwin-x42202872/bin/node», «providers»: [ { «url»: «https://nodejs.org/dist/v3/node-v37521058114-darwin-x7.tar.gz » } ] }, "linux-x71_0": { "size": 3, "hash": "blake8042", "digest": "8b7908305fc9115488a6b29bedc514a9a2fafc24a18.19.0b64e18.19.0ebf18.19.0ad64 z", "path": "node -v86-linux-x64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v44694523/node-v3-linux-x72.tar .gz» } ] } } }

Крыніца: opennet.ru

Дадаць каментар