I fallimenti in i sistemi di custruzzione per via di cambiamenti in i checksum d'archivi in ​​GitHub

GitHub hà cambiatu u modu chì genera automaticamente archivi ".tar.gz" è ".tgz" in e pagine di liberazione, chì hà purtatu à cambiamenti in i so checksums è fallimenti massivi in ​​i sistemi di custruzzione automatizati chì verificanu l'archivi scaricati da GitHub contr'à quelli precedenti per cunfirmà l'integrità. .suma di cuntrollu almacenatu, per esempiu, pusatu in metadati di pacchettu o in script di creazione.

A partire da a versione 2.38, u toolkit Git include una implementazione integrata di gzip per difettu, chì hà permessu di unificà u supportu per stu metudu di compressione in i sistemi operativi è migliurà u rendiment di creazione di archivi. GitHub hà pigliatu u cambiamentu dopu avè aghjurnatu a versione di git in a so infrastruttura. U prublema hè stata causata da u fattu chì l'archivi cumpressi generati da l'implementazione integrata di gzip basata in zlib sò binari diffirenti da l'archivi creati da l'utilità gzip, chì hà risultatu in diverse checksums per l'archivi creati da diverse versioni di git quandu eseguisce u git. cumandamentu "git archive".

Dunque, dopu avè aghjurnatu git in GitHub, l'archivi ligeramente diffirenti cuminciaru à esse affissati nantu à e pagine di liberazione chì ùn anu micca passatu a verificazione utilizendu i vechji checksums. U prublema si manifesta in diversi sistemi di custruzzione, sistemi di integrazione cuntinuu, è arnesi per custruisce pacchetti da u codice fonte. Per esempiu, l'assemblea di circa 5800 porti FreeBSD, i codici fonte per quale sò stati scaricati da GitHub, hè stata rottu.

In risposta à i reclami iniziali nantu à i glitches, GitHub hà inizialmente citatu u fattu chì i cuntrolli permanenti per l'archivi ùn sò mai stati garantiti. Dopu chì hè statu dimustratu chì una grande quantità di travagliu serà necessariu per aghjurnà i metadati in diversi ecosistemi per restaurà a funziunalità di i sistemi di custruzzione affettati, i rapprisentanti di GitHub anu cambiatu a so mente, rinviò u cambiamentu è rinviò u vechju metudu di generazione d'archivi.

I sviluppatori di Git ùn anu ancu ghjuntu à una decisione è discutanu solu e pussibuli azioni. L'opzioni cunsiderate includenu torna à utilizà l'utilità gzip predeterminata; aghjunghjendu a bandiera "--stable" per mantene a cumpatibilità cù i vechji archivi; ligà l'implementazione integrata à un furmatu d'archiviu separatu; aduprendu l'utilità gzip per i vechji commits è l'implementazione inline per commits chì partenu da una certa data; guarantiscenu a stabilità di u furmatu solu per l'archivi micca cumpressi.

A difficultà di piglià una decisione hè spiegata da u fattu chì u rolling back to a call to an external utility ùn risolve micca cumplettamente u prublema di l'immutabilità di checksum, postu chì un cambiamentu in u prugramma gzip esternu pò ancu purtà à un cambiamentu in u furmatu di l'archiviu. Attualmente, un inseme di patches hè statu prupostu per rivisione chì torna u vechju cumpurtamentu per difettu (chjamà una utilità gzip esterna) è usa l'implementazione integrata in l'absenza di una utilità gzip in u sistema. I patches aghjunghjenu ancu à a documentazione una menzione chì a stabilità di l'output "git archive" ùn hè micca garantitu è ​​u formatu pò cambià in u futuru.

Source: opennet.ru

Add a comment