Exemple de model de treball per a CI/CD d’un mobile apps (Android, iOS, Flutter i ReactNative)
Com ja s’ha comentat anteriorment, el nou model de treball es basarà en:
-
Gestió de branques amb un model Gitflow.
-
Integracions de branques basades en Pull Request.
-
Tagging d’artefactes i repositoris amb el model Semantic Version 2.0 per aplicacions mòbils.
En el següent exemple es mostra l’execució e2e d’un flux de treball, des que el desenvolupador realitza la seva implementació en una branca Feature, fins al desplegament en Producció. No cal infraestructura per aquest tipus de projectes.
L’accés a GHEC es realitzarà des de la URL: https://ctti.ghe.com/enterprises/ctti/.
-
Integració en branca develop des de feature L’usuari ja ha realitzat el seu desenvolupament en la branca feature i es disposa a Integrar els seus canvis a develop.

Objectiu : Integració de feature a develop i generació d’artefacte per a desplegament en Desenvolupament.
Actors:
- Usuari amb Rol Write que realitza el desenvolupament.
- Usuari amb Rol Maintain que aprova la Pull Request(PR).
Execució de Workflows : Automàtic
- App iOS/Android/Flutter/ReactNative CI on PR en realitzar la PR. Compila i executa Unit Testing (si escau) i anàlisi de qualitat i seguretat.
- App iOS/Android/Flutter/ReactNative CI on Commit to develop, en realitzar el Commit. Compila, genera binari de dev i puja al JFROG.
Resultat de l’operació :
- Branca feature integrada en develop.
- Codi validat per un Reviewer i per eines de qualitat i seguretat.
- Generació i pujada del binari de l’aplicació a JFROG.
- Tag del repositori a 0.0.1_1-SNAPSHOT.
-
Validació funcional d’artefacte en desenvolupament. L’usuari es disposa a realitzar el desplegament de l’artefacte generat en el pas 1 i desplegar-lo en l’entorn de desenvolupament per a la seva validació funcional.

Objectiu : Desplegament en desenvolupament de l’artefacte per a la seva validació.
Actors:
- Usuari amb Rol Write o Maintain.
Execució de Workflows : Sota Demanda per part de l’usuari.
-
App iOS/Android/Flutter/ReactNative CD, comprova que es pugui desplegar en l’entorn, i executa el desplegament.
En aquest cas l’execució és manual i per a això l’usuari (independentment del seu rol, però s’aconsella que sigui el de maintain) tindrà que :
-
Accedir als WorkFlows del repositori mitjançant l’opció “Actions”, indicada en l’apartat Configuració dels diferents WorkFlows de CI/CD
-
Seleccionar el workflow a executar, en aquest cas App iOS/Android/Flutter/ReactNative CD, i prèmer “Run Workflow”, apareixent el formulari per introduir la informació necessària per l’execució:

- Branca o branch on es troba el workflow actualitzat: develop.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1_1-SNAPSHOT
- Environment : dev, per al desplegament a desenvolupament.
- Nom de bundle idenfifier per iOS
- Nom de package name per Android
-
Resultat de l’operació :
- Codi desplegat a l’entorn de Desenvolupament per a la seva validació.
- Creació de TAG de repositori «tag-repositori-actual»-development per a propòsits de rollback automàtic. Exemple “0.0.1_1-SNAPSHOT-development”.
-
Integració en branca release des de develop Un cop validat el codi en l’entorn de desenvolupament, el desenvolupador pot promocionar-lo a la branca Release i així poder desplegar-lo posteriorment al pas 4.

Objectiu : Integrar el codi a Release per posteriorment desplegar en entorns Preproductius un artefacte Release Candidate.
Actors:
- Usuari amb Rol Write realitza el desenvolupament i sol·licita la Pull Request.
- Usuari amb Rol Maintain aprova la Pull Request.
Execució de Workflows :
- App iOS/Android/Flutter/ReactNative CI on Commit en aprovar la Pull Request. Compila, genera binari de pre i puja al JFROG.
Resultat de l’operació :
- Branca develop integrada en release.
- Generació i pujada del binari de l’aplicació a JFROG.
- Tag del repositori a 0.0.1_1-RC.
-
Validació funcional d’artefacte en Preproducció L’usuari es disposa a realitzar el desplegament de l’artefacte generat en el pas 3 i desplegar-lo en l’entorn de preproducció per realitzar les validacions necessàries.

