Sobes.tech
Junior

Mis on webhookid CI/CD protsessis?

sobes.tech AI

Vastus AI-lt

CI/CD-süsteemides on webhook automatiseeritud HTTP POST-päringud, mis saadetakse ühest rakendusest teise teatud sündmuse korral:

Kontekstis CI/CD täidavad need rolli trigereid. Näiteks Git-hoidla push-sündmuse korral saadab webhook teavituse CI/CD-süsteemile (Jenkins, GitLab CI, GitHub Actions jne). See süsteem, saades teavituse, käivitab automaatselt pipeline'i (ehitamine, testimine, juurutamine).

Peamised komponendid:

  • Sündmuse allikas: Süsteem, kus sündmus toimub (näiteks Git-hoidla).
  • Webhooki URI: URL-aadress, kuhu saadetakse HTTP POST-päring. See aadress kuulub vastuvõtvasse süsteemi (CI/CD).
  • Payload: Sündmuse andmed, mis edastatakse HTTP POST-päringu kehas (näiteks commit, haru kohta teave).
  • Vastuvõttev süsteem: CI/CD süsteem, mis töötleb webhooki ja algatab tegevused.

Kasutamise eelised:

  • Automatiseerimine: Eemaldab käsitsi käivitamise vajaduse.
  • Reaktiivsus: Pipeline käivitatakse kohe pärast sündmust, tagades kiirema tagasiside.
  • Vähem koormust: Vastuvõttev süsteem ei vaja pidevat päringut allikalt (polling).

Näide GitHub Actions'iga:

  1. GitHub hoidla seadetes lisatakse webhook, mis näitab GitHub Actions'i endpointi.
  2. Arendaja teeb git push.
  3. GitHub, avastades push-sündmuse, saadab HTTP POST-i (webhook) määratud endpointile.
  4. GitHub Actions saab webhooki, analüüsib payloadi ja käivitab vastava workflow'i.
# Näide workflow'ist GitHub Actions'is, mis käivitub push-i korral

name: CI Pipeline

on:
  push:
    branches:
      - main # käivitub push'iga main harusse

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2 # kloonib hoidla

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test