...
Advertencia |
---|
Para dar de alta un proyecto en gitlab y que esté incluido en el sistema de despliegue hay que poner un jira a la aplicación dj-at-mncs |
Advertencia |
---|
Si tienes que migrar desde GitLab.UM a GitLab.COM aplica la guía Migración a gitlab.com |
Repositorio remoto vs repositorio local
...
En ocasiones al hacer el merge de una rama con otra aparecen conflictos (al estilo de SVN o de cualquier otro sistema de control de versiones) y nos vemos obligados a resolverlos para poder integrarlo
Si ejecutamos el comando
...
Cuando el trabajo esté listo quitamos el prefijo WIP para que se pueda realizar el merge
Mientras no se quite el estado WIP la rama quedará así
Configurando ramas
El usuario administrador tendrá que ir al apartado Settings y desplegar la opción de Protected branches
...
En los desplegables seleccionaremos en Allowed to merge quien queremos que haga merge Mantainers o Developers + Mantainers y después en allowed to push dejaremos None
Info |
---|
Mantainer es un usuario con más responsabilidad que developer, se puede usar para que no todos los usuarios del grupo puedan hacer merge será típicamente un revisor de código. |
Configurando el pipeline
Primero creamos el directorio .m2 con el fichero settings.xml con la configuración maven de nuestro proyecto, típicamente:
...
Bloque de código |
---|
variables: PROJECT_NAME: NombreProyecto SVN_BASE: https://svn.um.es/svn/NOMBREPROYECTO/ APP_CONTEXT: nombreproyecto include: - project: 'mncs/mncs-pipelines' file: '.gitlab-ci-template.yml' |
Variables para el despliegue
o si estamos en gitlab.com
Bloque de código |
---|
variables:
PROJECT_NAME: NombreProyecto
SVN_BASE: https://svn.um.es/svn/NOMBREPROYECTO/
APP_CONTEXT: nombreproyecto
include:
- project: 'umugit/atica/desarrollo/common/mncs-pipelines'
file: '.gitlab-ci-template.yml' |
Variables para el despliegue
Tendremos un usuario SVN por grupo de trabajo, además si usamos aplicaciones Fundeweb 2.1 tendremos que Tendremos un usuario SVN por grupo de trabajo, además si usamos aplicaciones Fundeweb 2.1 tendremos que usar un perfil de compilación JDK8 todas estas cosas las especificaremos con variables dentro de GitLAB Dentro de la sección de grupo de GitLAB y por parte de un Owner del grupo
...
SVN_USERNAME
SVN_PASSWORD
JDK_VERSION (opcional)
SUFIJO_DESPLIEGUE (opcional, con valor fm si se despliega en servidores fm)
PRESERVE_LIB (opcional, con valor true si queremos que se copien las librerías del package a los servidores, false por defecto). Para aplicaciones de servicios tiene que especificarse con valor true.
ORIGEN_BIRTUM (opcional, con valor por defecto informes_birtum/informes/${APP_CONTEXT}), es la ruta relativa de la raíz de git de donde tiene que sacar los informes BIRT
DESTINO_BIRTUM (opcional debe especificarse junto con el anterior, con valor por defecto informes_birtum), es la ruta relativa al SVN donde se copian los ficheros
LISTA_SECRETS (opcional) para no almacenar secretos en claro en el código, ni el repositorio, es una lista de nombres de secrets separado por espacios. Los secrets se inyectarán en el fichero de filtros según el entorno. Tendrán que especificarse variables nuevas en gitlab nombresecret_DESA, nombresecret_TEST, nombresecret_PROD siendo nombresecret el literal dado de alta en la variable LISTA_SECRETS
MODULO_FILTRO (opcional, valor por defecto web) el módulo al que se tienen que aplicar los secrets en los filtros
MAVEN_CUSTOM_PROFILE (opcional) si nuestra aplicación tiene perfiles personalizados de MAVEN que hay que activar
- OLD_FUNDEWEB (opcional) si nuestra aplicación es Fundeweb 1, se lo podemos indicar para ayudar a sonarqube a detectar las rutas. El valor debe ser true
Info |
---|
Las variables que se marquen como protegidas sólo serán accesibles desde ramas protegidas, por lo tanto el perfil de compilación no deberíamos tenerlo así. |
Advertencia |
---|
También se pueden crear variables a nivel de proyecto, si tenemos aplicaciones Fundeweb 2.0 y 2.1 en nuestro grupo lo recomendado es crear la variable de perfil de compilación a este nivel y no a nivel de grupo |
Gestión de releases
Etiquetas
...
Puede ser una ejecución programada como aquí
Advertencia |
---|
Ojo, que el formato de programación es el de la herramienta GNU cron, hay que tener cuidado con la sintaxis para no tener ejecuciones no deseadas |
O una ejecución normal o con la rama redeploy_produccion como se comenta en el apartado de redespliegues