La Integració i Desplegament Continu (CI/CD) és una pràctica essencial en el desenvolupament de programari modern que permet automatitzar el procés de construcció, prova i desplegament de les aplicacions. En aquest tema, aprendrem com configurar un pipeline CI/CD per a una aplicació Flutter, utilitzant eines populars com GitHub Actions, Travis CI i CircleCI.
Objectius del Tema
- Comprendre els conceptes bàsics de CI/CD.
- Configurar un pipeline CI/CD per a una aplicació Flutter.
- Automatitzar les proves i la construcció de l'aplicació.
- Desplegar l'aplicació a les botigues d'aplicacions o altres entorns.
Conceptes Bàsics de CI/CD
Integració Contínua (CI)
La Integració Contínua és una pràctica de desenvolupament de programari on els desenvolupadors integren els seus canvis de codi en un repositori compartit diverses vegades al dia. Cada integració és verificada per una construcció automatitzada i proves per detectar errors tan aviat com sigui possible.
Desplegament Continu (CD)
El Desplegament Continu és una extensió de la Integració Contínua que automatitza el desplegament de l'aplicació a un entorn de producció. Això permet que els canvis de codi siguin desplegats de manera ràpida i segura.
Configuració d'un Pipeline CI/CD per a Flutter
Eines Populars de CI/CD
- GitHub Actions: Una plataforma d'automatització de fluxos de treball integrada a GitHub.
- Travis CI: Un servei de CI/CD allotjat que s'integra amb GitHub.
- CircleCI: Una plataforma de CI/CD que ofereix integració amb diversos sistemes de control de versions.
Exemple amb GitHub Actions
Pas 1: Crear un Repositori a GitHub
- Crea un nou repositori a GitHub per a la teva aplicació Flutter.
- Puja el codi de la teva aplicació al repositori.
Pas 2: Configurar GitHub Actions
- A la pàgina del teu repositori, ves a la pestanya "Actions".
- Selecciona "Set up a workflow yourself" per crear un nou fitxer de workflow.
Pas 3: Crear el Fitxer de Workflow
Crea un fitxer anomenat flutter.yml
dins la carpeta .github/workflows/
del teu repositori amb el següent contingut:
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@v1 with: flutter-version: '2.5.3' - name: Install dependencies run: flutter pub get - name: Run tests run: flutter test - name: Build APK run: flutter build apk --release - name: Upload APK uses: actions/upload-artifact@v2 with: name: app-release.apk path: build/app/outputs/flutter-apk/app-release.apk
Explicació del Fitxer de Workflow
- name: Nom del workflow.
- on: Esdeveniments que desencadenen el workflow (push i pull_request a la branca
main
). - jobs: Definició dels treballs a realitzar.
- runs-on: Sistema operatiu on s'executarà el treball (ubuntu-latest).
- steps: Passos del treball.
- Checkout repository: Clona el repositori.
- Set up Flutter: Configura Flutter amb la versió especificada.
- Install dependencies: Instal·la les dependències de Flutter.
- Run tests: Executa les proves de Flutter.
- Build APK: Construeix l'APK de l'aplicació en mode release.
- Upload APK: Puja l'APK construït com a artefacte.
Desplegament a les Botigues d'Aplicacions
Desplegament a Google Play Store
Per desplegar l'aplicació a Google Play Store, pots utilitzar eines com fastlane
per automatitzar el procés. A continuació es mostra un exemple bàsic de configuració de fastlane
:
-
Instal·la
fastlane
:gem install fastlane
-
Inicialitza
fastlane
al teu projecte:fastlane init
-
Configura el fitxer
Fastfile
per incloure una lane per a la distribució:lane :deploy do gradle( task: "assemble", build_type: "Release" ) upload_to_play_store( track: 'production', release_status: 'completed' ) end
-
Executa la lane de deploy:
fastlane deploy
Exercici Pràctic
Objectiu
Configurar un pipeline CI/CD per a una aplicació Flutter utilitzant GitHub Actions.
Passos
- Crea un nou repositori a GitHub i puja el codi de la teva aplicació Flutter.
- Configura GitHub Actions seguint els passos descrits anteriorment.
- Realitza un commit i push al repositori per veure el pipeline en acció.
Solució
Segueix els passos detallats a la secció "Exemple amb GitHub Actions" per configurar el pipeline CI/CD.
Resum
En aquest tema, hem après els conceptes bàsics de CI/CD i com configurar un pipeline CI/CD per a una aplicació Flutter utilitzant GitHub Actions. També hem vist com desplegar l'aplicació a Google Play Store utilitzant fastlane
. La integració i desplegament continu permeten automatitzar el procés de construcció, prova i desplegament, millorant l'eficiència i la qualitat del desenvolupament de programari.
Curs de Desenvolupament Flutter
Mòdul 1: Introducció a Flutter
- Què és Flutter?
- Configuració de l'Entorn de Desenvolupament
- Comprensió de l'Arquitectura de Flutter
- Creació de la Teva Primera Aplicació Flutter
Mòdul 2: Conceptes Bàsics de Programació en Dart
- Introducció a Dart
- Variables i Tipus de Dades
- Sentències de Flux de Control
- Funcions i Mètodes
- Programació Orientada a Objectes en Dart
Mòdul 3: Widgets de Flutter
- Introducció als Widgets
- Widgets Stateless vs Stateful
- Widgets Bàsics
- Widgets de Disseny
- Widgets d'Entrada i Formulari
Mòdul 4: Gestió de l'Estat
Mòdul 5: Navegació i Enrutament
- Introducció a la Navegació
- Navegació Bàsica
- Rutes Nomenades
- Passar Dades Entre Pantalles
- Deep Linking
Mòdul 6: Xarxes i APIs
- Obtenir Dades d'Internet
- Analitzar Dades JSON
- Gestió d'Errors de Xarxa
- Ús d'APIs REST
- Integració de GraphQL
Mòdul 7: Persistència i Emmagatzematge
- Introducció a la Persistència
- Preferències Compartides
- Emmagatzematge de Fitxers
- Base de Dades SQLite
- Ús de Hive per a l'Emmagatzematge Local
Mòdul 8: Conceptes Avançats de Flutter
- Animacions en Flutter
- Pintura Personalitzada i Canvas
- Canals de Plataforma
- Isolates i Concurrència
- Optimització del Rendiment
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries
- Proves de Widgets
- Proves d'Integració
- Tècniques de Depuració
Mòdul 10: Desplegament i Manteniment
- Preparació per al Llançament
- Construcció per a iOS
- Construcció per a Android
- Integració i Desplegament Continu (CI/CD)
- Manteniment i Actualització de la Teva Aplicació