Een speciale buildcache is handig wanneer dezelfde repositories worden gebouwd op een laptop, desktop, CI-runner of platforms met verschillende CPU's, en herhaald werk meer kost dan cacheoverdracht en -onderhoud.
De cache moet een optimalisatie blijven, niet de bron van waarheid. Builds moeten ook bij een cachemiss slagen, terwijl cachesleutels, vertrouwensgrenzen, quota en garbagecollection voorkomen dat één apparaat de gedeelde service vervuilt of volzet.
Herhaald werk op verschillende apparaten meten
Houd op elk apparaat bij hoe lang het downloaden van afhankelijkheden, containerlagen, gecompileerde objecten, gegenereerde assets en volledige builds duurt. Tel hoe vaak dezelfde invoer opnieuw wordt gebouwd na het wisselen van machine of het starten van een tijdelijke CI-taak.
Een praktische handleiding voor een externe Bazel-cache laat zien hoe meerdere machines artefacten kunnen hergebruiken in plaats van identieke invoer onafhankelijk opnieuw te bouwen.
Een speciale cache is gerechtvaardigd wanneer werk vaak wordt herhaald, artefacten deterministisch zijn en de overdracht minder tijd kost dan opnieuw berekenen. De cache levert weinig op wanneer projecten klein zijn of apparaten zelden invoer delen.
Definieer cachesleutels en vertrouwensgrenzen
Sleutels moeten broncode-invoer, afhankelijkheidsvergrendelingen, de compiler- of runtimeversie, de doelarchitectuur, belangrijke omgevingsvlaggen en de buildstap bevatten. Een brede sleutel levert foutieve cache-hits op; een te specifieke sleutel levert geen hergebruik op.
Geef vertrouwde CI-taken schrijftoegang en overweeg alleen-lezen toegang voor ontwikkelaarsmachines of niet-vertrouwde branches. Een cache-item kan uitvoerbare bestanden bevatten, dus schrijven toestaan vanuit willekeurige code is een beslissing met gevolgen voor de softwaretoeleveringsketen.
Verschillende architecturen en generaties toolchains. Een laptop met Apple Silicon en een x86-Linux-runner kunnen gedownloade broncodepakketten delen, maar hebben mogelijk verschillende gecompileerde artefacten nodig.
Plaats de cache dicht bij het werk dat de meeste rekenkracht kost
| Cachepad | Sterk punt | Beperking |
|---|---|---|
| Lokaal per apparaat | Laagste latentie | Geen hergebruik tussen apparaten |
| LAN-cacheserver | Snel opnieuw gebruiken thuis | Niet beschikbaar als je niet thuis bent |
| Register of objectopslag | Werkt op verschillende locaties | Overhead voor upload en uitgaand verkeer |
| Externe buildhost | De cache blijft dicht bij de rekenkracht | Wordt uitvoeringsinfrastructuur |
| Lokaal en gedeeld | Snelle treffers en breed hergebruik | Meer beleid om te onderhouden |
Houd voor een thuisworkflow op elk apparaat een kleine lokale cache aan en een grotere gedeelde cache op de server. Ontwikkelaars op afstand kunnen de gedeelde laag alleen gebruiken als de netwerkverbinding sneller is dan opnieuw bouwen.
Houd de cache buiten beschermde gezinsmappen en back-upbestemmingen. Veel wijzigingen en automatische verwijdering horen thuis in een speciale dataset met een eigen quota.
Quota, garbage collection en cachemissers beheren
Stel een maximale omvang, hoge en lage drempelwaarden, een maximale leeftijd en een beleid voor grote items in. Houd het hitpercentage, overgedragen bytes, bespaarde bouwtijd, verwijderingspercentage en de tijd besteed aan cache-opzoekacties bij.
Een operationeel verslag over het draaien van een externe buildinfrastructuur merkt op dat cache-schijven sneller vol kunnen raken dan de garbage collection ze kan legen en dat netwerklatentie aan de staart de gemiddelde winst teniet kan doen.
Ga door bij uitval wanneer de cache niet beschikbaar is: de build moet opnieuw worden berekend in plaats van te stoppen. Herstel de service vanuit de configuratie en laat de cache opnieuw vullen, tenzij een specifieke cache onvervangbare provenancegegevens bevat.
Hanteer een grens voor cache of stoppen
Implementeer een speciale cache wanneer minstens twee apparaten dezelfde kostbare invoer opnieuw bouwen, het hitpercentage meetbaar is en één beleid voor vertrouwde schrijvers kan worden afgedwongen. Begin met één toolchain in plaats van meteen elke pakketbeheerder te cachen.
Splits cacheservices wanneer projecten verschillende vertrouwens-, bewaartermijn- of I/O-patronen hebben. Voeg SSD-capaciteit toe wanneer door verwijdering hot artifacts verdwijnen; voeg alleen netwerkcapaciteit toe wanneer overdrachten, en niet opzoekacties of compilatie, de gemeten bottleneck vormen. De testworkflow voor kleine SMB-bestanden kan helpen om overdrachtsbeperkingen door metadata te identificeren.
Breid de cache niet verder uit als het hitpercentage laag blijft of incidenten met invalidatie meer kosten dan de bespaarde bouwtijd oplevert. Een schone cachemisser is goedkoper dan een snel, maar onjuist artefact.
Definitieve installatieregel
De installatie slaagt wanneer elke service een benoemde rol, beschermde status, gecontroleerde toegangsroute, geteste herstelprocedure en meetbare trigger voor het splitsen of uitbreiden van de topologie heeft.
NAS- en serverconfiguratie
Meer om te lezen

Kan een server in een studentenkamer stil genoeg werken om te slapen, studeren en videogesprekken te voeren?
Ja, een server in een studentenkamer kan onopvallend blijven als de hardware energiezuinig is, trillingen van de opslag worden beperkt, zware taken worden ingepland...

Een studentenhomelab dat meeverhuist van de studentenkamer naar het eerste appartement
Houd een studentenhomelab draagbaar door services los te koppelen van de netwerkinfrastructuur in specifieke kamers, de hardware tot een minimum te beperken, een back-up...

Eén homeserver delen met huisgenoten zonder accounts of privébestanden te delen
Geef elke huisgenoot een eigen account, privéopslag en alleen de gedeelde rollen die nodig zijn; houd beheer, back-ups en het intrekken van toegang gescheiden.



