DevOps-bootcamp · leksjon

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.

Leksjon 4 av 413 trinn

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: npm

Hva 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: ~/.m2 eller 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.

Gratis å komme i gang

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

  1. Utløsere og hendelser for arbeidsflyter
  2. Kjøre tester med GitHub Actions
  3. Linting og kodekvalitetskontroller
  4. Bufring av avhengigheter for raskere bygg
← Tilbake til DevOps-bootcamp