Sobes.tech
Middle

Как да определите параметрите за стартиране на пайплайна при редактиране на определени ресурси в Git?

sobes.tech AI

Отговор от AI

Използвайте тригери CI/CD, свързани с промени в конкретни файлове или директории.

Например, в GitLab CI:

# .gitlab-ci.yml

stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Изграждане на приложението..."
  # Стартира само при промени в директорията app/
  only:
    changes:
      - app/**/*

test_job:
  stage: test
  script:
    - echo "Изпълнение на тестове..."
  # Стартира само при промени в директорията test/
  only:
    changes:
      - test/**/*

Maven в Jenkinsfile с използване на директивата triggers:

// Jenkinsfile (Декларативен Pipeline)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Изграждане...'
            }
        }
        stage('Test') {
            steps {
                echo 'Тестване...'
            }
        }
    }
    // Стартиране при промени в конкретна директория (изисква plugin SCM API и Job DSL)
    // Пример за Git с trigger Poll SCM
    triggers {
        pollSCM('H * * * *') // Проверява всяка минута
    }
    options {
        skipChanges() // Пропуска тригерите, ако няма промени
    }
}

При използване на GitHub Actions:

# .github/workflows/ci.yml

name: CI Pipeline

on:
  push:
    # Стартира при промени в конкретни пътища
    paths:
      - 'src/**'
      - 'tests/**'
      - '!docs/**' # Игнорира промени в директорията docs/

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Build
        run: echo "Изграждане..."
      - name: Test
        run: echo "Тестване..."

Това позволява да се стартират само необходимите части от pipeline или цялата pipeline, като се спестяват изчислителни ресурси и време. Точният синтаксис и възможностите зависят от конкретната система CI/CD.