Jira plug-in sobre BDD (1)

Pedro Espinosa
4 min readOct 18, 2017

--

Crear un plug-in para Jira para facilitar el BDD

Antes de empezar, explicaré brevemente el título de este post:

El objetivo del plug-in es el de facilitar el BDD (Behavior Driven Development/Desarrollo basado en el comportamiento). Para poner en práctica el BDD se utiliza un lenguaje comprendido tanto por máquinas como por humanos, es el lenguaje Gherkin. Por lo tanto, el plug-in permitirá escribir historias de usuario (tareas en Jira) en lenguaje Gherkin y compartirlas o publicarlas en el tablero del equipo del proyecto Jira.

Una vez aclarado el contexto, comenzamos a preparar el entorno de desarrollo. Utilizaremos:

  • Microsoft Visual Studio Code para programar.
  • Node.js como entorno de ejecución para JavaScript.
  • npm como gestor de paquetes.
  • Atlassian Connect Express como herramienta para la creación del plug-in.
  • Bamboo como herramienta de integración continua.
  • Mocha como entorno de testing para Node.js.
  • GitHub para alojar nuestro proyecto en un repositorio y tener un buen control de versiones.
  • Jira para desplegar el plug-in.

Comenzando desde cero…

Lo primero que debemos hacer es entrar en el directorio en el que vayamos a crear el proyecto e instalar la herramienta atlas-connect (teniendo npm previamente instalado).

npm install -g atlas-connect

A continuación creamos el proyecto:

atlas-connect new jira-bdd-plugin

En la nueva carpeta “jira-bdd-plugin” se habrá creado una estructura de carpetas que no pararé a explicar. Sólo mencionaré que se crean un par de archivos .hbs para la vista, un .css, y un index.js como clase principal donde básicamente se renderiza la vista.

A continuación, dado que nuestra aplicación se basará en Node.js, instalaremos los famosos módulos propios de Node:

npm install

El proyecto cuenta con unos 10 archivos más, entre los que destacan credentials.json y atlassian-connect.json. Estos archivos tendremos que configurarlos para desplegar el plug-in en Jira y poder ver los cambios que vamos realizando.

Antes de comenzar con los tests, queremos ver cómo funciona el despliegue del proyecto y ver cómo se ve en Jira el código de ejemplo que se nos proporcionó al crear el proyecto.

Para ello necesitaremos tener previamente una cuenta en Jira o, mejor dicho, un espacio en Atlassian. Realmente tendremos una instancia local propia de Jira.

Atlassian es el owner de Jira, así como de muchos otros productos conocidos, como Confluence, Bamboo, Trello o BitBucket.

Una vez tenemos nuestro espacio en Atlassian ya podremos configurar nuestros archivos. En credentials.json debemos introducir la URL de nuestro espacio y, dentro de ella, el tipo de producto que estamos utilizando (Jira) y el nombre de usuario y contraseña de nuestra cuenta en Atlassian:

credentials.json (editado)

La configuración del atlassian-connect.json es algo más compleja. En este archivo configuraremos el nombre del plug-in y su descripción, el lugar de nuestro espacio de Jira en el que aparecerá, etc.

atlassian-connect.json (editado)

Una vez hecho esto, ya podremos correr el plug-in en nuestra instancia local de Jira mediante un sólo comando (en el directorio raíz del proyecto):

node app.js

Finalmente entrando en nuestro espacio de Jira, podremos ver en la barra de arriba (en el parámetro location del atlassian-connect.json indicamos esta localización) un botón con el nombre que pusimos (BDD Share). Al pulsar, seremos “redirigidos” a la página de nuestro plug-in, que estará dentro (integrado) del propio Jira:

Para tener una primera toma de contacto, hemos comenzado a realizar algunas pruebas interesantes, como conexiones a la API de Jira. Es simple conseguir algo como los proyectos del usuario logeado, que además puede que nos sirva en un futuro para nuestro objetivo final. Quedaría algo así:

En el siguiente post montaremos el entorno de integración continua para poder empezar a lanzar tests unitarios desde el principio y dar forma a este plug-in realizando buenas prácticas de programación.

--

--

Pedro Espinosa

Estudiante de Ingeniería de Software en Universidad Rey Juan Carlos | Programador en VASS