Sobes.tech
Middle

Git'da ma'lum resurslarni tahrirlashda pipeline ishga tushirish parametrlarini qanday aniqlash mumkin?

sobes.tech AI

AIdan javob

Ma'lum bir fayl yoki katalogdagi o'zgarishlarga bog'liq CI/CD triggerlardan foydalaning.

Masalan, GitLab CI da:

# .gitlab-ci.yml

stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Ilovani qurish..."
  # Faqat app/ katalogida o'zgarishlar bo'lsa ishga tushirilsin
  only:
    changes:
      - app/**/*

test_job:
  stage: test
  script:
    - echo "Testlarni o'tkazish..."
  # Faqat test/ katalogida o'zgarishlar bo'lsa ishga tushirilsin
  only:
    changes:
      - test/**/*

Maven Jenkinsfile da triggers direktivasidan foydalanish:

// Jenkinsfile (Deklarativ Pipeline)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Qurilmoqda...'
            }
        }
        stage('Test') {
            steps {
                echo 'Test o'tkazilmoqda...'
            }
        }
    }
    // Muayyan katalogdagi o'zgarishlar uchun ishga tushirish (SCM API va Job DSL plaginini talab qiladi)
    // Git uchun misol, Poll SCM trigger bilan
    triggers {
        pollSCM('H * * * *') // Har daqiqada tekshirish
    }
    options {
        skipChanges() // O'zgarishlar bo'lmasa triggerni o'tkazib yuborish
    }
}

GitHub Actions dan foydalanishda:

# .github/workflows/ci.yml

name: CI Pipeline

on:
  push:
    # Muayyan yo'llardagi o'zgarishlar uchun ishga tushiradi
    paths:
      - 'src/**'
      - 'tests/**'
      - '!docs/**' # docs/ katalogidagi o'zgarishlarni inkor etish

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Kodni tekshirish
        uses: actions/checkout@v3
      - name: Qurish
        run: echo "Qurilmoqda..."
      - name: Test
        run: echo "Test o'tkazilmoqda..."

Bu faqat kerakli bo'laklarni yoki butun pipeline'ni ishga tushirish imkonini beradi, bu esa hisoblash resurslari va vaqtni tejashga yordam beradi. Aniq sintaksis va imkoniyatlar CI/CD tizimiga bog'liq.