La Integración Continua (CI) y el Despliegue Continuo (CD) son prácticas esenciales en el desarrollo moderno de software que permiten a los equipos entregar cambios de código de manera más rápida y segura. En este tema, aprenderás cómo configurar y utilizar CI/CD en tus proyectos de Flutter para automatizar la construcción, prueba y despliegue de tus aplicaciones.
Objetivos de Aprendizaje
- Comprender los conceptos de CI/CD.
- Configurar un pipeline de CI/CD para un proyecto Flutter.
- Integrar herramientas populares de CI/CD como GitHub Actions y GitLab CI.
- Automatizar pruebas y despliegues para aplicaciones Flutter.
Conceptos Clave de CI/CD
Integración Continua (CI)
La Integración Continua es una práctica de desarrollo de software donde los desarrolladores integran su código en un repositorio compartido varias veces al día. Cada integración es verificada por una construcción automatizada y pruebas para detectar errores lo antes posible.
Beneficios de CI:
- Detección temprana de errores.
- Reducción de conflictos de integración.
- Mejora de la calidad del código.
Despliegue Continuo (CD)
El Despliegue Continuo es una extensión de CI que automatiza el despliegue de aplicaciones a entornos de producción. Cada cambio que pasa las pruebas automatizadas se despliega automáticamente, lo que permite una entrega rápida y frecuente de nuevas funcionalidades.
Beneficios de CD:
- Despliegue rápido y frecuente.
- Reducción del riesgo de despliegue.
- Feedback rápido de los usuarios.
Configuración de CI/CD para Flutter
Herramientas Populares de CI/CD
- GitHub Actions: Una plataforma de CI/CD integrada en GitHub que permite automatizar flujos de trabajo directamente desde el repositorio.
- GitLab CI: Una herramienta de CI/CD integrada en GitLab que permite definir pipelines en archivos
.gitlab-ci.yml
. - Travis CI: Un servicio de CI que se integra con GitHub y otros sistemas de control de versiones.
- CircleCI: Una plataforma de CI/CD que permite construir, probar y desplegar aplicaciones de manera automatizada.
Ejemplo de Configuración con GitHub Actions
Paso 1: Crear un Archivo de Workflow
Crea un archivo llamado flutter.yml
en el directorio .github/workflows/
de tu repositorio.
name: Flutter CI on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Set up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '2.5.3' - name: Install dependencies run: flutter pub get - name: Run tests run: flutter test
Explicación del Archivo
- name: Nombre del workflow.
- on: Eventos que desencadenan el workflow (push y pull_request en la rama
main
). - jobs: Definición de los trabajos a realizar.
- build: Nombre del trabajo.
- runs-on: Sistema operativo en el que se ejecutará el trabajo (Ubuntu en este caso).
- steps: Pasos a seguir en el trabajo.
- Checkout repository: Clona el repositorio.
- Set up Flutter: Configura Flutter en la versión especificada.
- Install dependencies: Instala las dependencias del proyecto.
- Run tests: Ejecuta las pruebas del proyecto.
Ejemplo de Configuración con GitLab CI
Paso 1: Crear un Archivo de Pipeline
Crea un archivo llamado .gitlab-ci.yml
en la raíz de tu repositorio.
stages: - build - test variables: FLUTTER_VERSION: "2.5.3" before_script: - apt-get update - apt-get install -y curl git unzip xz-utils zip libglu1-mesa - curl -LO https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz - tar xf flutter_linux_${FLUTTER_VERSION}-stable.tar.xz - export PATH="$PATH:`pwd`/flutter/bin" - flutter doctor build: stage: build script: - flutter pub get test: stage: test script: - flutter test
Explicación del Archivo
- stages: Define las etapas del pipeline (build y test).
- variables: Define variables de entorno (versión de Flutter).
- before_script: Comandos que se ejecutan antes de los scripts de cada etapa.
- build: Etapa de construcción.
- stage: Nombre de la etapa.
- script: Comandos a ejecutar en la etapa (instalación de dependencias).
- test: Etapa de pruebas.
- stage: Nombre de la etapa.
- script: Comandos a ejecutar en la etapa (ejecución de pruebas).
Ejercicio Práctico
Ejercicio 1: Configurar CI/CD con GitHub Actions
- Crea un nuevo repositorio en GitHub.
- Añade un proyecto Flutter básico al repositorio.
- Configura un workflow de GitHub Actions siguiendo el ejemplo proporcionado.
- Realiza un commit y verifica que el workflow se ejecuta correctamente.
Ejercicio 2: Configurar CI/CD con GitLab CI
- Crea un nuevo proyecto en GitLab.
- Añade un proyecto Flutter básico al repositorio.
- Configura un pipeline de GitLab CI siguiendo el ejemplo proporcionado.
- Realiza un commit y verifica que el pipeline se ejecuta correctamente.
Soluciones
Solución al Ejercicio 1
- Crea un nuevo repositorio en GitHub y clona el repositorio en tu máquina local.
- Añade un proyecto Flutter básico:
flutter create my_flutter_app cd my_flutter_app git init git remote add origin <URL_DEL_REPOSITORIO> git add . git commit -m "Initial commit" git push -u origin main
- Crea el archivo
flutter.yml
en el directorio.github/workflows/
y añade el contenido proporcionado en el ejemplo. - Realiza un commit y verifica que el workflow se ejecuta correctamente:
git add .github/workflows/flutter.yml git commit -m "Add GitHub Actions workflow" git push
Solución al Ejercicio 2
- Crea un nuevo proyecto en GitLab y clona el repositorio en tu máquina local.
- Añade un proyecto Flutter básico:
flutter create my_flutter_app cd my_flutter_app git init git remote add origin <URL_DEL_REPOSITORIO> git add . git commit -m "Initial commit" git push -u origin main
- Crea el archivo
.gitlab-ci.yml
en la raíz del proyecto y añade el contenido proporcionado en el ejemplo. - Realiza un commit y verifica que el pipeline se ejecuta correctamente:
git add .gitlab-ci.yml git commit -m "Add GitLab CI pipeline" git push
Conclusión
En esta sección, has aprendido los conceptos fundamentales de CI/CD y cómo configurarlos para un proyecto Flutter utilizando herramientas populares como GitHub Actions y GitLab CI. La automatización de la construcción, prueba y despliegue de tus aplicaciones no solo mejora la eficiencia del desarrollo, sino que también asegura una mayor calidad y estabilidad en tus entregas. Con estos conocimientos, estás preparado para implementar CI/CD en tus proyectos y beneficiarte de sus ventajas.
Curso de Desarrollo con Flutter
Módulo 1: Introducción a Flutter
- ¿Qué es Flutter?
- Configuración del Entorno de Desarrollo
- Entendiendo la Arquitectura de Flutter
- Creando Tu Primera App con Flutter
Módulo 2: Conceptos Básicos de Programación en Dart
- Introducción a Dart
- Variables y Tipos de Datos
- Sentencias de Control de Flujo
- Funciones y Métodos
- Programación Orientada a Objetos en Dart
Módulo 3: Widgets en Flutter
- Introducción a los Widgets
- Widgets Stateless vs Stateful
- Widgets Básicos
- Widgets de Diseño
- Widgets de Entrada y Formularios
Módulo 4: Gestión de Estado
Módulo 5: Navegación y Enrutamiento
- Introducción a la Navegación
- Navegación Básica
- Rutas Nombradas
- Pasando Datos Entre Pantallas
- Deep Linking
Módulo 6: Redes y APIs
- Obteniendo Datos de Internet
- Parseo de Datos JSON
- Manejo de Errores de Red
- Usando APIs REST
- Integración con GraphQL
Módulo 7: Persistencia y Almacenamiento
- Introducción a la Persistencia
- Preferencias Compartidas
- Almacenamiento de Archivos
- Base de Datos SQLite
- Usando Hive para Almacenamiento Local
Módulo 8: Conceptos Avanzados de Flutter
- Animaciones en Flutter
- Custom Paint y Canvas
- Canales de Plataforma
- Isolates y Concurrencia
- Optimización de Rendimiento
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias
- Pruebas de Widgets
- Pruebas de Integración
- Técnicas de Depuración
Módulo 10: Despliegue y Mantenimiento
- Preparación para el Lanzamiento
- Construcción para iOS
- Construcción para Android
- Integración Continua/Despliegue Continuo (CI/CD)
- Mantenimiento y Actualización de Tu App