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ä.
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.shTulosteiden 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 -uPakolliset 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.
pathsjapaths-ignoreohjaavat kokonaisia workflow'ita- Muutosten tunnistustoiminnot tuottavat polkukohtaisia totuusarvoja
- Jobit käyttävät yhdistelmää
if+needsehdolliseen 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.
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
- CI/CD monorepoissa
- Repositorioiden väliset työnkulut
- Keskitetty työnkulkujen hallinta
- Polkusuodatus ja valikoivat koonnit