CI/CD GitHub Actionsilla ja DevOps-putket · Oppitunti

Repositorioiden väliset työnkulut

Oppikaa ketjuttamaan työnkulkuja eri repositorioiden välillä riippuvuuksien hallitsemiseksi ja monimutkaisten käyttöönottojen orkestroimiseksi.

Oppitunti 2/411 vaihetta

Repositorioiden väliset työnkulut on ilmainen CI/CD GitHub Actionsilla ja DevOps-putket-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Johdatus repositorioiden välisiin työnkulkuihin

Nykyisessä ohjelmistokehityksessä sovellukset koostuvat usein useista komponenteista, jotka sijaitsevat eri repositorioissa. Esimerkkejä ovat mikropalvelut, jaetut kirjastot tai erilliset käyttöönottomääritykset.

Työnkulkujen orkestrointi näiden erillisten repositorioiden välillä mahdollistaa paremman modulaarisuuden ja vastuiden erottelun. Tässä oppitunnissa tutkitaan, miten tämä voidaan toteuttaa GitHub Actionsin avulla.

Miksi repositorioiden välistä orkestrointia tarvitaan?

Perinteisesti GitHub Actions -työnkulut on rajattu yhteen repositorioon. Mutta entä jos tarvitsette:

  • Rakentaa artefaktin yhdessä repositoriossa ja käynnistää käyttöönoton toisessa?
  • Jaetun määritysrepositoriossa tehtävän muutoksen käynnistämään päivityksiä useissa palvelurepositorioissa?
  • Soveltaa keskusrepositoriossa hallinnoituja tietoturvakäytäntöjä kaikissa muissa repositorioissa?

Repositorioiden väliset työnkulut tarjoavat ratkaisun näihin monimutkaisiin tilanteisiin.

Repositorioiden yhdistäminen: `repository_dispatch`

GitHub Actions tarjoaa erityisen tapahtumatyypin nimeltä repository_dispatch. Se toimii mukautettuna webhookina GitHub-repositorioille.

  • Yksi työnkulku (lähettäjä) lähettää API-pyynnön GitHubille.
  • Toinen, eri repositoriossa oleva työnkulku (vastaanottaja) kuuntelee tätä nimenomaista tapahtumaa.

Näin työnkulkuja voidaan käynnistää ohjelmallisesti eri repositorioiden välillä.

Vastaanottajan työnkulun määrittäminen

repository_dispatch-tapahtuman vastaanottamista varten kohderepositorion työnkulku on määritettävä kuuntelemaan sitä. Tämä tehdään on:-avainsanan avulla.

Tältä repo-B-repositoriossa oleva työnkulku voisi näyttää:

name: Receive Dispatch Event

on:
  repository_dispatch:
    types: [my-custom-event]

jobs:
  process-event:
    runs-on: ubuntu-latest
    steps:
      - name: Log event payload
        run: |
          echo "Event type: ${{ github.event.action }}"
          echo "Payload: ${{ toJSON(github.event.client_payload) }}"

Vastaanottajan määrityksen ymmärtäminen

Edellisessä esimerkissä:

  • on: repository_dispatch: ilmoittaa GitHubille, että tätä tapahtumaa kuunnellaan.
  • types: [my-custom-event] määrittää, että tämä työnkulku suoritetaan vain, jos lähetetyn tapahtuman tyyppi on my-custom-event. Voitte määrittää useita tyyppejä.
  • github.event.action sisältää tapahtuman tyypin (esim. my-custom-event).
  • github.event.client_payload sisältää lähetyksen mukana lähetetyt mukautetut tiedot.

Tapahtuman käynnistäminen: lähetys toisesta repositoriosta

repository_dispatch-tapahtuman käynnistämiseksi GitHub API:lle on tehtävä HTTP POST -pyyntö. Tämä voidaan tehdä curl-komennolla tai GitHub CLI:llä (gh cli) toisesta GitHub Actions -työnkulusta tai komentosarjasta.

Tärkeät vaatimukset:

  • Kohderepositorion omistaja ja nimi.
  • Tapahtuman type, jota vastaanottava työnkulku kuuntelee.
  • client_payload mukautettuja tietoja varten.
  • GitHubin Personal Access Token (PAT), jolla on repo-käyttöoikeus.

Esimerkki: tapahtuman lähettäminen komennolla `gh cli`

