Este proyecto implementa un pipeline de Integración Continua (CI) completo usando TypeScript, Express.js, Jest, Selenium y Docker.
- Aplicación Web: Calculadora web desarrollada con Express.js y TypeScript
- Análisis de Calidad: ESLint y Prettier para mantener código limpio
- Pruebas Unitarias: Jest con cobertura de código
- Pruebas de Aceptación: Selenium WebDriver para pruebas E2E
- Análisis Continuo: Integración con SonarCloud
- Containerización: Docker para empaquetado y despliegue
- CI/CD: GitHub Actions automatizado
- Node.js 18.x o superior
- npm 8.x o superior
- Docker (para containerización)
- Google Chrome (para pruebas de Selenium)
npm installnpm run buildnpm run devLa aplicación estará disponible en http://localhost:3000
npm run test:coverage# ESLint
npm run lint
# Prettier
npm run format:check
npm run format # Para formatear automáticamentePrimero inicia la aplicación:
npm startEn otra terminal:
npm run test:acceptancedocker build -t calculadora-typescript .docker run -p 3000:3000 calculadora-typescript- Crea un repositorio público llamado
cicd-pipeline-typescript - Sube todo el código a la rama
main
- Ve a SonarCloud y regístrate con GitHub
- Crea una organización
- Importa tu repositorio
- Genera un token de acceso
- Actualiza
sonar-project.propertiescon tu información:
sonar.projectKey=[TU_USUARIO]_cicd-pipeline-typescript
sonar.organization=[TU_ORGANIZACION]- Crea una cuenta en Docker Hub
- Genera un Access Token
Ve a tu repositorio > Settings > Secrets and variables > Actions y agrega:
SONAR_TOKEN: Token de SonarCloudDOCKERHUB_USERNAME: Tu username de Docker HubDOCKERHUB_TOKEN: Tu Access Token de Docker Hub
├── src/
│ ├── app.ts # Aplicación Express principal
│ └── calculator.ts # Lógica de la calculadora
├── tests/
│ ├── calculator.test.ts # Pruebas unitarias de la calculadora
│ ├── app.test.ts # Pruebas unitarias de Express
│ └── acceptance.test.ts # Pruebas de aceptación con Selenium
├── public/
│ └── index.html # Interfaz web de la calculadora
├── .github/workflows/
│ └── ci.yml # Pipeline de GitHub Actions
├── package.json # Dependencias y scripts
├── tsconfig.json # Configuración TypeScript
├── jest.config.js # Configuración Jest
├── .eslintrc.json # Configuración ESLint
├── .prettierrc.json # Configuración Prettier
├── Dockerfile # Imagen Docker
├── .dockerignore # Exclusiones Docker
└── sonar-project.properties # Configuración SonarCloud
El pipeline se ejecuta automáticamente en cada push a main y incluye:
- Checkout del código
- Setup de Node.js
- Instalación de dependencias
- Verificación de formato (Prettier)
- Análisis de código (ESLint)
- Compilación de TypeScript
- Pruebas unitarias con cobertura
- Pruebas de aceptación con Selenium
- Análisis en SonarCloud
- Construcción y publicación de imagen Docker (solo en main)
El proyecto está configurado para mantener altos estándares de calidad:
- Cobertura de código: Mínimo 80%
- ESLint: Cero errores
- Prettier: Formato consistente
- SonarCloud: Quality Gate aprobado
La imagen Docker se publica automáticamente en Docker Hub cuando se hace push a la rama main. Puedes ejecutar la aplicación con:
docker run -p 3000:3000 [TU_USUARIO]/cicd-pipeline-typescript:latest