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.
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- 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.