Sobes.tech
Middle

Jak určit parametry spuštění pipeline při úpravách určitých zdrojů v Git?

sobes.tech AI

Odpověď od AI

Použijte spouštěče CI/CD, které jsou vázány na změny v konkrétních souborech nebo adresářích.

Například v GitLab CI:

# .gitlab-ci.yml

stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Sestavuji aplikaci..."
  # Spustí se pouze při změnách v adresáři app/
  only:
    changes:
      - app/**/*

test_job:
  stage: test
  script:
    - echo "Spouštím testy..."
  # Spustí se pouze při změnách v adresáři test/
  only:
    changes:
      - test/**/*

Maven v Jenkinsfile s použitím direktivy triggers:

// Jenkinsfile (Deklarativní pipeline)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Sestavuji...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testuji...'
            }
        }
    }
    // Spustí se při změnách v konkrétním adresáři (vyžaduje plugin SCM API a Job DSL)
    // Příklad pro Git s triggerem Poll SCM
    triggers {
        pollSCM('H * * * *') // Kontrola každou minutu
    }
    options {
        skipChanges() // Přeskočí spouštění, pokud nejsou změny
    }
}

Použití GitHub Actions:

# .github/workflows/ci.yml

name: CI Pipeline

on:
  push:
    # Spustí při změnách v určitých cestách
    paths:
      - 'src/**'
      - 'tests/**'
      - '!docs/**' # Ignoruje změny v adresáři docs/

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout kódu
        uses: actions/checkout@v3
      - name: Sestavení
        run: echo "Sestavuji..."
      - name: Testování
        run: echo "Testuji..."

To umožňuje spouštět pouze potřebné části pipeline nebo celý pipeline, čímž se šetří výpočetní zdroje a čas. Přesná syntaxe a možnosti závisí na konkrétním CI/CD systému.