Skip to content

Repository files navigation

Workshop CI/CD - API de Gestión de Contactos

Este proyecto es una API Serverless para la gestión de contactos, construida con AWS SAM (Serverless Application Model), TypeScript y DynamoDB. El objetivo es demostrar un flujo completo de Integración y Despliegue Continuo (CI/CD) utilizando GitHub Actions y AWS CodePipeline.

🏗️ Arquitectura

La API utiliza los siguientes servicios de AWS:

  • API Gateway: Punto de entrada para las peticiones REST.
  • AWS Lambda: Funciones encargadas de la lógica de negocio (CRUD).
  • Amazon DynamoDB: Base de datos NoSQL para el almacenamiento persistente de contactos.
  • IAM: Roles y políticas para la gestión de permisos.

🚀 Requisitos Previos

Antes de comenzar, asegúrate de tener instalado:

🛠️ Instalación y Construcción

  1. Clonar el repositorio:

    git clone <tu-repo-url>
    cd workshop_ci-cd
  2. Instalar dependencias:

    yarn install
  3. Compilar el proyecto:

    yarn build

    Este comando utiliza tsup para transpilar el código TypeScript a JavaScript en la carpeta build/.

📖 Uso de la API (Endpoints)

La API tiene como clave primaria el campo email.

1. Crear un Contacto

  • URL: /
  • Método: POST
  • Cuerpo (JSON):
    {
      "email": "usuario@ejemplo.com",
      "name": "Juan Pérez",
      "phoneNumber": "+573001234567"
    }

2. Obtener un Contacto

  • URL: /{email}
  • Método: GET
  • Ejemplo: /usuario@ejemplo.com

3. Actualizar un Contacto

  • URL: /{email}
  • Método: PUT
  • Cuerpo (JSON):
    {
      "name": "Juan P. Editado",
      "phoneNumber": "+573119876543"
    }

4. Eliminar un Contacto

  • URL: /{email}
  • Método: DELETE
  • Ejemplo: /usuario@ejemplo.com

🔄 Estrategia de Ramas (GitFlow)

Para mantener el proyecto organizado, seguimos este esquema:

  • main: Código estable y listo para producción. Los cambios aquí disparan el despliegue.
  • develop: Rama base para el desarrollo. Aquí se integran las nuevas funcionalidades.
  • feature/*: Ramas temporales para tareas específicas (ej: feature/ajuste-validaciones).

Cómo empezar una tarea:

git checkout develop
git pull origin develop
git checkout -b feature/mi-nueva-tarea

👷 CI/CD

El proyecto cuenta con una integración automática:

  1. Al hacer push a main, GitHub Actions (contact-deploy.yml) se activa.
  2. La acción solicita a AWS CodePipeline que inicie la ejecución del pipeline definido en AWS para desplegar los cambios.

Desarrollado como parte del Workshop de CI/CD.

About

Implementación de pipelines de Integración y Despliegue Continuo (CI/CD) para automatizar el ciclo de vida de aplicaciones en la nube, utilizando herramientas como GitHub Actions y servicios nativos de AWS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages