CI/CD med GitHub Actions og DevOps-pipelines · 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 CI/CD med GitHub Actions og DevOps-pipelines på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CI/CD med GitHub Actions og DevOps-pipelines, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CI/CD med GitHub Actions og DevOps-pipelines 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 CI/CD med GitHub Actions og DevOps-pipelines 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
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Bufring av avhengigheter for raskere bygg» gratis?

Ja – hele teksten i «Bufring av avhengigheter for raskere bygg» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CI/CD med GitHub Actions og DevOps-pipelines-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CI/CD med GitHub Actions og DevOps-pipelines 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å CI/CD med GitHub Actions og DevOps-pipelines 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 CI/CD med GitHub Actions og DevOps-pipelines?

Ingen tidligere erfaring er nødvendig. CI/CD med GitHub Actions og DevOps-pipelines 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 CI/CD med GitHub Actions og DevOps-pipelines-leksjonen?

Ja. Alle CI/CD med GitHub Actions og DevOps-pipelines-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 CI/CD med GitHub Actions og DevOps-pipelines