Sobes.tech
Middle

¿Cómo determinar los parámetros de inicio del pipeline al editar ciertos recursos en Git?

sobes.tech AI

Respuesta de la IA

Utilizando desencadenantes CI/CD vinculados a cambios en archivos o directorios específicos.

Por ejemplo, en GitLab CI:

# .gitlab-ci.yml

stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Construyendo la aplicación..."
  # Ejecutar solo cuando se cambien archivos en el directorio app/
  only:
    changes:
      - app/**/*

test_job:
  stage: test
  script:
    - echo "Ejecutando pruebas..."
  # Ejecutar solo cuando se cambien las pruebas en test/
  only:
    changes:
      - test/**/*

Maven en Jenkinsfile usando la directiva triggers:

// Jenkinsfile (Pipeline Declarativo)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Construyendo...'
            }
        }
        stage('Test') {
            steps {
                echo 'Probando...'
            }
        }
    }
    // Ejecutar al cambiar en un directorio específico (requiere plugin SCM API y Job DSL)
    // Ejemplo para Git con trigger Poll SCM
    triggers {
        pollSCM('H * * * *') // Consultar cada minuto
    }
    options {
        skipChanges() // Omitir triggers si no hay cambios
    }
}

Al usar GitHub Actions:

# .github/workflows/ci.yml

name: CI Pipeline

on:
  push:
    # Ejecutar al cambiar en rutas específicas
    paths:
      - 'src/**'
      - 'tests/**'
      - '!docs/**' # Ignorar cambios en el directorio docs/

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Build
        run: echo "Construyendo..."
      - name: Test
        run: echo "Probando..."

Esto permite ejecutar solo las partes necesarias del pipeline o todo el pipeline completo, ahorrando recursos computacionales y tiempo. La sintaxis exacta y las capacidades dependen del sistema CI/CD específico.