Sobes.tech
Junior

Ի՞նչ են վեբհուկները CI/CD գործընթացում։

sobes.tech AI

Պատասխան AI-ից

CI/CD-թվարկային համակարգերում webhooks-ները ավտոմատացված HTTP POST-հարցումներ են, որոնք ուղարկվում են մեկ հավելվածից մյուսին որոշակի իրադարձության առաջացման դեպքում:

Կոնտեքստում CI/CD-ների, դրանք գործառույթներ են կատարում որպես հրահրողներ: Օրինակ, Git-պահոցում push-իրադարձության դեպքում, webhook-ը ուղարկում է ծանուցում CI/CD համակարգին (Jenkins, GitLab CI, GitHub Actions և այլն): Այս համակարգը, ստանալով ծանուցումը, ավտոմատ կերպով սկսում է պայպլայնը (կառուցում, փորձարկում, տեղադրում):

Հիմնական բաղադրիչներ՝

  • Իրադարձության աղբյուր: Համակարգ, որտեղ տեղի է ունենում իրադարձությունը (օրինակ՝ Git-պահոց):
  • Webhook- ի URI: URL հասցե, որտեղ ուղարկվում է HTTP POST հարցումը: Այս հասցեն պատկանում է ընդունող համակարգին (CI/CD):
  • Payload: Իրադարձության տվյալները, որոնք փոխանցվում են HTTP POST հարցման մարմնում (օրինակ՝ կոմմիտի, ճյուղի մասին տեղեկություններ):
  • Ընդունող համակարգ: CI/CD համակարգը, որը մշակվում է webhook-ը և սկսում գործողությունները:

Օգտագործման առավելությունները՝

  • Ավтоматացում: Հեռացնում է ձեռքով գործարկման անհրաժեշտությունը:
  • Պատասխանատվություն: Պայպլայնը սկսվում է անմիջապես իրադարձությունից հետո, ինչը ապահովում է ավելի արագ արձագանք:
  • Նվազեցված բեռ: Ընդունող համակարգը չի պահանջում մշտական հարցում աղբյուրին (polling):

GitHub Actions- ի գործառնական օրինակ՝

  1. GitHub-ի պահոցում ավելացվում է webhook, որը ցույց է տալիս GitHub Actions-ի endpoint-ը:
  2. Դիզայներիչը կատարում է git push:
  3. GitHub-ը, հայտնաբերելով push իրադարձությունը, ուղարկում է HTTP POST հարցում (webhook) նշված endpoint-ին:
  4. GitHub Actions-ը ստանում է webhook-ը, վերլուծում payload-ը և սկսում համապատասխան workflow-ը:
# GitHub Actions-ում օրինակ workflow, որը հրահրվում է push-ով

name: CI Pipeline

on:
  push:
    branches:
      - main # Սկսվում է push-ով main ճյուղում

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2 # Պահոցը կլոնավորում է

      - 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