Sobes.tech
Junior

Mi a webhook a CI/CD folyamatban?

sobes.tech MI

Válasz az MI-től

A CI/CD-ben a webhookok automatizált HTTP POST-kérések, amelyeket egyik alkalmazás küld a másiknak, amikor egy adott esemény bekövetkezik.

A CI/CD kontextusában triggerként működnek. Például, amikor egy push esemény történik egy Git-Repositoryban, a webhook értesítést küld a CI/CD rendszernek (Jenkins, GitLab CI, GitHub Actions stb.). Ez a rendszer az értesítés fogadását követően automatikusan elindít egy pipeline-t (build, tesztelés, telepítés).

Fő komponensek:

  • Esemény forrása: A rendszer, ahol az esemény történik (pl. Git-Repository).
  • Webhook URI: Az URL-cím, ahová a HTTP POST kérés küldve lesz. Ez a cím a fogadó rendszerhez tartozik (CI/CD).
  • Payload: Az eseményről szóló adatok, amelyeket a HTTP POST kérés törzsében küldenek (pl. commit, branch információk).
  • Fogadó rendszer: A CI/CD rendszer, amely feldolgozza a webhookot és elindítja a műveleteket.

Előnyei:

  • Automatizálás: Kizárja a manuális folyamatokat.
  • Reaktivitás: Az pipeline az esemény után azonnal elindul, gyorsabb visszacsatolást biztosítva.
  • Alacsony terhelés: A fogadó rendszer nem szükséges folyamatosan kérdezni a forrást (polling).

GitHub Actions példával:

  1. A GitHub repository beállításainál hozzáadnak egy webhookot, amely a GitHub Actions végpontjára mutat.
  2. A fejlesztő végrehajt egy git push-t.
  3. A GitHub az push eseményt felismerve HTTP POST kérés (webhook) küld a megadott végpontra.
  4. A GitHub Actions megkapja a webhookot, elemzi a payloadot és elindítja a megfelelő workflow-t.
# Push által triggerelt GitHub Actions workflow példa

name: CI Pipeline

on:
  push:
    branches:
      - main # A main branch-re történő push esetén indul

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Kód ellenőrzése
        uses: actions/checkout@v2 # A repository klónozása

      - name: Node.js beállítása
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Függőségek telepítése
        run: npm ci

      - name: Tesztek futtatása
        run: npm test