Skip to content

Latest commit

 

History

History

30-DevOps-Pipelines

// concepto

CI/CD (Continuous Integration / Continuous Delivery) es la práctica de automatizar la integración, testing y despliegue del código. Cada cambio en el repositorio desencadena un pipeline que verifica y despliega la aplicación.

  • CI: integración continua — compilar, testear, analizar el código automáticamente en cada push.
  • CD: entrega/despliegue continuo — desplegar automáticamente a staging o producción tras CI exitosa.
// key features

GitHub Actions:

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with: { java-version: '21' }
      - run: mvn clean verify
      - run: docker build -t miapp:${{ github.sha }} .

Jenkins (Declarative Pipeline):

// Jenkinsfile
pipeline {
    agent any
    stages {
        stage('Build') { steps { sh 'mvn clean package' } }
        stage('Test')  { steps { sh 'mvn test' } }
        stage('Deploy') { steps { sh 'kubectl apply -f k8s/' } }
    }
}

GitLab CI:

# .gitlab-ci.yml
stages: [build, test, deploy]
build-job:
  stage: build
  script: mvn clean package
  artifacts:
    paths: [target/*.jar]
test-job:
  stage: test
  script: mvn test
// ventajas
  • Detección temprana de errores: cada commit se verifica automáticamente.
  • Despliegues frecuentes y seguros: proceso automatizado y reproducible.
  • Trazabilidad: cada despliegue está vinculado a un commit específico.
  • Rollback rápido: pipelines con aprobación manual y rollback automatizado.

Ver ExpPipelineStages.java, ExpGitOps.java, ExpBlueGreen.java y ExpCanary.java para ejemplos ejecutables con etapas de pipeline CI/CD, GitOps y estrategias de despliegue blue-green y canary.