CI/CD med GitHub Actions og DevOps-arbejdsgange · Lektion

Tuning af pipeline-ydeevne

Identificér flaskehalse, og anvend avancerede teknikker til at optimere kørehastighed og ressourceforbrug i Deres GitHub Actions-workflows.

Lektion 2 af 410 trin

Tuning af pipeline-ydeevne er en gratis CI/CD med GitHub Actions og DevOps-arbejdsgange-lektion på CoddyKit. Dette er lektion 2 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 CI/CD med GitHub Actions og DevOps-arbejdsgange, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset indeholder 4 lektioner i alt.

Gør dit pipelineforløb hurtigere

Velkommen til optimering af pipelineforløb! I moderne udvikling er hurtige CI/CD-forløb afgørende for hurtig feedback og effektiv udnyttelse af ressourcer.

Langsomme pipelineforløb spilder tid og penge. I denne lektion lærer du avancerede teknikker til at identificere flaskehalse og gøre dine GitHub Actions-arbejdsgange markant hurtigere.

Find flaskehalse i arbejdsgange

Før du optimerer, skal du vide, *hvad* der skal optimeres. GitHub Actions indeholder fremragende værktøjer til at finde langsomme trin eller job.

  • GitHub-brugerfladen: Se logfiler for kørsler af arbejdsgange. Tidslinjevisningen viser tydeligt, hvor lang tid hvert job og trin tog.
  • Joboversigter: Se efter trin med usædvanligt lange varigheder.
  • Handlingslogge: Detaljerede logge kan afsløre bestemte kommandoer eller processer, der bruger mest tid.

Fokuser på de trin, der konsekvent tager længst tid.

Kør uafhængige job parallelt

Hvis dele af din arbejdsgang ikke afhænger af hinanden, så kør dem samtidig! Det er en enkel, men effektiv måde at forkorte den samlede kørselstid på.

Definér flere job på øverste niveau i din arbejdsgang. GitHub Actions kører dem som standard parallelt, så længe du ikke angiver needs-afhængigheder mellem dem.

name: Parallel Jobs Example
on: [push]
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Building frontend..."
  build-backend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Backend
        run: echo "Building backend..."

Optimer Checkout-handlingen

Handlingen actions/checkout henter koden fra dit arkiv. For store arkiver eller arkiver med en omfattende historik kan det gå langsomt. Optimér den:

  • Overfladisk kloning: Brug fetch-depth: 1 til kun at hente den seneste commit, hvilket sparer betydelig tid ved de fleste CI/CD-opgaver.
  • Selektiv Checkout: Hvis du kun har brug for en delmængde af filer, kan du overveje selektiv Checkout (selvom det ofte er mere komplekst at sætte op).

Undgå fetch-depth: 0, medmindre det er absolut nødvendigt, da det henter hele historikken.

name: Optimized Checkout
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1 # Only fetch the latest commit
      - name: Run Build
        run: echo "Code checked out and building..."

Reducer størrelsen på build-artefakter

Hvis din arbejdsgang uploader eller downloader artefakter (f.eks. kompilerede binærfiler eller testrapporter), påvirker deres størrelse ydeevnen direkte.

Sådan gør du det hurtigere:

  • Medtag kun nødvendige filer: Upload ikke midlertidige build-mapper eller logge, du ikke har brug for.
  • Komprimér artefakter: Komprimér om muligt store artefakter før upload. Handlingen actions/upload-artifact håndterer automatisk komprimering, men sørg for, at dine kildefiler er så små som muligt.

Stifiltrering for effektivitet

Ikke alle kodeændringer behøver at udløse hvert job. Brug stifiltrering til kun at køre job, når relevante filer ændres.

Det er især nyttigt i større arkiver, hvor en ændring i dokumentationen ikke bør udløse et komplet backend-build.

Angiv paths eller paths-ignore i udløseren on i din arbejdsgang.

name: Path Filter Example
on:
  push:
    paths:
      - 'frontend/**'
      - 'shared/**'
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Frontend files changed, building..."

Hurtigere kørselsmiljøer og ressourcefordeling

