Intensiv DevOps-uddannelse · Lektion

Caching af afhængigheder til hurtigere builds

Gør CI-pipelines hurtigere ved at cache afhængigheder og build-artefakter med actions/cache-actionen, keys og restore-keys.

Lektion 4 af 413 trin

Caching af afhængigheder til hurtigere builds er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Omkostningen ved geninstallation

Det meste af CI-tiden går med at downloade og installere de samme afhængigheder ved hver kørsel. Cachelagring gemmer dem mellem kørsler, så efterfølgende builds kan genbruge arbejdet og ofte forkorte CI-forløbet markant.

Cachehandlingen

GitHub stiller actions/cache til rådighed. Du angiver en sti, der skal caches, og en nøgle, som identificerer cacheposten. Ved et træf gendanner den stien; ellers gemmer den den efter jobbet.

- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: npm-${{ hashFiles('package-lock.json') }}

Udformning af en god nøgle

Nøglen bør kun ændres, når det cachelagrede indhold bør ændres. Det er ideelt at hashe låsefilen: En ny låsefil betyder nye afhængigheder, så der oprettes en ny cachepost.

key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}

Gendannelsesnøgler

restore-keys angiver reservepræfikser. Hvis den nøjagtige nøgle ikke findes, gendanner handlingen den seneste cache, hvis nøgle begynder med et af præfikserne, så du får en delvist forberedt start.

restore-keys: |
  ${{ runner.os }}-npm-

Cachetræf over for cachefejl

Ved et nøjagtigt match på nøglen får du et cachetræf, og stien gendannes. Hvis der ikke er noget træf, kører jobbet normalt, og cachen gemmes til sidst med den primære nøgle, så den er klar næste gang.

Indbygget cachelagring i opsætningen

Handlingerne til opsætning af programmeringssprog har indbygget cachelagring. For Node håndterer setup-node med cache: npm afhængighedscachen for dig, så der ikke er brug for et separat cachetrin.

- uses: actions/setup-node@v4
  with:
    node-version: 20
    cache: npm

Hvad skal caches

Cachelag mapper til download fra pakkehåndteringen, ikke de installerede node_modules, når det er muligt, fordi downloadcacher kan flyttes, og installationstrinnet stadig kontrollerer integriteten.

  • Node: ~/.npm
  • Python: pip-cache
  • Java: ~/.m2 eller Gradle-cacher

Cachens omfang og begrænsninger

Cacher er afgrænset til en gren med reserve på standardgrenen og har en størrelsesgrænse pr. lager. Ubrugte cacher fjernes med tiden, så udform nøgler, der ændres rent.

Undgå forældede cacher

Hvis din nøgle aldrig ændres, kan du levere forældede afhængigheder. Knyt altid nøglen til låsefilens hash, så opdateringer automatisk ugyldiggør cachen.

Matrix og styresystem i nøgler

Ved matrix-builds på tværs af styresystemer eller versioner skal du medtage runner.os og versionen i nøglen, så hver variant får sin egen korrekte cache i stedet for at kollidere med de andre.

key: ${{ runner.os }}-node20-${{ hashFiles('package-lock.json') }}

Mål gevinsten

Sammenlign jobvarigheden før og efter cachelagring, og hold øje med indikatoren for cachetræf i loggene. En vedvarende lav træfprocent er et tegn på, at nøglen ændres for ofte.

Hurtigt tjek

Test din forståelse af cachelagring af afhængigheder.

Opsummering

Du har gjort CI hurtigere med cachelagring af afhængigheder: handlingen actions/cache med en nøgle baseret på låsefilens hash og en reserve via restore-keys, indbygget cachelagring i opsætningshandlinger, valg af hvad der skal caches, medtagelse af styresystem og version i matrixnøgler samt undgåelse af forældede cacher ved at knytte nøglen til låsefilen.

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Caching af afhængigheder til hurtigere builds” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Caching af afhængigheder til hurtigere builds”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Caching af afhængigheder til hurtigere builds”?

Gør CI-pipelines hurtigere ved at cache afhængigheder og build-artefakter med actions/cache-actionen, keys og restore-keys. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Caching af afhængigheder til hurtigere builds”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Workflow-triggere og events
  2. Kørsel af tests med GitHub Actions
  3. Linting og kontrol af kodekvalitet
  4. Caching af afhængigheder til hurtigere builds
← Tilbage til Intensiv DevOps-uddannelse