DevOps-bootcamp · leksjon

Betinget kjøring og jobbavhengigheter

Styr når trinn og jobber kjøres ved hjelp av if-betingelser, nøkkelordet needs, uttrykk og funksjoner for statussjekk i GitHub Actions-arbeidsflyter.

Leksjon 4 av 413 trinn

Betinget kjøring og jobbavhengigheter 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.

Hvorfor betingelser er viktige

Ikke alle trinn bør kjøres hver gang. Du kan for eksempel ønske at et utrullingstrinn bare skal kjøre på grenen main, eller at et varslingstrinn bare skal kjøre når noe mislyktes.

GitHub Actions lar deg knytte en if-betingelse til et hvilket som helst trinn eller en hvilken som helst jobb for å styre om den kjøres.

if-nøkkelen

Legg til nøkkelen if: i et trinn. Trinnet kjører bare når uttrykket evalueres til true.

Uttrykk inne i if trenger ikke omslutningen ${{ }}, selv om den er tillatt.

steps:
  - name: Deploy
    if: github.ref == 'refs/heads/main'
    run: ./deploy.sh

Kontekstobjekter

Betingelser hentes fra kontekstobjekter som beskriver kjøringen:

  • github — hendelse, ref, aktør, sha
  • env — miljøvariabler
  • job og steps — status for tidligere arbeid
  • runner — operativsystem og arkitektur

For eksempel forteller github.event_name om en push eller pull_request utløste kjøringen.

Statuskontrollfunksjoner

Som standard hoppes et trinn over hvis et tidligere trinn mislyktes. Dette kan overstyres ved å bruke statusfunksjonene:

  • success() — sann hvis ingen tidligere trinn mislyktes (standardinnstillingen)
  • failure() — sann hvis et tidligere trinn mislyktes
  • always() — kjører uansett hva som skjer
  • cancelled() — sann hvis kjøringen ble avbrutt
  - name: Notify on failure
    if: failure()
    run: echo 'Build failed, sending alert'

Alltid kjøre opprydding

Et vanlig mønster er et oppryddingstrinn som må kjøre selv om tidligere trinn mislyktes. Bruk if: always().

Dette garanterer at midlertidige ressurser, containere eller testrapporter håndteres uavhengig av utfallet.

  - name: Upload logs
    if: always()
    uses: actions/upload-artifact@v4
    with:
      name: logs
      path: ./logs

Jobbavhengigheter med needs

Nøkkelordet needs får én jobb til å vente på andre. Uten dette kjører jobbene parallelt.

En jobb som er oppført i needs, må fullføres uten feil før den avhengige jobben starter.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: npm test
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Flere avhengigheter

En jobb kan avhenge av flere jobber ved å sende en liste til needs. Den venter på alle.

Slik bygger De fan-in-mønstre, der en avsluttende jobb bare kjører etter at alle parallelle jobber er fullført uten feil.

  release:
    needs: [lint, test, build]
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all checks passed'

Betingede jobber

Nøkkelen if fungerer også på jobber, ikke bare på trinn. En betingelse på jobb-nivå avgjør om hele jobben skal kjøre.

Her kjører deploy-jobben bare for push-er til main, samtidig som den fortsatt avhenger av testene.

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Bruke jobb-outputs

Jobber kan sende data videre via outputs. En avhengig jobb leser dem gjennom needs-konteksten.

Dette gjør det mulig å la en betingelse avhenge av en verdi som ble beregnet tidligere, for eksempel om en versjon ble endret.

  check:
    runs-on: ubuntu-latest
    outputs:
      changed: ${{ steps.diff.outputs.changed }}
    steps:
      - id: diff
        run: echo 'changed=true' >> $GITHUB_OUTPUT

Kombinere betingelser

Uttrykk kan kombineres med && (og), || (eller) og ! (ikke).

Dette eksempelet kjører bare ved en vellykket push til main som ikke kommer fra en fork.

    if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'

if always med needs

Vær oppmerksom på at en jobb med needs hoppes over hvis en avhengighet mislykkes. Kombiner needs med if: always() for å kjøre en avsluttende rapporteringsjobb uansett.

Inne i jobben kan De undersøke needs.<job>.result for å avgjøre hva som skal rapporteres.

  report:
    needs: [test, build]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo ${{ needs.test.result }}

Kort sjekk

Test forståelsen av betinget kjøring.

Oppsummering

De har lært å styre arbeidsflyten med betingelser og avhengigheter.

  • if styrer trinn og jobber basert på uttrykk
  • Statusfunksjoner som failure() og always() overstyrer at kjøring hoppes over ved feil
  • needs oppretter rekkefølge- og fan-in-mønstre
  • Jobb-outputs leverer verdier til senere betingelser

Disse byggesteinene gjør det mulig å lage presise og effektive pipelines.

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 «Betinget kjøring og jobbavhengigheter» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Betinget kjøring og jobbavhengigheter», 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 «Betinget kjøring og jobbavhengigheter»?

Styr når trinn og jobber kjøres ved hjelp av if-betingelser, nøkkelordet needs, uttrykk og funksjoner for statussjekk i GitHub Actions-arbeidsflyter. 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 «Betinget kjøring og jobbavhengigheter»?

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. Matrisebygg for flere miljøer
  2. Bufring av avhengigheter for økt hastighet
  3. Gjenbrukbare arbeidsflyter og Actions
  4. Betinget kjøring og jobbavhengigheter
← Tilbake til DevOps-bootcamp