GitHub дээрх архивын хяналтын нийлбэр өөрчлөгдсөний улмаас бүтээх системд гарсан алдаа

GitHub нь хувилбарын хуудсууд дээр автоматаар үүсгэгдсэн “.tar.gz” болон “.tgz” архивуудыг үүсгэх аргаа өөрчилсөн нь тэдгээрийн шалгах нийлбэрийг өөрчлөх, GitHub-аас татаж авсан архивуудыг өмнөх архивуудтай харьцуулан шалгаж, бүрэн бүтэн байдлыг баталгаажуулах автоматжуулсан бүтээх системд томоохон алдаа гарахад хүргэсэн. . хадгалсан шалгах нийлбэрүүд, жишээ нь, багц мета өгөгдөлд эсвэл бүтээх скриптэд байрлуулсан.

2.38 хувилбараас эхлэн Git хэрэгсэл нь анхдагчаар gzip-ийн суулгасан хэрэгжилтийг агуулсан бөгөөд энэ нь үйлдлийн системүүд дээрх шахалтын аргын дэмжлэгийг нэгтгэж, архив үүсгэх гүйцэтгэлийг сайжруулах боломжтой болсон. GitHub дэд бүтцээрээ git-ийн хувилбарыг шинэчилсний дараа өөрчлөлтийг авсан. Асуудал нь суулгасан zlib-д суурилсан gzip хэрэгжүүлэлтээр үүсгэгдсэн шахсан архивууд нь gzip хэрэглүүрийн үүсгэсэн архиваас хоёртын ялгаатай байдгаас үүдэлтэй бөгөөд үүний үр дүнд git-ийн өөр хувилбараар үүсгэсэн архивын шалгах нийлбэрүүд өөр өөр байдаг. "git архив" команд.

Үүний дагуу GitHub-д git-ийг шинэчилсний дараа хувилбарын хуудсан дээр арай өөр архивууд гарч эхэлсэн бөгөөд тэдгээр нь хуучин шалгах нийлбэрийг ашиглан баталгаажуулалтад ороогүй болно. Асуудал нь янз бүрийн бүтээх системүүд, тасралтгүй интеграцийн системүүд, эх кодоос багц үүсгэх хэрэгслүүдэд илэрч байв. Жишээлбэл, GitHub-аас эх кодыг нь татаж авсан 5800 орчим FreeBSD портын угсралт эвдэрсэн.

Гэмтлийн талаарх анхны гомдлын хариуд GitHub архивын байнгын шалгах нийлбэрийг хэзээ ч баталгаажуулдаггүй болохыг иш татав. Нөлөөлөлд өртсөн барилгын системийн ажиллагааг сэргээхийн тулд янз бүрийн экосистем дэх мета өгөгдлийг шинэчлэхийн тулд асар их ажил шаардагдана гэдгийг харуулсаны дараа GitHub-ийн төлөөлөгчид бодлоо өөрчилж, өөрчлөлтийг буцааж, архив үүсгэх хуучин аргыг буцаажээ.

Git-ийн хөгжүүлэгчид хараахан шийдвэрт хүрээгүй байгаа бөгөөд зөвхөн боломжит арга хэмжээний талаар ярилцаж байна. Анхдагч gzip хэрэгслийг ашиглах руу буцах зэрэг сонголтуудыг авч үзсэн; хуучин архивтай нийцтэй байхын тулд "--stable" тугийг нэмэх; суулгасан хэрэгжилтийг тусдаа архивын форматтай холбох; хуучин амлалтуудад gzip хэрэглүүрийг ашиглах, тодорхой өдрөөс эхлэн үүрэг гүйцэтгэхэд мөрийн хэрэгжилтийг ашиглах; зөвхөн шахагдаагүй архивын форматын тогтвортой байдлыг хангах.

Шийдвэр гаргахад хүндрэлтэй байгаа нь гадаад хэрэглүүрийн дуудлага руу буцах нь шалгах нийлбэр өөрчлөгдөхгүй байх асуудлыг бүрэн шийдэж чадахгүй байгаатай холбон тайлбарлаж байна, учир нь гадаад gzip програмын өөрчлөлт нь архивын форматыг өөрчлөхөд хүргэдэг. Одоогоор системд gzip хэрэглүүр байхгүй тохиолдолд суулгасан хэрэгжүүлэлтийг ашигладаг (гадаад gzip хэрэглүүрийг дуудаж) хуучин үйлдлийг буцаадаг засваруудыг шалгахаар санал болгож байна. Засварууд нь "git архив" гаралтын тогтвортой байдал баталгаатай биш бөгөөд ирээдүйд формат өөрчлөгдөж магадгүй гэдгийг баримт бичигт нэмж оруулсан болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх