Facebook otworzył kod projektu DotSlash

Facebook ogłosił udostępnienie otwartego źródła dotslash, narzędzia wiersza poleceń zaprojektowanego w celu ułatwienia dystrybucji zestawu plików wykonywalnych na różne platformy. Narzędzie przeznaczone jest do uruchamiania skryptów automatyzujących pobieranie pliku wykonywalnego odpowiedniego dla bieżącej platformy, sprawdzających jego integralność i wykonanie. Kod narzędzia napisany jest w języku Rust i jest rozpowszechniany na licencji MIT i Apache 2.0.

Narzędzie rozwiązuje problemy podobne do skryptów powłoki do uruchamiania plików wykonywalnych dla bieżącej platformy, ale jednocześnie eliminuje potrzebę dołączania do pakietu plików wykonywalnych dla wszystkich obsługiwanych platform. DotSlash umożliwia także przechowywanie informacji o zebranych plikach wykonywalnych w repozytorium wraz z kodem, jednocześnie umieszczając same pliki na osobnych serwerach startowych, co pozwala uniknąć wzrostu rozmiaru repozytorium i zmniejsza obciążenie systemu wejścia/wyjścia podczas wykonywania operacje klonowania.

Podczas korzystania z DotSlash zestaw plików wykonywalnych specyficznych dla platformy jest zastępowany pojedynczym skryptem, który zawiera opis logiki wyboru pliku wykonywalnego w odniesieniu do obsługiwanych platform. Po uruchomieniu skryptu DotSlash plik wykonywalny wymagany dla bieżącej platformy jest dynamicznie pobierany, rozpakowywany, weryfikowany względem skrótu kryptograficznego i przechowywany w lokalnej pamięci podręcznej do kolejnych uruchomień. Pliki przesyłane są w formie skompresowanej. Skrypty DotSlash mogą być generowane automatycznie dla wydań publikowanych w GitHub.

Przykład skryptu DotSlash do dystrybucji kompilacji Node.js 18.19.0 dla platform macOS ARM64, macOS x86_64 i Linux x86_64: #!/usr/bin/env dotslash { „name”: „node-v18.19.0”, „ platformy”: { "macos-aarch64": { "size": 40660307, ​​​​"hash": "blake3", "streszczenie": "6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d98c347c34", "format": "tar.gz", "ścieżka": " węzeł-v18.19.0-darwin-arm64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64. tar.gz" } ] }, "macos-x86_64": { "size": 42202872, "hash": "blake3", "streszczenie": "37521058114e7f71e0de3fe8042c8fa7908305e9115488c6c29b514f9cd2a24c", "format": "tar.gz", „ścieżka” : "node-v18.19.0 .64-darwin-x18.19.0/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v64-darwin- x86.tar.gz " } ] }, "linux-x64_44694523": { "rozmiar": 3, "hash": "blake72", "streszczenie": "81b3fc30a7b1bedc09a3a4478fafc1a02b5e0ebf04ad15ea23d3b9e89212dc18.19.0", "format": "tar.gz „”, „ ścieżka „: „node -v64-linux-x18.19.0/bin/node”, „providers”: [ { „url”: „https://nodejs.org/dist/v18.19.0/node-v64- linux-xXNUMX.tar .gz" } ] } } }

Źródło: opennet.ru

Dodaj komentarz