
1. Beneficios
1.1. Detección temprana de errores: Los errores se identifican y corrigen rápidamente.
1.2. Reducción de tiempo: Acelera el proceso de validación y publicación de actualizaciones.
1.3. Mayor productividad: Los equipos pueden enfocarse en desarrollar en lugar de tareas manuales.
1.4. Menor riesgo: Cada despliegue es más seguro y confiable.
1.5. Entregas frecuentes: Los clientes reciben actualizaciones de manera más rápida y constante.
2. Componentes
2.1. Integración Continua (CI)
2.1.1. Definición: Los desarrolladores integran su código en un repositorio compartido varias veces al día.
2.1.2. Propósito: Detectar errores rápidamente mediante la ejecución automática de pruebas y compilaciones.
2.1.3. Ejemplo: Cada vez que se hace un git push, se ejecutan pruebas unitarias y de integración.
2.2. Entrega Continua (CD)
2.2.1. Definición: Automatiza el proceso de preparación del código para su despliegue en producción.
2.2.2. Propósito: Asegurar que el código siempre esté listo para ser desplegado.
2.2.3. Ejemplo: Después de pasar las pruebas, el código se empaqueta y se prepara para su lanzamiento.
2.3. Despliegue Continuo
2.3.1. Definición: Automatiza el despliegue del código en producción después de pasar todas las pruebas.
2.3.2. Propósito: Reducir el tiempo entre el desarrollo y la disponibilidad para los usuarios.
2.3.3. Ejemplo: Cada cambio que pasa las pruebas se despliega automáticamente en producción.
3. GitHub Actions
3.1. es una plataforma de automatización integrada en GitHub que permite crear flujos de trabajo (workflows)
3.1.1. Elementos básicos de GitHub Actions
3.1.1.1. Workflows
3.1.1.1.1. Un workflow es un proceso automatizado que define cómo se ejecutan las tareas (jobs) en respuesta a eventos (como un push o un pull request).
3.1.1.2. Jobs
3.1.1.2.1. Definición: Un job es un conjunto de pasos (steps) que se ejecutan en el mismo entorno.
3.1.1.3. Steps
3.1.1.3.1. Definición: Un step es una tarea individual dentro de un job.
3.1.1.4. Actions
3.1.1.4.1. Definición: Las acciones son tareas reutilizables que se pueden incluir en los steps.
3.1.1.5. Environments
3.1.1.5.1. Definición: Los entornos son configuraciones específicas para despliegues (como production o staging).
3.1.1.6. Secrets
3.1.1.6.1. Definición: Los secrets son variables de entorno cifradas que se usan para almacenar información sensible, como contraseñas o tokens de API.
4. Herramientas populares para CI/CD
4.1. GitHub Actions
4.2. Jenkins
4.3. GitLab CI/CD
4.4. CircleCI
4.5. Travis CI
4.6. Azure DevOps
5. Definición
5.1. Es un conjunto de prácticas y herramientas que permiten automatizar el proceso
5.1.1. Desarrollo, prueba y despliegue de software.