Integración Continua y Despliegue Continuo. Automatización del proceso de testing, build y despliegue de aplicaciones.
CI/CD (Continuous Integration / Continuous Deployment) es la práctica de automatizar la integración, testing y despliegue de código. CI (Integración Continua): - Merge frecuente de código - Build automático - Tests automatizados - Detección temprana de errores CD (Despliegue Continuo): - Despliegue automático a staging/producción - Rollbacks automáticos - Feature flags para releases graduales Herramientas: GitHub Actions, GitLab CI, Jenkins, CircleCI.
# .github/workflows/ci.yml - GitHub Actions name: CI/CD Pipeline on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run linter run: npm run lint - name: Run tests run: npm test -- --coverage - name: Upload coverage uses: codecov/codecov-action@v3 build: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build Docker image run: docker build -t myapp:${{ github.sha }} . - name: Push to registry run: | docker tag myapp:${{ github.sha }} registry/myapp:latest docker push registry/myapp:latest deploy: needs: build if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Deploy to production run: | # Desplegar a Kubernetes, AWS, etc. kubectl set image deployment/myapp myapp=registry/myapp:${{ github.sha }}