En la entrada de hoy vamos a intentar poner luz a unos de los problemas más comunes cuando trabajamos con Jira y Gitlab que genera mucha confusión a todas las personas que se encuentran con esta arquitectura de desarrollo y mirar de explicar la funcionalidad que tenemos o dejamos de tener en función de cada versión de Gitlab y hasta donde podemos llegar
Cómo integrar Gitlab con Jira Cloud
Tanto la Gitlab CE cómo Gitlab EE tiene se integra de la misma manera con Jira Cloud. Hay dos formas de integrar Gitlab con Jira Cloud cada una de ellas te da unas funcionalidades que otra no te da:
Integración básica
La integración básica es a través de servicios o integraciones de Gitlab. Esta funcionalidad viene por defecto en cualquier versión de Gitlab. El propio Gitlab tiene un servicio definido de integración con Jira.
¿Cómo hacemos la integración básica?
Para tener esta integración tenemos que hacer los siguientes pasos:
Vamos a la url de nuestro Gitlab, entramos con un usuario administrador y vamos a Admin->Settings->Integrations y escogemos la opción de “Jira”
Configuramos el servicio de la siguiente manera:
Cosas a tener en cuenta:
- Enable comments: Aquí podemos escoger si queremos que nos deje un mensaje en los comentarios o no y con que nivel de detalle.
- Enable Jira transitions: Esta funcionalidad permite transicionar las issues des de un commit. Solo funciona en la versión Gitlab EE. Más información de cómo configurarlo aquí.
- Username o email: Tiene que ser el correo electrónico con permisos de administrador del Jira Cloud.
- Password o Token: Hay que poner en Token generado con el usuario de Jira Cloud (el mismo que el punto anterior). Aquí podéis ver cómo generar un Token de un usuario en Jira.
Una vez hecho esto veremos que tenemos una integración activa:
¿Qué funcionalidades nos da la integración básica?
En Gitlab CE
La integración básica con Gitlab CE nos permite tener las siguientes funciones:
- Hacer un commit des de Gitlab con el Id de la Issue de Jira y se añade un enlace directo en la zona de enlaces web de Jira
- Hacer un Merge Request des de Gitlab con el Id de la Issue de Jira y se añade un enlace directo en la zona de enlaces web de Jira
- Ver el listado de issues de Jira vinculadas al repositorio en Gitlab
- Añadir información de los commits y MR en los comentarios
¿Qué no podemos hacer?
Funcionalidades de Smart Commits (time tracking y transicionar estados desde commits), crear branches des de Jira y crear una issue en Jira cada vez que se registra un “incident” en Gitlab.
En Gitlab EE
En la versión EE de Gitlab conseguimos las mismas funcionalidades que en la versión para CE más las transiciones de estados de smart commits des del commit de Gitlab.
Integración avanzada
La integración avanzada según la documentación sólo está soportada para la versión EE aunque hay algunas funcionalidades que también se pueden conseguir en la versión CE. Se trata básicament de la integración del panel de desarrollo que viene en Jira.
¿Cómo hacemos la integración avanzada?
Para hacer la integración avanzada la podemos hacer de 2 maneras:
- A través de DVCS accounts de Jira.
- A través de override de Plugin de Gitlab.com de Jira
En este manual nos centraremos en la primera parte aunque haremos un resumen de cómo integrarllo con el plugin de Gitlab.com
Integración con DVCS accounts de Jira
En Gitlab:
Creación de una aplicación. Para ello vamos al menú del usuario -> preferences -> Applications y creamos una aplicación nueva (poned el nombre que queráis) y marcad la opción de “api”. Le damos a siguiente y tendremos los datos de nuestra aplicación
Copiamos los datos (los necesitaremos para la configuración del Jira)
Buscamos el “Team” or “user account”
Vamos a Gitlab -> Menu->Admin->Groups escogemos el grupo que queremos ver la información y que utilizaremos en al configuración del Jira y el valor que buscamos es el campo “PATH”
En Jira:
Añadir nueva cuenta DVCS. Para ello vamos al Jira en Gear -> Productos -> Cuentas de DVCS y añadimos una nueva cuenta de tipo Github Enterprise.
Nos envía al Gitlab para verificar el vínculo, autorizamos y ya tendremos el Gitlab conectado
Ojo: Esta funcionalidad solo está disponible para la versión Gitlab EE. Con Gitlab CE hay un problema de integración ya que no se actualiza los estados de forma automática. Más información aquí.
Integración con override de Plugin de Gitlab.com de Jira
Para la integración con este procedimiento tenemos que hacer los siguientes pasos:
- Generamos un manifest y lo publicamos en una url accesible desde Internet. Aquí un ejemplo (adaptar url e información a la de vuestra instalación)
{“name”:”GitLab for Jira (Self-managed) 20211220″,”description”:”Integrate commits, branches and merge requests from GitLab into Jira”,”key”:”xxx-gitlab-self-20211220″,”baseUrl”:”https://gitlabce.quabu.eu”,”vendor”:{“name”:”GitLab”,”url”:”https://gitlabce.quabu.eu/”},”links”:{“documentation”:”https://gitlabce.quabu.eu/help/integration/jira_development_panel#gitlabcom-1″},”authentication”:{“type”:”none”},”modules”:{“postInstallPage”:{“key”:”gitlab-configuration”,”name”:{“value”:”GitLab Configuration”},”url”:”/subscriptions”,”conditions”:[{“condition”:”user_is_admin”,”invert”:false}]},”jiraDevelopmentTool”:{“actions”:{“createBranch”:{“templateUrl”:”https://gitlabce.quabu.eu/root/video-editor/-/branches/new?issue_key={issue.key}&issue_summary={issue.summary}”}},”key”:”gitlab-development-tool-XXX”,”application”:{“value”:”GitLab”},”name”:{“value”:”GitLab”},”url”:”https://gitlabce.quabu.eu”,”logoUrl”:”https://www.gitlab.com/assets/gitlab_logo-7ae504fe4f68fdebb3c2034e36621930cd36ea87924c11ff65dbcb8ed50dca58.png”,”capabilities”:[“branch”,”commit”,”pull_request”]},”jiraBuildInfoProvider”:{“homeUrl”:”https://gitlabce.quabu.eu”,”logoUrl”:”https://www.gitlab.com/assets/gitlab_logo-7ae504fe4f68fdebb3c2034e36621930cd36ea87924c11ff65dbcb8ed50dca58.png”,”documentationUrl”:”https://docs.gitlab.com/ee/integration/jira/”,”actions”:{},”name”:{“value”:”GitLab CI”},”key”:”gitlab-ci”},”jiraDeploymentInfoProvider”:{“homeUrl”:”https://gitlabce.quabu.eu”,”logoUrl”:”https://gitlabce.quabu.eu/assets/gitlab_logo-7ae504fe4f68fdebb3c2034e36621930cd36ea87924c11ff65dbcb8ed50dca58.png”,”documentationUrl”:”https://docs.gitlab.com/ee/integration/jira/”,”actions”:{},”name”:{“value”:”GitLab Deployments”},”key”:”gitlab-deployments”},”jiraFeatureFlagInfoProvider”:{“homeUrl”:”https://gitlabce.quabu.eu”,”logoUrl”:”https://gitlabce.quabu.eu/assets/gitlab_logo-7ae504fe4f68fdebb3c2034e36621930cd36ea87924c11ff65dbcb8ed50dca58.png”,”documentationUrl”:”https://docs.gitlab.com/ee/integration/jira/”,”actions”:{},”name”:{“value”:”GitLab Feature Flags”},”key”:”gitlab-feature-flags”}},”scopes”:[“READ”,”WRITE”,”DELETE”],”apiVersion”:1,”apiMigrations”:{“context-qsh”:true,”signed-install”:true,”gdpr”:true},”version”:”1.1.2″}
- Habilitar el modo development en Jira Cloud: Vamos al menú de Manage Apps y habilitamos el modo development. Una vez finalizado hay que desactivar esta opción.
- Vamos a manage apps y le damos a la opción de “Upload App” (o apretamos GG en el teclado y buscamos la opción de Upload App.
- Ponemos la URL al manifiesto de nuestra App.
Pero, ¿qué obtenemos con esta integración?
Con esta integración veremos que en el panel de desarrollo nos sale la información de Gitlab:
Integración a través de plugin
Después de los resultados de la integración se han probado varios plugins de integración de Gitlab. Con el plugins “Git Integration for Jira” es el que se ha conseguido una integración completa.
Tips & Tricks
¿Cómo actualizamos los repositorios?
Por defecto la integración no es en tiempo real. Solo se puede ver la integración en las issues cuando se ejecuta el proceso de actualizar el repositorio.
Para forzar la actualización de los repositorios vamos a Gear -> Productos -> Cuentas de DVCS y les damos a la opción de “Actualizar repositorios”
¿Qué vemos con la integración con Bitbucket que no tenga la integración con Gitlab?
Las diferencias principales entre la integración de Bitbucket vs Jira dependen, a día de hoy, de la versión de Gitlab que estamos usando.
Si usamos la versión de Gitlab CE:
En el panel de desarrollo con la funcionalidad de “Create Branch” no está disponible y los Smarts Commits que permiten registrar el tiempo dedicado y transiciona issues no funcionan. Además no se integran los builds y deployments. Se podría suplir mediante plugins.
Si usamos la versión de Gitlab EE:
En el panel de desarrollo con la funcionalidad de “Create Branch” está disponible y carga en el propio JIRA.
Diferencia entre Gitlab CE vs Gitlab EE
A partir de la información de la página oficial deducimos que no hay diferencias entre las dos versiones si no se compra una licencia.
Free users could use either one of two distributions: Community Edition (CE) and Enterprise Edition (EE). Enterprise Edition can be downloaded, installed, and run without a commercial subscription. In this case it runs using the open source license and only has access to the open source features. In effect, EE without a subscription, and CE, have the exact same functionality.
¿Cómo configuramos Gitlab para que se pueda transicionar con Smart Commits?
Tenemos que recoger los identificadores de las posibles transiciones y configurarlo en Menu->Admin->Settings->Integrations->Jira
Para ver las posibles transiciones de una Issue tenemos que ir al enlace siguiente de tu Jira Cloud:
Por ejemplo: https://sefpsau.atlassian.net/rest/api/2/issue/TMPB-3/transitions
¿Cómo generamos un Token de Jira para conectar con Gitlab?
Para poder conectar Gitlab con Jira tenemos que generar un token des de un usuario administrador de la instancia de Jira Cloud.
Para ello tenemos que ir a nuestra instalación de Jira cloud (https://XXXX.atlassian.net/), hacemos login con un usuario con permisos de administración, vamos a nuestro perfil-> Configuración de la cuenta
Vamos a Seguridad
Vamos a gestionarlos tokens
Le damos a Crear Token de API
Le ponemos un nombre
Le damos a Crear y copiamos el token generado que lo utilizaremos en Gitlab