Sobes.tech
Junior

Čo sú webhooks v procese CI/CD?

sobes.tech AI

Odpoveď od AI

Webhooky v CI/CD sú automatizované HTTP POST požiadavky, ktoré sa odosielajú z jednej aplikácie do druhej pri vzniku určitej udalosti.

V kontexte CI/CD slúžia ako spúšťače. Napríklad, pri udalosti push v Git repozitári webhook odošle oznámenie do systému CI/CD (Jenkins, GitLab CI, GitHub Actions atď.). Tento systém, po prijatí oznámenia, automaticky spustí pipeline (build, testovanie, nasadenie).

Hlavné komponenty:

  • Zdroj udalosti: Systém, kde sa udalosť stane (napríklad, Git repozitár).
  • URI webhooku: URL adresa, kam sa odosiela HTTP POST požiadavka. Táto adresa patrí prijímajúcemu systému (CI/CD).
  • Payload: Dáta o udalosti, prenášané v tele HTTP POST požiadavky (napríklad, informácie o commite, vetve).
  • Prijímajúci systém: Systém CI/CD, ktorý spracováva webhook a iniciuje akcie.

Výhody použitia:

  • Automatizácia: Odstraňuje ručné spúšťanie procesov.
  • Reaktivita: Pipeline sa spustí ihneď po udalosti, čo zabezpečuje rýchlejšiu spätnú väzbu.
  • Nízka záťaž: Prijímajúci systém nemusí neustále dotazovať zdroj (polling).

Príklad práce s GitHub Actions:

  1. V nastaveniach repozitára na GitHub sa pridá webhook, ktorý ukazuje na endpoint GitHub Actions.
  2. Vývojár vykoná git push.
  3. GitHub, po zistení udalosti push, odošle HTTP POST požiadavku (webhook) na určený endpoint GitHub Actions.
  4. GitHub Actions prijme webhook, analyzuje payload a spustí príslušný workflow.
# Príklad workflow v GitHub Actions, ktorý sa aktivuje pri push

name: CI Pipeline

on:
  push:
    branches:
      - main # Spúšťa sa pri push na branch main

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Skontrolovať kód
        uses: actions/checkout@v2 # Klonovanie repozitára

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

      - name: Nainštalovať závislosti
        run: npm ci

      - name: Spustiť testy
        run: npm test