Sobes.tech
Middle

Πώς να καθορίσετε τις παραμέτρους εκκίνησης του pipeline κατά την επεξεργασία ορισμένων πόρων στο Git;

sobes.tech AI

Απάντηση από AI

Χρησιμοποιήστε triggers 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() // Παραλείπει triggers αν δεν υπάρχουν αλλαγές
    }
}

Χρησιμοποιώντας το 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: Εξαγωγή κώδικα
        uses: actions/checkout@v3
      - name: Κατασκευή
        run: echo "Χτίσιμο..."
      - name: Δοκιμές
        run: echo "Δοκιμές..."

Αυτό επιτρέπει την εκτέλεση μόνο των απαραίτητων τμημάτων του pipeline ή ολόκληρου του pipeline, εξοικονομώντας πόρους και χρόνο. Η ακριβής σύνταξη και οι δυνατότητες εξαρτώνται από το συγκεκριμένο σύστημα CI/CD.