Napake v gradbenih sistemih zaradi sprememb arhivskih kontrolnih vsot na GitHubu

GitHub je spremenil način ustvarjanja samodejno ustvarjenih arhivov ».tar.gz« in ».tgz« na straneh za izdajo, kar je privedlo do sprememb v njihovih kontrolnih vsotah in množičnih napak v avtomatiziranih sistemih gradnje, ki preverjajo arhive, prenesene iz GitHuba, glede na prejšnje, da potrdijo celovitost shranjene kontrolne vsote, na primer postavljene v metapodatke paketa ali v skripte za gradnjo.

Od izdaje 2.38 je komplet orodij Git privzeto vključeval vgrajeno implementacijo gzip, kar je omogočilo poenotenje podpore za to metodo stiskanja v vseh operacijskih sistemih in izboljšalo zmogljivost ustvarjanja arhivov. GitHub je pobral spremembo po posodobitvi različice git v svoji infrastrukturi. Težavo je povzročilo dejstvo, da so stisnjeni arhivi, ki jih je ustvarila vgrajena implementacija gzip, ki temelji na zlibu, binarno drugačni od arhivov, ki jih je ustvaril pripomoček gzip, kar je povzročilo različne kontrolne vsote za arhive, ki so jih ustvarile različne različice git pri izvajanju ukaz "git arhiv".

V skladu s tem so se po posodobitvi gita v GitHubu na straneh za izdajo začeli prikazovati nekoliko drugačni arhivi, ki niso prestali preverjanja s starimi kontrolnimi vsotami. Težava se je kazala v različnih gradbenih sistemih, kontinuiranih integracijskih sistemih in orodjih za gradnjo paketov iz izvorne kode. Na primer, sklop približno 5800 vrat FreeBSD, katerih izvorne kode so bile prenesene iz GitHub, je bil pokvarjen.

Kot odgovor na prve pritožbe glede napak je GitHub sprva navedel dejstvo, da trajne kontrolne vsote za arhive nikoli niso bile zagotovljene. Potem ko se je izkazalo, da bo potrebno ogromno dela za posodobitev metapodatkov v različnih ekosistemih za ponovno vzpostavitev funkcionalnosti prizadetih gradbenih sistemov, so si predstavniki GitHuba premislili, razveljavili spremembo in vrnili stari način generiranja arhivov.

Razvijalci Gita še niso prišli do odločitve in le razpravljajo o možnih ukrepih. Obravnavane možnosti so vključevale vrnitev na uporabo privzetega pripomočka gzip; dodajanje zastavice “--stable” za ohranjanje združljivosti s starimi arhivi; povezovanje vgrajene izvedbe z ločeno arhivsko obliko; uporaba pripomočka gzip za stare objave in vgrajena izvedba za objave od določenega datuma; zagotavljanje stabilnosti formata samo za nestisnjene arhive.

Težavnost pri odločanju je razložena z dejstvom, da vrnitev na klic zunanjega pripomočka ne reši v celoti problema nespremenljivosti kontrolne vsote, saj lahko sprememba zunanjega programa gzip povzroči tudi spremembo formata arhiva. Trenutno je bil za pregled predlagan niz popravkov, ki privzeto vrne staro vedenje (klicanje zunanjega pripomočka gzip) in uporablja vgrajeno izvedbo, če v sistemu ni pripomočka gzip. Popravki v dokumentacijo dodajajo tudi omembo, da stabilnost izpisa »git archive« ni zagotovljena in da se bo format v prihodnosti lahko spremenil.

Vir: opennet.ru

Dodaj komentar