Tässä on työnkulku repositoriossa repo-A, joka lähettää tapahtuman repositorioon repo-B. Huomaa, että käytämme tunnukseen salaisuutta ja välitämme client_payload-tiedot.

name: Trigger Deploy Workflow

on:
  push:
    branches: [main]

jobs:
  dispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install GitHub CLI
        run: sudo apt-get update && sudo apt-get install gh -y

      - name: Dispatch event to repo-B
        env:
          GH_TOKEN: ${{ secrets.CROSS_REPO_PAT }}
        run: |
          gh api \
            --method POST \
            -H "Accept: application/vnd.github.v3+json" \
            /repos/YOUR_ORG/repo-B/dispatches \
            -f event_type='my-custom-event' \
            -f client_payload='{"ref":"${{ github.ref }}", "sha":"${{ github.sha }}"}'

Repositorioiden välisen käytön suojaaminen

Työnkululle oletusarvoisesti annettu GITHUB_TOKEN on rajoitettu repositorioon, jossa työnkulku suoritetaan. Jos haluat käynnistää tapahtumia *toisessa* repositoriossa, tarvitset laajemmat käyttöoikeudet sisältävän tunnuksen.

  • Käytä Personal Access Tokenia (PAT), jolla on repo-käyttöoikeus.
  • Tallenna PAT repositorion salaisuutena (esimerkiksi CROSS_REPO_PAT) tapahtuman käynnistävään repositorioon.
  • Älä koskaan kirjoita PAT-tunnuksia suoraan työnkulkutiedostoihin.

Mukautettujen tietojen välittäminen `client_payload`-kentällä

client_payload on JSON-objekti, jonka voit sisällyttää tapahtumaa lähetettäessä. Se on tärkeä, kun tapahtuman käynnistävästä työnkulusta välitetään konteksti- tai muita tietoja vastaanottavaan työnkulkuun.

Esimerkkejä välitettävistä tiedoista:

  • Koontiversion käynnistänyt commit SHA tai haaran nimi.
  • Ympäristökohde (esimerkiksi "staging" tai "production").
  • Käyttöönotettavan artefaktin versionumero.

Muista, että client_payload näkyy työnkulun lokeissa, joten vältä arkaluonteisten tietojen välittämistä.

Nopea testi repositorioiden välisistä työnkuluista

Olet oppinut organisoimaan työnkulkuja eri GitHub-repositorioiden välillä. Testataan seuraavaksi, miten hyvin ymmärrät keskeiset osat.

Kertaus: työnkulkujen organisointi repositorioiden välillä

Olet onnistuneesti oppinut toteuttamaan repositorioiden välisiä työnkulkuja repository_dispatch-tapahtumien avulla!

  • Miksi: Riippuvuuksien hallintaan ja monimutkaisten käyttöönottojen organisointiin useissa repositorioissa.
  • Miten: Lähettävä työnkulku tekee API-kutsun GitHubiin ja käynnistää vastaanottavan työnkulun toisessa repositoriossa.
  • Keskeinen asia: repository_dispatch-tapahtumatyyppi ja vastaanottavan työnkulun vastaavat types-arvot.
  • Tiedot: Välitä ei-arkaluonteisia tietoja työnkulkujen välillä client_payload-kentän avulla.
  • Suojaus: Käytä repositorioiden väliseen käyttöön aina salaisuutena tallennettua PAT-tunnusta, jolla on repo-käyttöoikeus.

Tämä tehokas ominaisuus mahdollistaa erittäin joustavat ja toisistaan riippumattomat CI/CD-putket.

Aloita maksutta

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 ”Repositorioiden väliset työnkulut” ilmainen?

Kyllä – oppitunnin ”Repositorioiden väliset työnkulut” 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 ”Repositorioiden väliset työnkulut”?

Oppikaa ketjuttamaan työnkulkuja eri repositorioiden välillä riippuvuuksien hallitsemiseksi ja monimutkaisten käyttöönottojen orkestroimiseksi. 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 2/4.

Kuinka kauan ”Repositorioiden väliset työnkulut”-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

  1. CI/CD monorepoissa
  2. Repositorioiden väliset työnkulut
  3. Keskitetty työnkulkujen hallinta
  4. Polkusuodatus ja valikoivat koonnit
← Takaisin: CI/CD GitHub Actionsilla ja DevOps-putket