Objectiu : Desplegament en Preproducció de l’artefacte per a la seva validació funcional.
Actors:
- Usuari amb Rol Write o Maintain.
Execució de Workflows : Sota Demanda per part de l’usuari.
-
App iOS/Android/Flutter/ReactNative CD, comprova que es pugui desplegar en l’entorn, i executa el desplegament.
En aquest cas l’execució és manual i per a això l’usuari (independentment del seu rol, però s’aconsella que sigui el de maintain) tindrà que :
-
Accedir als WorkFlows del repositori mitjançant l’opció “Actions”, indicada en l’apartat Configuració dels diferents WorkFlows de CI/CD
-
Seleccionar el workflow a executar, en aquest cas App iOS/Android/Flutter/ReactNative CD, i prèmer “Run Workflow”, apareixent el formulari per introduir la informació necessària per l’execució:

- Branca o branch on es troba el workflow actualitzat: release.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1_1-RC
- Environment : pre, per al desplegament a preproducció.
- Nom de bundle idenfifier per iOS
- Nom de package name per Android
-
Resultat de l’operació :
- Codi desplegat a l’entorn de Preproducció per a la seva validació.
- Creació de TAG de repositori «tag-repositori-actual»-preproduction per a propòsits de rollback automàtic. Exemple “0.0.1_1-RC-preproduction”
-
Integració en branca master des de release Una vegada realitzada la validació funcional, l’usuari es disposa a integrar en master per a deixar un codi disponible per a desplegar en Producció.

Objectiu : Integrar el codi a branca master i generar artefacte final per al desplegament en Producció.
Actors:
- Usuari amb Rol Write realitza el desenvolupament i sol·licita la Pull Request a màster.
- Usuari amb Rol Maintain aprova la Pull Request.
Execució de Workflows :
- App iOS/Android/Flutter/ReactNative CI on Commit en aprovar la Pull Request. Compila, genera binari de pro i puja al JFROG.
Resultat de l’operació :
- Branca release integrada en master.
- Generació i pujada del binari de l’aplicació a JFROG.
- Tag del repositori a 0.0.1_1.
-
Desplegament d’aplicació a Producció L’usuari es disposa a realitzar el desplegament de l’artefacte generat en el pas 5 i desplegar-lo en l’entorn de Producció

Objectiu : Desplegament en Producció de l’aplicació.
Actors:
- Usuari amb Rol Write o Maintain.
Execució de Workflows : Sota Demanda per part de l’usuari.
-
App iOS/Android/Flutter/ReactNative CD, comprova que es pugui desplegar en l’entorn, i executa el desplegament.
En aquest cas l’execució és manual i per a això l’usuari (independentment del seu rol, però s’aconsella que sigui el de maintain) tindrà que :
-
Accedir als WorkFlows del repositori mitjançant l’opció “Actions”, indicada en l’apartat Configuració dels diferents WorkFlows de CI/CD
-
Seleccionar el workflow a executar, en aquest cas App iOS/Android/Flutter/ReactNative CD, i prèmer “Run Workflow”, apareixent el formulari per introduir la informació necessària per l’execució:

- Branca o branch on es troba el workflow actualitzat: master.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1_1
- Environment : pre, per al desplegament a preproducció.
- Nom de bundle idenfifier per iOS
- Nom de package name per Android
-
Resultat de l’operació :
- Codi desplegat a l’entorn de Producció per a la seva validació.
- Creació de TAG de repositori «tag-repositori-actual»-production per a propòsits de rollback automàtic. Exemple “0.0.1_1_1-production”
-