Ehdollinen suoritus ja työtehtävien riippuvuudet
Hallitkaa vaiheiden ja työtehtävien suoritusajankohtaa GitHub Actions -työnkuluissa if-ehtojen, needs-avainsanan, lausekkeiden ja tilantarkistusfunktioiden avulla.
Ehdollinen suoritus ja työtehtävien riippuvuudet on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Miksi ehdoilla on merkitystä
Kaikkia vaiheita ei pidä suorittaa joka kerta. Voitte esimerkiksi haluta käyttöönottovaiheen suorittuvan vain main-haarassa tai ilmoitusvaiheen suorittuvan vain, kun jokin epäonnistui.
GitHub Actionsissa voitte liittää mihin tahansa vaiheeseen tai työhön if-ehdon, jolla hallitaan sen suorittamista.
if-avain
Lisätkää vaiheeseen if:-avain. Vaihe suoritetaan vain, jos lauseke arvioituu arvoksi true.
if-lausekkeiden ympärille ei tarvitse lisätä ${{ }}-käärettä, vaikka sen käyttö on sallittua.
steps:
- name: Deploy
if: github.ref == 'refs/heads/main'
run: ./deploy.shKontekstiobjektit
Ehdot luetaan kontekstiobjekteista, jotka kuvaavat suoritusta:
github— event, ref, actor, shaenv— ympäristömuuttujatjobjasteps— aiemman työn tilarunner— käyttöjärjestelmä ja arkkitehtuuri
Esimerkiksi github.event_name kertoo, käynnistikö suorituksen push vai pull_request.
Tilantarkistusfunktiot
Oletusarvoisesti vaihe ohitetaan, jos aiempi vaihe epäonnistui. Voitte ohittaa tämän toiminnan käyttämällä tilafunktioita:
success()— tosi, jos mikään aiempi vaihe ei epäonnistunut (oletus)failure()— tosi, jos jokin aiempi vaihe epäonnistuialways()— suoritetaan joka tapauksessacancelled()— tosi, jos suoritus peruutettiin
- name: Notify on failure
if: failure()
run: echo 'Build failed, sending alert'Suorita siivous aina
Yleinen toimintamalli on siivousvaihe, joka on suoritettava, vaikka aiemmat vaiheet olisivat epäonnistuneet. Käyttäkää ehtoa if: always().
Näin varmistetaan, että väliaikaiset resurssit, säilöt tai testiraportit käsitellään tuloksesta riippumatta.
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: ./logsTyöriippuvuudet needs-avainsanalla
needs-avainsana saa yhden työn odottamaan muita töitä. Ilman sitä työt suoritetaan rinnakkain.
needs-kohdassa luetellun työn on valmistuttava onnistuneesti, ennen kuin siitä riippuvainen työ käynnistyy.
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- run: ./deploy.shUseat riippuvuudet
Työ voi riippua useista töistä välittämällä luettelon needs-kohtaan. Se odottaa kaikkien niiden valmistumista.
Näin muodostetaan fan-in-rakenteita, joissa lopullinen työ suoritetaan vasta, kun kaikki rinnakkaiset työt ovat onnistuneet.
release:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- run: echo 'all checks passed'Ehdolliset työt
if-avain toimii myös töissä, ei vain vaiheissa. Työtason ehto ratkaisee, suoritetaanko koko työ.
Tässä deploy-työ suoritetaan vain main-haaraan tehtyjen pushien yhteydessä, mutta se riippuu edelleen testeistä.
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: ./deploy.shTyön tulosteiden käyttäminen
Työt voivat välittää tietoja seuraaville töille outputs-arvojen avulla. Riippuvainen työ lukee ne needs-kontekstin kautta.
Näin ehto voi perustua aiemmin laskettuun arvoon, kuten siihen, muuttuiko versio.
check:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.diff.outputs.changed }}
steps:
- id: diff
run: echo 'changed=true' >> $GITHUB_OUTPUTEhtojen yhdistäminen
Voitte yhdistää lausekkeita operaattoreilla && (ja), || (tai) ja ! (ei).
Tämä esimerkki suoritetaan vain onnistuneen main-haaraan tehdyn pushin yhteydessä, jos kyseessä ei ole fork.
if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'if always() needs-avainsanan kanssa
Toimikaa varoen: needs-riippuvuuden sisältävä työ ohitetaan, jos riippuvuus epäonnistuu. Jos haluatte lopullisen raportointityön suoritettavan tästä riippumatta, yhdistäkää needs ja if: always().
Sen sisällä voitte tarkastella arvoa needs.<job>.result ja päättää, mitä raportoidaan.
report:
needs: [test, build]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo ${{ needs.test.result }}Pikatarkistus
Testatkaa, miten hyvin ymmärrätte ehdollisen suorituksen.
Kertaus
Opitte hallitsemaan työnkulun etenemistä ehtojen ja riippuvuuksien avulla.
ifrajoittaa vaiheiden ja töiden suoritusta lausekkeiden perusteella- Tilafunktiot, kuten
failure()jaalways(), ohittavat epäonnistumisen jälkeisen ohituksen needsmuodostaa suoritusjärjestyksiä ja fan-in-rakenteita- Töiden
outputs-arvot välittävät arvoja myöhempiin ehtoihin
Näiden peruspalikoiden avulla voitte rakentaa täsmällisiä ja tehokkaita pipelineja.
Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 142
- Oppitunnit
- 568
Usein kysytyt kysymykset
Onko oppitunti ”Ehdollinen suoritus ja työtehtävien riippuvuudet” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Ehdollinen suoritus ja työtehtävien riippuvuudet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ehdollinen suoritus ja työtehtävien riippuvuudet”?
Hallitkaa vaiheiden ja työtehtävien suoritusajankohtaa GitHub Actions -työnkuluissa if-ehtojen, needs-avainsanan, lausekkeiden ja tilantarkistusfunktioiden avulla. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Ehdollinen suoritus ja työtehtävien riippuvuudet”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?
Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Matriisikäännökset useille ympäristöille
- Riippuvuuksien välimuistitus nopeuden lisäämiseksi
- Uudelleenkäytettävät työnkulut ja Actions-toiminnot
- Ehdollinen suoritus ja työtehtävien riippuvuudet