Bosh sahifa Wiki Remote Build Cache

Remote Build Cache

Remote Build Cachebuild artefaktlari va action natijalarini tarmoq orqali umumiy xizmatda saqlab, turli developer mashinalari hamda CI workerlar o‘rtasida qayta ishlatadigan cache.

Client va server oqimi

Client local keyni hisoblab, action cache’dan output digestlarni so‘raydi; kerak bloblar content-addressed storage’dan yuklanadi. Miss bo‘lsa action bajarilib, outputlar avval blob storagega, keyin action mappingga yoziladi.

Tarmoq xarajati

Download va upload parallel, chunked va compressed bo‘lishi mumkin. Katta artefakt uchun partial failure retry qilinadi, ammo digest tasdiqlanmaguncha entry qabul qilinmaydi. Read-only client CI fork yoki ishonchsiz contributor uchun xavfsizroq.

Hit samaradorligi

Latency juda kichik compile actiondan qimmat bo‘lishi mumkin. Client local cache’ni birinchi ko‘radi, minimal hajm threshold va batch request ishlatadi. Hit rate bilan birga downloaded byte, lookup latency va avoided CPU time o‘lchanadi.

Platforma ajratish

Platform property, toolchain image digest va execution environment keyga kiradi. Linux x86-64 natijasi boshqa ABI yoki architecture uchun qayta ishlatilmaydi. Multi-tenant namespace bir loyiha outputini boshqasidan ajratadi.

Himoya

Transport TLS bilan, service identity va token qisqa muddatli credential bilan himoyalanadi. Server quota, eviction va garbage collection blobni hali action reference qilayotgan paytda o‘chirmasligi kerak.

Nosozlik sinovi

Sinov tarmoq uzilishi, timeout, corrupt blob, permission denied va server miss holatida build local bajarilish bilan davom etishini tekshiradi. Remote cache availability correctness uchun majburiy bo‘lmaydi.

Amaliy boshqaruv

Remote Build Cache implementatsiyasida tarmoq cache protokoli va CAS alohida va versiyalangan holat sifatida yuritiladi. Qaror uchun zarur inputlar yashirin global taxminga aylantirilmaydi: platforma, konfiguratsiya, identity yoki memory-order sharti tegishli obyekt bilan bog‘lanadi. Shu sabab incremental yangilanish, context almashishi yoki parallel hodisada eskirgan ma’lumotdan foydalanish kamayadi. Debug rejim qarorni hosil qilgan edge, state transition va parametrlarni ko‘rsatadi; production log esa maxfiy qiymatlarni xom shaklda yozmaydi.

Muhim xato sinfi — corrupt blob yoki noto‘g‘ri tenant entry. Bunday vaziyatda tizim optimistik tarzda davom etmaydi: semantikaga qarab konservativ fallback, bounded retry, taskni bloklash yoki aniq error tanlanadi. Timeout correctness isboti emas; u faqat operatsion limitdir. Queue membership, reference count, lock ownership va visibility kabi invariantlar state bilan atomik yangilanadi. Cancellation yoki failure o‘rtada yuz bersa qisman o‘zgargan holat cleanup protokoli orqali tiklanadi.

Sifat nazorati timeout, digest va fallback build orqali bajariladi. Test normal yo‘ldan tashqari bo‘sh navbat, bitta element, yuqori contention, timeout bilan bir vaqtdagi wakeup, resurs limiti va platforma variantlarini qamraydi. To‘g‘rilik performance’dan alohida tekshiriladi; keyin throughput, p99 latency, context switch, cache miss yoki artefakt hajmi kabi mavzuga mos ko‘rsatkichlar baseline bilan solishtiriladi. Topilgan minimal interleaving yoki kirish regressiya to‘plamida doimiy saqlanadi.

Remote xizmat partial uploadni final action entry sifatida ko‘rsatmaydi. Avval barcha bloblar digest bilan commit qilinadi, so‘ng action mapping atomik e’lon qilinadi. Garbage collector action reference va lease’larni hisobga oladi. Cross-region replica eventual bo‘lsa, vaqtinchalik blob-miss client uchun oddiy cache missga aylanadi.

Bog‘liq tushunchalar

build cache, remote execution, content-addressed storage, artefact cache, digest, CI worker