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 'Թեստավորում...'
            }
        }
    }
    // Կատարվի փոփոխությունների դեպքում կոնկրետ թղթապանակում (պահանջվում է SCM API և Job DSL plugin)
    // Օրինակ Git-ի համար, 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: Կոդի ստուգում
        uses: actions/checkout@v3
      - name: Կառուցում
        run: echo "Կառուցում..."
      - name: Թեստավորում
        run: echo "Թեստավորում..."

Այսպիսով, հնարավոր է գործարկել միայն անհրաժեշտ մասերը կամ ամբողջ pipeline-ը, խնայելով հաշվիչ ռեսուրսներն ու ժամանակը: Ճշգրիտ սինտաքսիսը և հնարավորությունները կախված են կոնկրետ CI/CD համակարգից: