DevOps-bootcamp · Oppitunti

Polkusuodatus ja valikoivat koonnit

Käynnistäkää vain muutoksen vaikuttamat työnkulut ja työtehtävät käyttämällä polkusuodattimia, muutosten tunnistusta ja ehdollisia matriiseja monorepo- ja monirepoympäristöissä.

Oppitunti 4/413 vaihetta

Polkusuodatus ja valikoivat koonnit 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.

Turhien buildien ongelma

Monorepossa dokumentaatiomuutos ei saisi käynnistää backendin, frontendin ja mobiilisovelluksen uudelleenrakennusta ja uudelleenkäyttöönottoa.

Valikoivat buildit suorittavat vain muutoksen vaikutuspiirissä olevat pipelinen osat, mikä säästää aikaa ja runner-minuutteja.

Polkusuodattimet triggereissä

Yksinkertaisin tapa on triggerin paths-suodatin. Workflow suoritetaan vain, kun mallia vastaavat tiedostot muuttuvat.

on:
  push:
    paths:
      - 'services/api/**'

Polkujen ohittaminen

Voit tehdä myös päinvastoin paths-ignore-suodattimella: suorita workflow kaikille muille kuin luetelluille poluille.

Tämä on kätevää, kun haluat ohittaa CI:n vain dokumentaatiota koskevissa muutoksissa.

on:
  push:
    paths-ignore:
      - 'docs/**'
      - '**.md'

Triggerisuodattimien rajoitukset

Triggeritason suodattimet päättävät, suoritetaanko koko workflow. Monorepossa haluat kuitenkin usein yhden workflow'n, joka päättää, mitkä jobit suoritetaan.

Tätä varten havaitset muutokset workflow'n sisällä ja haarautat suorituksen tuloksen perusteella.

Muutosten tunnistustoiminto

dorny/paths-filter-toiminto tarkastelee diffiä ja tuottaa totuusarvot jokaiselle nimetylle polkuryhmälle.

Myöhemmät jobit lukevat nämä tulokset ja päättävät, suoritetaanko ne.

  - uses: dorny/paths-filter@v3
    id: changes
    with:
      filters: |
        api:
          - 'services/api/**'
        web:
          - 'services/web/**'

Jobien ehdollistaminen havaittujen muutosten perusteella

Tunnistusjobi julkaisee tulosteita, ja seuraavat jobit käyttävät if-ehtoa sekä needs-kontekstia suorittaakseen itsensä ehdollisesti.

  build-api:
    needs: detect
    if: needs.detect.outputs.api == 'true'
    runs-on: ubuntu-latest
    steps:
      - run: ./build-api.sh

Tulosteiden yhdistäminen

Tunnistusjobin on määritettävä outputs-tulosteet, jotka välittävät suodattimen tulokset muiden jobien luettaviksi.

  detect:
    runs-on: ubuntu-latest
    outputs:
      api: ${{ steps.changes.outputs.api }}
      web: ${{ steps.changes.outputs.web }}

Dynaamiset matriisit

Monien palvelujen tapauksessa voit muodostaa matriisin dynaamisesti muuttuneiden polkujen perusteella, jolloin vain muuttuneet palvelut lisätään matriisiin.

Luo JSON-luettelo yhdessä jobissa ja välitä se seuraavan jobin matriisiin.

    strategy:
      matrix:
        service: ${{ fromJSON(needs.detect.outputs.list) }}

Git diff tunnistukseen

Voit tunnistaa muutokset myös suoraan gitillä. Vertaa nykyistä committia kanta-commitin kanssa ja luettele muuttuneet hakemistot.

git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -u

Pakolliset tarkistukset ja ohitukset

Huomioi seuraava: jos pakollinen tilatarkistus ohitetaan, koska mitään ei muuttunut, haarasuojaus saattaa estää yhdistämisen ja jäädä odottamaan sitä.

Ratkaisu on lisätä lopullinen gate-jobi, joka onnistuu aina ja on ainoa pakollinen tarkistus. Se kokoaa yhteen ehdollisten jobien tulokset.

  gate:
    needs: [build-api, build-web]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all required jobs resolved'

Välimuisti pakettikohtaisesti

Valikoivat buildit sopivat hyvin yhteen pakettikohtaisten välimuistien kanssa. Käytä kunkin palvelun lock-tiedostoa välimuistin avaimena, jotta toisiinsa liittymättömät muutokset eivät mitätöi sitä.

Yhdessä ne pitävät monorepon pipelinet nopeina myös repositorion kasvaessa.

Pikatesti

Testaa, miten hyvin ymmärrät valikoivat buildit.

Kertaus

Opit rakentamaan vain sen, mikä muuttui.

  • paths ja paths-ignore ohjaavat kokonaisia workflow'ita
  • Muutosten tunnistustoiminnot tuottavat polkukohtaisia totuusarvoja
  • Jobit käyttävät yhdistelmää if + needs ehdolliseen suoritukseen, ja matriiseja voidaan muodostaa dynaamisesti
  • Lisää always()-gate-jobi pakollisten tarkistusten yhteensopivuutta varten

Valikoivat buildit pitävät monorepojen CI/CD:n nopeana ja taloudellisena.

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 ”Polkusuodatus ja valikoivat koonnit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Polkusuodatus ja valikoivat koonnit”. 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 ”Polkusuodatus ja valikoivat koonnit”?

Käynnistäkää vain muutoksen vaikuttamat työnkulut ja työtehtävät käyttämällä polkusuodattimia, muutosten tunnistusta ja ehdollisia matriiseja monorepo- ja monirepoympäristöissä. 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 ”Polkusuodatus ja valikoivat koonnit”-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. CI/CD monorepoissa
  2. Repositorioiden väliset työnkulut
  3. Keskitetty työnkulkujen hallinta
  4. Polkusuodatus ja valikoivat koonnit
← Takaisin: DevOps-bootcamp