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

  1. Crea un nuevo repositorio en GitHub.
  2. Añade un proyecto Flutter básico al repositorio.
  3. Configura un workflow de GitHub Actions siguiendo el ejemplo proporcionado.
  4. Realiza un commit y verifica que el workflow se ejecuta correctamente.

Ejercicio 2: Configurar CI/CD con GitLab CI

  1. Crea un nuevo proyecto en GitLab.
  2. Añade un proyecto Flutter básico al repositorio.
  3. Configura un pipeline de GitLab CI siguiendo el ejemplo proporcionado.
  4. Realiza un commit y verifica que el pipeline se ejecuta correctamente.

Soluciones

Solución al Ejercicio 1

  1. Crea un nuevo repositorio en GitHub y clona el repositorio en tu máquina local.
  2. 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
    
  3. Crea el archivo flutter.yml en el directorio .github/workflows/ y añade el contenido proporcionado en el ejemplo.
  4. 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

  1. Crea un nuevo proyecto en GitLab y clona el repositorio en tu máquina local.
  2. 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
    
  3. Crea el archivo .gitlab-ci.yml en la raíz del proyecto y añade el contenido proporcionado en el ejemplo.
  4. 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

Módulo 2: Conceptos Básicos de Programación en Dart

Módulo 3: Widgets en Flutter

Módulo 4: Gestión de Estado

Módulo 5: Navegación y Enrutamiento

Módulo 6: Redes y APIs

Módulo 7: Persistencia y Almacenamiento

Módulo 8: Conceptos Avanzados de Flutter

Módulo 9: Pruebas y Depuración

Módulo 10: Despliegue y Mantenimiento

Módulo 11: Flutter para Web y Escritorio

© Copyright 2024. Todos los derechos reservados