Bufring av avhengigheter for raskere bygg
Gjør CI-pipelines raskere ved å bufre avhengigheter og byggartefakter med actions/cache-handlingen, nøkler og restore-keys.
Bufring av avhengigheter for raskere bygg er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Kostnaden ved å installere på nytt
Mesteparten av CI-tiden går med til å laste ned og installere de samme avhengighetene ved hver kjøring. Caching lagrer dem mellom kjøringer, slik at senere bygg kan gjenbruke arbeidet, ofte med en betydelig reduksjon i tiden det tar å kjøre pipelinen.
Cache-actionen
GitHub tilbyr actions/cache. Du angir en sti som skal caches, og en nøkkel som identifiserer cache-oppføringen. Ved et treff gjenopprettes stien. Hvis det ikke er noe treff, lagres den etter jobben.
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}Utforme en god nøkkel
Nøkkelen bør bare endres når det bufrede innholdet skal endres. Det er ideelt å hashe lockfile-filen: En ny lockfile betyr nye avhengigheter, så det opprettes en ny cache-oppføring.
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}Gjenopprettingsnøkler
restore-keys angir reserveprefikser. Hvis det ikke finnes et treff på den nøyaktige nøkkelen, gjenoppretter actionen den nyeste cachen der nøkkelen begynner med et prefiks, slik at byggingen får en delvis oppvarmet start.
restore-keys: |
${{ runner.os }}-npm-Cache-treff kontra cache-miss
Ved et eksakt treff på nøkkelen får du et cache-treff, og stien gjenopprettes. Ved en miss kjører jobben normalt, og cachen lagres på slutten med hovednøkkelen, klar til neste gang.
Innebygd caching i setup-actions
Actionene for oppsett av språk har innebygd caching. For Node håndterer setup-node med cache: npm cachen for avhengigheter for deg, så du trenger ikke et separat cache-trinn.
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npmHva som skal caches
Cache nedlastingsmappene til pakkebehandleren, ikke den installerte node_modules, når det er mulig. Nedlastingscacher kan brukes på tvers av miljøer, og installasjonstrinnet verifiserer fortsatt integriteten.
- Node:
~/.npm - Python: pip-cache
- Java:
~/.m2eller Gradle-cacher
Cache-omfang og begrensninger
Cacher er avgrenset til en gren, med reserve til standardgrenen, og har en størrelsesgrense per repo. Ubrukte cacher fjernes over tid, så utform nøkler som endres på en ryddig måte.
Unngå utdaterte cacher
Hvis nøkkelen aldri endres, kan du levere utdaterte avhengigheter. Knytt alltid nøkkelen til hashen av lockfile-filen, slik at oppdateringer automatisk gjør cachen ugyldig.
Matrix og operativsystem i nøkler
I matrix-bygg på tvers av operativsystemer eller versjoner inkluderer du runner.os og versjonen i nøkkelen, slik at hver variant får sin egen korrekte cache i stedet for å kollidere med de andre.
key: ${{ runner.os }}-node20-${{ hashFiles('package-lock.json') }}Måle gevinsten
Sammenlign jobbvarigheten før og etter caching, og følg med på indikatoren for cache-treff i loggene. En konsekvent lav treffrate tyder på at en nøkkel endres for ofte.
Hurtigsjekk
Test forståelsen din av caching av avhengigheter.
Oppsummering
Du satte fart på CI med caching av avhengigheter: actionen actions/cache med en nøkkel basert på hash av lockfile-filen og reserveprefikser via restore-keys, innebygd caching i setup-actions, bevisste valg av hva som skal caches, operativsystem og versjon i matrix-nøkler, og beskyttelse mot utdaterte cacher ved å knytte nøkkelen til lockfile-filen.
Lær deg DevOps-bootcamp med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 142
- Leksjoner
- 568
Ofte stilte spørsmål
Er leksjonen «Bufring av avhengigheter for raskere bygg» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Bufring av avhengigheter for raskere bygg», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.
Hva lærer jeg i «Bufring av avhengigheter for raskere bygg»?
Gjør CI-pipelines raskere ved å bufre avhengigheter og byggartefakter med actions/cache-handlingen, nøkler og restore-keys. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med DevOps-bootcamp?
Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Bufring av avhengigheter for raskere bygg»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?
Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Utløsere og hendelser for arbeidsflyter
- Kjøre tester med GitHub Actions
- Linting og kodekvalitetskontroller
- Bufring av avhengigheter for raskere bygg