Exemple de model de treball per a CI/CD d’una Function
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.
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ó. La infraestructura ha estat desplegada prèviament.
L’accés a GHEC es realitzarà des de la URL: https://github.com/enterprises/gencat/.
-
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 Function 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
- FUNCTION CI on PR en realitzar la PR. Genera l’artefacte Function, havent realitzat prèviament anàlisi de qualitat i seguretat.
- FUNCTION CI on Commit, en realitzar el Commit, empaquetant la function i pujant-la al GitHub Artifacts.
Resultat de l’operació :
- Branca feature integrada en develop.
- Codi validat per un Reviewer i per eines de qualitat i seguretat.
- Generació i pujada de la function a GitHub Packages.
- Tag del repositori a 0.0.1-SNAPSHOT i Tag de la function a func.0.0.1-SNAPSHOT.
- Artefacte promocionat en el codi font a 0.0.1-SNAPSHOT.
-
Validació funcional d’artefacte en desenvolupament. L’usuari es disposa a realitzar el desplegament de l’artefacte Function 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 function generat anteriorment per a la seva validació.
Actors:
- Usuari amb Rol Write o Maintain.
Execució de Workflows : Sota Demanda per part de l’usuari.
- FUNCTION CD, comprova que existeixi la function, que es pugui desplegar en l’entorn, i executa el desplegament.
- Branca o branch on es troba el workflow actualitzat: develop.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1-SNAPSHOT.
- Function Names : Requerit. llistat, separat per comes i sense espais, dels noms de les funcions a desplegar en el cloud.
- Folder Names : Opcional. listado, separado por comas y sin espacios, de los nombres de las carpetas de cada función en el repositorio. Si solo existe una función y está en la raiz del repositorio, dejar el valor en blanco.
- Environment : dev, per al desplegament a desenvolupament.
- ITSM ID Change Coordinator: ID de l’usuari per crear la CRQ en ITSM amb l’objectiu d’informar sobre el desplegament.
Resultat de l’operació :
- Function 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-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 : Automàtic.
- FUNCTION CI on PR en realitzar la PR. Genera l’artefacte Function, havent realitzat prèviament anàlisi de qualitat i seguretat.
- FUNCTION CI on Commit, en realitzar el Commit, empaquetant la function i pujant-la al GitHub Artifacts.
Resultat de l’operació :
- Branca develop integrada en release.
- Codi validat per un Reviewer i per eines de qualitat i seguretat.
- Generació i pujada de la function a GitHub Packages.
- Tag del repositori a 0.0.1-RC i Tag de la function a func.0.0.1-RC.
- Artefacte promocionat en el codi font a 0.0.1-RC.
-
Validació funcional d’artefacte en Preproducció Estant disponible la imatge amb un tag vàlid, es realitza el desplegament per realitzar les validacions necessàries.
Objectiu : Desplegament en Preproducció de l’artefacte function per a la seva validació funcional.
Actors:
- Usuari amb Rol Write o Maintain.
Execució de Workflows : Sota Demanda per part de l’usuari.
-
FUNCTION CD, comprova que existeixi la function, que es pugui desplegar en l’entorn de Preproducció, i executa el desplegament informant en ITSM.
En aquest cas l’execució és manual i l’usuari haurà d’omplir un formulari amb la informació del desplegament (revisar com executar workflow manualment descrit en l’apartat Validació funcional d’artefacte en desenvolupament):
- Branca o branch on es troba el workflow actualitzat: release.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1-RC.
- Function Names : Requerit. llistat, separat per comes i sense espais, dels noms de les funcions a desplegar en el cloud.
- Folder Names : Opcional. listado, separado por comas y sin espacios, de los nombres de las carpetas de cada función en el repositorio. Si solo existe una función y está en la raiz del repositorio, dejar el valor en blanco.
- Environment : Pre, per al desplegament a preproducció.
- ITSM ID Change Coordinator: ID de l’usuari per crear la CRQ en ITSM amb l’objectiu d’informar sobre el desplegament.
Resultat de l’operació :
- Function desplegat a l’entorn de Preproducció per a la seva validació. [Pendent] Es realitzaran validacions mitjançant la integració amb el Marc d’Automatització de Testing (MAT) i MAM (Marc d’Automatització de Monitoratge).
- Creació de TAG de repositori «tag-repositori-actual»-preproduction per a propòsits de rollback automàtic. Exemple “0.0.1-RC-preproduction”.
-
Integració en branca master des de release Una vegada realitzara la validació funcional, l’usuari es disposa a integrar en master per a deixar un artefacte 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 : Automàtic
- FUNCTION CI on PR en realitzar la PR. Genera l’artefacte Function, havent realitzat prèviament anàlisi de qualitat i seguretat.
- FUNCTION CI on Commit, en realitzar el Commit, empaquetant la function i pujant-la al GitHub Artifacts.
Resultat de l’operació :
- Branca release integrada en master.
- Generació i pujada de la function a GitHub Packages.
- Tag del repositori a 0.0.1 i Tag de la function a func.0.0.1.
- Artefacte promocionat en el codi font a 0.0.1
-
Desplegament d’aplicació a Producció Una vegada hi ha l’artefacte disponible a GitHub Packages amb un tag que habilita la seva promoció a pro, i totes les validacions realitzades en entorns Preproductius, l’artefacte es pot desplegar en 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.
- FUNCTION CD, comprova que existeixi la function, que es pugui desplegar en l’entorn de Producció, i executa el desplegament informant en ITSM.
En aquest cas l’execució és manual i l’usuari haurà d’omplir un formulari amb la informació del desplegament (revisar com executar workflow manualment descrit en l’apartat Validació funcional d’artefacte en desenvolupament):
- Branca o branch on es troba el workflow actualitzat: master.
- Artifact Version : Versió de l’artefacte, en aquest cas 0.0.1.
- Function Names : Requerit. llistat, separat per comes i sense espais, dels noms de les funcions a desplegar en el cloud.
- Folder Names : Opcional. listado, separado por comas y sin espacios, de los nombres de las carpetas de cada función en el repositorio. Si solo existe una función y está en la raiz del repositorio, dejar el valor en blanco.
- Environment : Pre, per al desplegament a producció.
- ITSM ID Change Coordinator: ID de l’usuari per crear la CRQ en ITSM amb l’objectiu d’informar sobre el desplegament.
Resultat de l’operació :
- Function desplegat a l’entorn de Producció.
- Creació de TAG de repositori «tag-repositori-actual»-production per a propòsits de rollback automàtic. Exemple “0.0.1-production”.