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.
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.shKontekstobjekter
Betingelser hentes fra kontekstobjekter som beskriver kjøringen:
github— hendelse, ref, aktør, shaenv— miljøvariablerjobogsteps— status for tidligere arbeidrunner— 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 mislyktesalways()— kjører uansett hva som skjercancelled()— 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: ./logsJobbavhengigheter 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.shFlere 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.shBruke 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_OUTPUTKombinere 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.
ifstyrer trinn og jobber basert på uttrykk- Statusfunksjoner som
failure()ogalways()overstyrer at kjøring hoppes over ved feil needsoppretter rekkefølge- og fan-in-mønstre- Jobb-
outputsleverer verdier til senere betingelser
Disse byggesteinene gjør det mulig å lage presise og effektive pipelines.
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
- Matrisebygg for flere miljøer
- Bufring av avhengigheter for økt hastighet
- Gjenbrukbare arbeidsflyter og Actions
- Betinget kjøring og jobbavhengigheter