Fundamentos de la canalización de CI/CD

Cree canales de CI/CD sólidos para pruebas, creación e implementación automatizadas

Fundamentos de la canalización de CI/CD

La integración continua y la implementación continua automatizan su proceso de entrega de software.

Etapas del proceso

┌─────────┐   ┌───────┐   ┌────────┐   ┌────────┐
│  Code   │ → │ Build │ → │  Test  │ → │ Deploy │
└─────────┘   └───────┘   └────────┘   └────────┘
     │             │           │            │
   commit       compile      unit        staging
   push         bundle     integration    prod

Ejemplo: Acciones de GitHub

name: CI

on:
  push:
    branches: [main, dev]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.11"

      - name: Install dependencies
        run: pip install -e ".[dev]"

      - name: Lint
        run: ruff check .

      - name: Type check
        run: mypy src/

      - name: Test
        run: pytest --cov

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy
        run: ./scripts/deploy.sh

Principios clave

  1. Comentarios fijos: las pruebas deberían ejecutarse rápidamente
  2. Falla anticipada: detecte los problemas antes de fusionarse
  3. Compilaciones reproducibles - Misma entrada = misma salida
  4. Implementación incremental: implemente pequeños cambios con frecuencia

Estrategia medioambiental

Medio ambiente Propósito Implementar desencadenador
Desarrollador Pruebas Empuje a dev
Puesta en escena Validación previa a la producción Fusionar con main
Producción Sitio en vivo Aprobación manual