Hoppa till innehåll

runnerhut

Guider

Lösningar på de CI-problem team faktiskt stöter på.

Cachning16

Hur man får CI-cacher att beståCacheminne är konfigurerade men träfffrekvensen är låg.Hur man undviker cachegränsen på 10 GBDina cacheminne överstiger 10 GB per förråd och börjar tyst vräka.Hur man delar en build-cache mellan arkivVarje förråd har sin egen cache för samma delade beroenden.Hur man delar en Docker-cache mellan jobbVarje matrisben bygger om samma lager.Hur man åtgärdar Docker cache-ogiltigförklaringDocker lager byggs om även när de relevanta filerna inte ändrades.Hur man skriver en cache-nyckel som träffarCachen är konfigurerad men missar vid varje körning.Hur man använder cache i GitHub ActionsC- och C++-byggen kompilerar om allt vid varje körning.Hur man använder sccache för Rust-byggenCargo bygger om beroenden när målkatalogcachen missar.Hur man aktiverar Gradle-konfigurationscachenGradle lägger 30 till 60 sekunder på att konfigurera innan han kompilerar något.Hur man cachelagrar verktygskedjehanteraremise, asdf eller proto installera om språkkörningstider vid varje körning.Hur man cachelagrar NuGet-paketdotnet restore laddar ner samma paket vid varje körning.Hur man cachelagrar Jest transformsJest omvandlar varje fil vid varje körning.Hur man cachelagrar vcpkg och Conan-paketC++ beroendehanterare bygger om paket från källkod vid varje körning.Hur man cachelagrar Xcode DerivedDataXcode bygger om hela projektet vid varje CI-körning.Att välja en buildx-cache-backendDet finns fyra cache-backends och det är oklart vilka som ska användas.Hur man håller basgrencachen varmNya funktionsgrenar börjar alltid med en kall cache.

Skala28

Hur man skalar självvärdiga löpareLöpare som är självvärdar ställer sig antingen i kö på topp eller sitter sysslolösa och dyra.Hur man använder löpargrupperAlla förråd kan schemalägga jobb på vilken löpare som helst.Hur man utformar en strategi för löparetiketterEtiketter växte ekologiskt och ingen vet vilka de ska använda.Hosted eller BYOC: hur man väljerDu är osäker på om du ska använda värdbaserade löpare eller distribuera i ditt eget moln.Hur man använder återanvändbara arbetsflöden i stor skalaFemtio förråd har femtio något olika kopior av samma pipeline.Hur man koordinerar arbetsflöden över arkivEn förändring i ett arkiv måste utlösa byggnationer i andra.Hur man bygger anpassade löparbilderVarje jobb ägnar minuter åt att installera samma verktyg.Hur man rullar ut basbilduppdateringar på ett säkert sättEn basbilduppdatering bryter byggen över många arkiv samtidigt.Hur man hanterar CI-belastning för beroendebotDependabot öppnar trettio pull-förfrågningar och CI-kostnadstoppar.Hur man arbetar med samtidighetsgränserJobbkö och det framgår inte vilken gräns som är bindande.Hur man använder containerjobb effektivtContainerjobb ger reproducerbarhet men bryter cachelagring.Hur man använder servicebehållare på rätt sättTesterna misslyckas periodvis vid start.Hur man bygger en gång och distribuerar många gångerSamma artefakt byggs om för varje miljö.Hur man strukturerar utbyggnadsjobbImplementeringarna är långsamma, riskfyllda och svåra att granska.Hur man kör förhandsgranskningsmiljöer effektivtVarje pull-begäran väntar på en komplett miljöbyggnad.Hur man strukturerar release buildsUtgivningsbyggen är långsamma och ibland inte reproducerbara.Hur man publicerar byggartefakterLagringskostnaderna för artefakter ökar och retention konfigurerades aldrig.Hur man hanterar stora artefaktuppladdningarAtt ladda upp build-utdata tar några minuter.Hur man får inkrementella byggnader i CICI gör alltid en ren build även om ditt byggsystem stöder inkrementell kompilering.Hur man skickar data mellan jobbJobb måste dela byggproduktion och det är oklart hur.Hur man använder matris bygger braMatrisen har växt och ingen kommer ihåg varför varje kombination existerar.Hur man kontrollerar matrisexplosionEn liten matrisbyte tredubblade antalet jobb och räkningen.Hur man storleksanpassar löpare för Java-byggenDu gissar på en löparstorlek för ett Maven- eller Gradle-bygge.Hur man storleksanpassar löpare för Node-testsviterJost- eller Vitest-arbetare svälter eller slår och du är inte säker på vilken.Hur man storleksanpassar löpare för Python-testsviterpytest körs på en kärna medan löparen har åtta lediga.Hur man dimensionerar löpare för Rust-byggenCargo bygger skala med kärnor, men det är oklart hur långt det räcker.Hur man dimensionerar löpare för Docker-byggenDu väljer en löparstorlek för bildbyggen.Hur man storleksanpassar löpare för Android-byggenGradle monteringar och instrumentering tester kräver mycket olika maskiner.