De virtuelle maskiner (kørselsmiljøer), der udfører dine arbejdsgange, findes i forskellige størrelser og typer. Til CPU-intensive opgaver kan et kraftigere kørselsmiljø reducere kørselstiden markant.

  • Større GitHub-hostede kørselsmiljøer: GitHub tilbyder større kørselsmiljøer (f.eks. ubuntu-latest-xlarge) til mere krævende arbejdsbelastninger.
  • Selvhostede kørselsmiljøer: Hvis du har meget specifikke hardwarebehov eller vil minimere netværksforsinkelsen til interne ressourcer, kan selvhostede kørselsmiljøer optimeres til netop dine krav.

Avancerede strategier for caching

Caching af afhængigheder (f.eks. npm-pakker eller Maven-artefakter) er afgørende. Gå videre end grundlæggende caching med disse tip:

  • Detaljerede cache-nøgler: Brug mere specifikke cache-nøgler for at undgå unødvendige cache-mis. Medtag f.eks. en hash af en bestemt lock-fil og operativsystemet.
  • Flere cacher: Læg ikke alt i én stor cache. Separate cacher til forskellige typer afhængigheder (f.eks. node_modules og pip-pakker) kan forbedre træfraten.
  • Gendannelsesnøgler: Brug restore-keys til at prøve flere cache-nøgler, hvis den primære ikke rammer, så sandsynligheden for et delvist hit øges.
name: Advanced Caching
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Cache Node Modules
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: | # Try less specific keys if primary misses
            ${{ runner.os }}-node-
      - name: Install Dependencies
        run: npm ci

Optimér denne arbejdsgang

Forestil dig en arbejdsgang, der bygger både frontend- og backend-kode. Den kører i øjeblikket sekventielt, og Checkout henter hele historikken. Hvilke to ændringer vil forbedre ydeevnen markant?

name: Inefficient Workflow
on: [push]
jobs:
  build-all:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Frontend Deps
        run: npm install
      - name: Build Frontend
        run: npm run build
      - name: Install Backend Deps
        run: pip install -r requirements.txt
      - name: Build Backend
        run: python setup.py build

Opsummering: Optimering af hastighed

Du har lært effektive teknikker til at optimere dine GitHub Actions-arbejdsgange!

  • Identificér flaskehalse: Brug GitHub-brugerfladen og logge.
  • Kør job parallelt: Kør uafhængige opgaver samtidigt.
  • Optimér Checkout: Brug overfladiske kloner.
  • Reducer artefakter: Hold upload- og downloadstørrelserne små.
  • Stifiltrering: Kør kun job, når relevante filer ændres.
  • Hurtigere kørselsmiljøer: Vælg passende ressourcer til kørselsmiljøet.
  • Avanceret caching: Brug detaljerede nøgler og flere cacher.

Ved at anvende disse strategier kan du gøre dine pipelineforløb hurtigere og mere effektive samt spare værdifuld tid og ressourcer.

Gratis at komme i gang

Lær CI/CD med GitHub Actions og DevOps-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 “Tuning af pipeline-ydeevne” gratis?

Ja — hele teksten til “Tuning af pipeline-ydeevne” 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 CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset, skal du opgradere til CoddyKit PRO. CI/CD med GitHub Actions og DevOps-arbejdsgange-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Tuning af pipeline-ydeevne”?

Identificér flaskehalse, og anvend avancerede teknikker til at optimere kørehastighed og ressourceforbrug i Deres GitHub Actions-workflows. Du øver dig i CI/CD med GitHub Actions og DevOps-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å CI/CD med GitHub Actions og DevOps-arbejdsgange?

Der kræves ingen tidligere erfaring. CI/CD med GitHub Actions og DevOps-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 2 af 4.

Hvor lang tid tager lektionen “Tuning af pipeline-ydeevne”?

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 CI/CD med GitHub Actions og DevOps-arbejdsgange-lektion?

Ja. Alle CI/CD med GitHub Actions og DevOps-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. DORA-metrics og CI/CD-sundhed
  2. Tuning af pipeline-ydeevne
  3. Fremtidige tendenser inden for DevOps-automatisering
  4. Optimering af CI/CD-omkostninger og runner-effektivitet
← Tilbage til CI/CD med GitHub Actions og DevOps-arbejdsgange