Avanceret Git: Monorepoer, undermoduler og arbejdsgange · Lektion

Build-caching og builds kun for berørte projekter

Hold monorepo-CI hurtigt, efterhånden som det vokser: brug task graphs, computation caching og registrering af berørte projekter til kun at bygge og teste det, der er ændret.

Lektion 4 af 413 trin

Build-caching og builds kun for berørte projekter er en gratis Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Avanceret Git: Monorepoer, undermoduler og arbejdsgange, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset indeholder 4 lektioner i alt.

Skaleringsmuren

Når et monorepo vokser, bliver det smerteligt langsomt at bygge og teste alt igen ved hvert commit.

Løsningen er kun at udføre det arbejde, ændringen faktisk kræver, og at cache resultater, der ikke er ændret.

Projektets afhængighedsgraf

Monorepo-værktøjer opbygger en graf over, hvordan projekter afhænger af hinanden. Grafen fortæller værktøjet, hvad der ligger downstream for en given ændring.

nx graph

Registrering af berørte projekter

Ved at sammenligne din branch med et basiscommit beregner værktøjet mængden af berørte projekter — dem, der er ændret, plus alt, der afhænger af dem.

nx affected --target=test --base=main

Hvorfor kun berørte projekter

Hvis du ændrer et bladbibliotek, skal kun det selv og dets brugere bygges igen — uvedkommende apps berøres ikke. På store projektarkiver kan det reducere CI-tiden fra timer til minutter.

Caching af beregninger

Værktøjer beregner en hash af en opgaves input (kildefiler, konfiguration og afhængigheder). Hvis hashen matcher en tidligere kørsel, afspilles det cachede output i stedet for at beregne det igen.

Hvad hashen indeholder

Cache-nøglen kombinerer:

  • Indholdet af kildefiler
  • Den præcise kommando og dens indstillinger
  • Versioner af afhængigheder
  • Relevante miljøvariabler

Enhver ændring af disse ugyldiggør cacheposten.

Lokal kontra fjern-cache

En lokal cache gør dine egne gentagne kørsler hurtigere. En fjern-cache deler resultater på tværs af hele teamet og CI, så arbejde, der udføres én gang, kommer alle til gode.

nx run-many --target=build --all

Cache-træffere og -miskes

Et hit afspiller gemt output med det samme; et miss kører opgaven og gemmer resultatet. Værktøjer rapporterer dette, så du kan se den sparede tid.

Cachingens korrekthed

Caching er kun sikkert, hvis opgaverne er deterministiske, og input er deklareret korrekt. Skjult input (tidsstempler, netværkskald) kan give forældede eller forkerte cache-træffere.

Integration i CI

I CI skal du køre berørte mål mod mergebasen og aktivere fjern-cachen. Hver pipeline udfører derefter det mindst mulige arbejde og genbruger delte resultater.

nx affected --target=build,test,lint --base=origin/main

Værktøjslandskabet

Populære værktøjer tilbyder disse funktioner: Nx og Turborepo til JS/TS, Bazel til polyglotprojekter i stor skala samt Gradle/Pants til JVM. Begreberne er de samme i dem alle.

Hurtigt tjek

Test din viden om byggeoptimering.

Opsummering

Du kan nu holde monorepo-CI hurtigt i stor skala:

  • Brug projektets afhængighedsgraf til at beregne det berørte arbejde
  • Cache opgaveresultater baseret på hashede input
  • Del resultater via en fjern-cache på tværs af teamet og CI
  • Hold opgaverne deterministiske, så caching forbliver korrekt

Dette udvider dine lektioner om afhængighedsstyring og CI/CD-strategi.

Gratis at komme i gang

Lær Avanceret Git: Monorepoer, undermoduler og arbejdsgange 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
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Build-caching og builds kun for berørte projekter” gratis?

Ja — hele teksten til “Build-caching og builds kun for berørte projekter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset, skal du opgradere til CoddyKit PRO. Avanceret Git: Monorepoer, undermoduler og arbejdsgange-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Build-caching og builds kun for berørte projekter”?

Hold monorepo-CI hurtigt, efterhånden som det vokser: brug task graphs, computation caching og registrering af berørte projekter til kun at bygge og teste det, der er ændret. Du øver dig i Avanceret Git: Monorepoer, undermoduler og arbejdsgange 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å Avanceret Git: Monorepoer, undermoduler og arbejdsgange?

Der kræves ingen tidligere erfaring. Avanceret Git: Monorepoer, undermoduler og arbejdsgange 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 “Build-caching og builds kun for berørte projekter”?

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 Avanceret Git: Monorepoer, undermoduler og arbejdsgange-lektion?

Ja. Alle Avanceret Git: Monorepoer, undermoduler og arbejdsgange-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. Afhængighedsstyring i monorepos
  2. Atomiske commits og ændringer på tværs af projekter
  3. Monorepo-strategier for CI/CD
  4. Build-caching og builds kun for berørte projekter
← Tilbage til Avanceret Git: Monorepoer, undermoduler og arbejdsgange