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 CI/CD GitHub Actionsilla ja DevOps-putket-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu CI/CD GitHub Actionsilla ja DevOps-putket-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. CI/CD GitHub Actionsilla ja DevOps-putket-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 CI/CD GitHub Actionsilla ja DevOps-putket 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
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Polkusuodatus ja valikoivat koonnit” ilmainen?
Kyllä – oppitunnin ”Polkusuodatus ja valikoivat koonnit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko CI/CD GitHub Actionsilla ja DevOps-putket-kurssin, päivitä CoddyKit PROhon. CI/CD GitHub Actionsilla ja DevOps-putket-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 CI/CD GitHub Actionsilla ja DevOps-putket-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni CI/CD GitHub Actionsilla ja DevOps-putket-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin CI/CD GitHub Actionsilla ja DevOps-putket-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ä CI/CD GitHub Actionsilla ja DevOps-putket-oppitunnilla?
Kyllä. Jokainen CI/CD GitHub Actionsilla ja DevOps-putket-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