Cacha beroenden för högre hastighet
Implementera cachning för att avsevärt snabba upp körningen av era arbetsflöden genom att återanvända genererade beroenden och byggutdata.
Cacha beroenden för högre hastighet är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Accelerera arbetsflöden med cachning
Har ni någon gång lagt märke till att arbetsflödet laddar ned samma beroenden på nytt varje gång? Det gör körningen långsammare!
Cachning i GitHub Actions låter er lagra och återanvända filer från tidigare körningar. Det gör efterföljande arbetsflödeskörningar betydligt snabbare.
Lär känna cache-åtgärden
GitHub tillhandahåller en särskild åtgärd som heter actions/cache@v3. Den här åtgärden är utformad för att spara och återställa filer så att era arbetsflöden blir snabbare.
Den är smart: först kontrollerar den om cachen redan finns innan den försöker återställa den, och sparar den om den inte finns.
Cache-nyckel och sökväg
Två viktiga parametrar för actions/cache är key och path:
key: En unik sträng som identifierar er cache. Om en cache med den här nyckeln hittas återställs den.path: De filsökvägar eller kataloger som ni vill cacha. Detta anger för åtgärden *vad* som ska sparas eller återställas.
Nyckeln innehåller ofta en hash av beroendefiler för att säkerställa att cachen ogiltigförklaras när beroendena ändras.
Cacha Node.js-beroenden
Vi cachar node_modules för ett Node.js-projekt. Vi använder hashFiles för att skapa en dynamisk nyckel baserad på package-lock.json.
Prova att köra detta enkla arbetsflödesutdrag:
name: Node.js CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: node_modules
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testReservalternativ med restore-keys
Vad händer om er exakta key inte matchar någon cache? Då kommer restore-keys till nytta!
restore-keys tillhandahåller en lista med reservnycklar att söka efter. Om den primära nyckeln (till exempel npm-${{ hashFiles(...) }}) inte ger någon träff försöker GitHub Actions hitta en cache med hjälp av restore-keys, i tur och ordning.
I vårt exempel försöker npm- hitta en cache som börjar med "npm-", vilket är användbart om endast mindre ändringar har gjorts i beroendeversionerna.
Cacha Python-beroenden
Cachning är inte bara till för Node.js! Ni kan använda samma princip för andra språk, till exempel Python. Här cachar vi Pythons virtuella miljö och pip-cache.
Nyckeln använder här hashFiles('requirements.txt'), och sökvägen pekar på den virtuella miljön och pips cachekatalog.
name: Python CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/pip
.venv
key: pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
pip-
- name: Install dependencies
run: |
python -m venv .venv
.venv/bin/pip install -r requirements.txt
- name: Run tests
run: .venv/bin/python -m unittest discoverNär cachen ska ogiltigförklaras
En cache är bara användbar om den är tillräckligt aktuell. Om era beroenden ändras bör även cachen ändras!
Cachen ogiltigförklaras automatiskt om er primära key (till exempel npm-${{ hashFiles('package-lock.json') }}) ändras. Om package-lock.json uppdateras ändras hashen och en ny cache skapas.
Ni kan också tvinga fram en ny cache genom att ändra nyckeln manuellt, till exempel genom att lägga till ett versionssuffix som npm-v2-${{ hashFiles(...) }}.
Cacheomfattning och begränsningar
Det är bra att känna till hur cachning fungerar bakom kulisserna:
- Omfattning: Cachar avgränsas per repository och gren. En cache på grenen
mainanvänds inte på en funktionsgren, om ni inte uttryckligen konfigurerarlookup-path. - Storleksgräns: Varje cache får vara högst 10 GB.
- Bevarande: Cachar behålls i 7 dagar efter den senaste åtkomsten. Gamla, oanvända cachar tas bort automatiskt.
Smarta cachningsrutiner
Så får ni ut mesta möjliga av cachning:
- Använd
hashFiles: Knyt alltid cache-nyckeln till manifestfiler för beroenden, till exempelpackage-lock.jsonochrequirements.txt. - Var specifik med
path: Cacha endast det som behövs, till exempelnode_modulesoch~/.cache/pip. - Använd
restore-keys: Ange reservalternativ för att öka cacheträffsfrekvensen. - Undvik att cacha snabbt föränderlig data: Cacha inte filer som ändras ofta eller som är mycket stora och unika för varje körning, till exempel byggartefakter som ska driftsättas.
Utmaning: Cache-nyckel
Ni har ett Java-projekt som använder Maven. Dess beroenden definieras i pom.xml, och Maven lagrar vanligtvis nedladdade JAR-filer i ~/.m2/repository.
Vilken cachekonfiguration säkerställer bäst att Maven-beroendena cachas och ogiltigförklaras korrekt när pom.xml ändras?
Sammanfattning: Cache för ökad hastighet!
Bra jobbat! Ni har lärt er att implementera cachning i GitHub Actions för att avsevärt snabba upp era CI/CD-arbetsflöden.
- Åtgärden
actions/cacheär ert verktyg. - Använd
keyochpathför att definiera vad som ska cachas och hur. hashFilesskapar dynamiska nycklar för smart ogiltigförklaring.restore-keystillhandahåller värdefulla reservalternativ.
Genom att cacha beroenden på ett intelligent sätt sparar ni byggtid och beräkningsresurser, vilket gör era pipelines effektivare!
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Cacha beroenden för högre hastighet” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Cacha beroenden för högre hastighet”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Cacha beroenden för högre hastighet”?
Implementera cachning för att avsevärt snabba upp körningen av era arbetsflöden genom att återanvända genererade beroenden och byggutdata. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Cacha beroenden för högre hastighet”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Matrisbyggen för flera miljöer
- Cacha beroenden för högre hastighet
- Återanvändbara arbetsflöden och Actions
- Villkorsstyrd körning och jobbberoenden