DevOps-bootcamp · Oppitunti

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.

Oppitunti 4/413 vaihetta

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.sh

Kontekstiobjektit

Ehdot luetaan kontekstiobjekteista, jotka kuvaavat suoritusta:

  • github — event, ref, actor, sha
  • env — ympäristömuuttujat
  • job ja steps — aiemman työn tila
  • runner — 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äonnistui
  • always() — suoritetaan joka tapauksessa
  • cancelled() — 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: ./logs

Työ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.sh

Useat 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.sh

Työ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_OUTPUT

Ehtojen 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.

  • if rajoittaa vaiheiden ja töiden suoritusta lausekkeiden perusteella
  • Tilafunktiot, kuten failure() ja always(), ohittavat epäonnistumisen jälkeisen ohituksen
  • needs muodostaa 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.

Aloita maksutta

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

  1. Matriisikäännökset useille ympäristöille
  2. Riippuvuuksien välimuistitus nopeuden lisäämiseksi
  3. Uudelleenkäytettävät työnkulut ja Actions-toiminnot
  4. Ehdollinen suoritus ja työtehtävien riippuvuudet
← Takaisin: DevOps-bootcamp