Zlyhania v systémoch zostavovania spôsobené zmenou kontrolných súčtov archívov v GitHub

GitHub zmenil metódu generovania automaticky vytváraných archívov „.tar.gz“ a „.tgz“ na stránkach s verziami, čo viedlo k zmene ich kontrolných súm a masovým zlyhaniam v automatizovaných systémoch zostavovania, ktoré na potvrdenie integrity vykonávajú porovnanie sťahovaných archívov z GitHubu s predtým uloženými kontrolnými súmami, napríklad umiestnenými v metadátach balíkov alebo v skriptoch na zostavenie.

Od vydania verzie 2.38 bola v nástrojoch Git predvolene zahrnutá integrovaná implementácia gzip, ktorá umožnila unifikovať podporu tejto metódy kompresie v rôznych operačných systémoch a zvýšiť výkonnosť pri vytváraní archívov. GitHub prijal zmenu po aktualizácii verzie git vo svojej infraštruktúre. Problém vznikol, pretože kompresné archívy generované integrovanou implementáciou gzip na základe zlib sa binárne líšia od archívov vytvorených utilitou gzip, čo viedlo k rozdielu v kontrolných súmách pre archívy vytvorené rôznymi verziami git pri vykonaní príkazu „git archive“.

Prislúchajúco, po aktualizácii git v GitHub sa na stránkach verzií začali vydávať mierne odlišné archívy, ktoré neprešli kontrolou podľa starých kontrolných súm. Problém sa prejavil v rôznych systémoch zostavovania, systémoch kontinuálnej integrácie a v nástrojoch na zostavenie balíkov zo zdrojového kódu. Napríklad došlo k porušeniu zostavenia približne 5800 portov FreeBSD, pre ktoré sa zdrojové kódy sťahovali z GitHubu.

Na prvé sťažnosti ohľadom vzniknutých zlyhaní zástupcovia GitHubu spočiatku odkazovali na to, že trvalé kontrolné súmy pre archívy nikdy neboli zaručené. Po tom, čo bolo preukázané, že na obnovenie funkčnosti systémov zostavovania, ktoré ovplyvnila zmena, bude potrebná obrovská práca na aktualizácii metadát v rôznych ekosystémoch, zástupcovia GitHubu zmenili svoj názor, zrušili zmenu a vrátili starú metódu generovania archívov.

Vývojári Git zatiaľ nedospeli k žiadnemu rozhodnutiu a len diskutujú o možných krokoch. Zvážené boli také možnosti, ako je návrat k používaniu nástroja gzip ako predvoleného; pridanie prapora „—stable“ na zachovanie kompatibility so starými archívmi; viazanie zabudovanej implementácie na samostatný formát archívu; použitie nástroja gzip pre staré commity a zabudovanej implementácie pre commity od určitého dátumu; zabezpečenie stability formátu iba pre nekomprimované archívy.

Náročnosť prijatia rozhodnutia sa vysvetľuje tým, že návrat na volanie vonkajšieho nástroja úplne nevyrieši problém nemennosti kontrolných súm, pretože zmena vo vonkajšom programe gzip môže tiež viesť k zmene formátu archívu. V súčasnosti je na recenzovanie navrhnutý súbor patchov, ktorý obnovuje predvolené správanie (volanie vonkajšieho nástroja gzip) a používa zabudovanú implementáciu v prípade, že v systéme nie je dostupný nástroj gzip. Patchy tiež dopĺňajú dokumentáciu o zmienku, že stabilita výstupu „git archive“ nie je zaručená a formát sa môže v budúcnosti zmeniť.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster