README.md

UGR Transparente

Version 0.9.11
Build Status Coverage Status Dependency Status License Status Node Code Climate


Portal de transparencia de la UGR para publicar los datos y hacerlos accesibles y tratables. Desarrollado con Node.js y Express.

La aplicación es accesible desde http://transparente.ugr.es.
La documentación se encuentra en https://oslugr.github.io/ugr-transparente-servidor/.

Instalación

  1. En caso de no tener instalado git:

     sudo apt-get install git
  2. Instalamos Node.js:

     wget -qO- https://deb.nodesource.com/setup_4.x | sudo bash -
     sudo apt-get install -y nodejs

    Comprobamos que Node.js y NPM (su gestor de paquetes) se han instalado correctamente.

     node -v
     npm -v
  3. Descargamos todo el contenido del repositorio para poder ejecutar la aplicación.

     git clone https://github.com/oslugr/ugr-transparente-servidor.git
  4. Instalamos todas las dependencias de la aplicación:

    cd ugr-transparente-servidor
    sudo npm install
  5. Finalmente iniciamos la aplicación:

     npm start
  6. Igualmente podemos reiniciar o detener la aplicación de una forma similar:

     npm restart|stop

Provisionamiento

También podemos instalar la aplicación automáticamente aprovisionando el servidor con todo lo necesario mediante Ansible.

sudo apt-get install ansible
  1. El archivo ansible_hosts dentro de la carpeta provisioning contiene la dirección del servidor; esta dirección puede ser una dirección IP o una dirección URL.

     [transparente]
     transparente.ugr.es
  2. Comprobamos que tenemos conexión SSH con el servidor.

     ANSIBLE_HOSTS=provisioning/ansible_hosts ansible transparente -u USUARIO -m ping

    Si el acceso es correcto la respuesta del servidor será la siguiente:

     transparente.ugr.es | success >> {
         "changed": false,
         "ping": "pong"
     }
  3. Para ejecutar el provisionamiento Ansible recibirá como variable de entorno la ruta del ansible_hosts (ANSIBLE_HOSTS=provisioning/ansible_hosts) y como parámetro el usuario con el que accederemos al servidor (--extra-vars "user=USUARIO"). El archivo provisioning/transparente.yml es el playbook, el archivo de instrucciones que Ansible seguirá para saber que tareas tiene que llevar a cabo durante el provisionamiento.

     ANSIBLE_HOSTS=provisioning/ansible_hosts ansible-playbook provisioning/transparente.yml --extra-vars "user=USUARIO"

Testing

Se incluyen diversos tests unitarios y de integración, así como análisis de covertura usando las herramientas mocha, chai e istanbul, ejecuta los tests con el comando:

npm test

El resultado de los tests unitarios se mostrarán por pantalla como salida de la ejecución, los resultados de los tests de cobertura se mostrarán en coverage/lcov-report/index.html.

Documentación

Para generar automáticamente la documentación con groc ejecutar npm run doc. esta documentación se encontrará en doc/index.html.

Integración continua

Disponemos de un sistema de integración continua con Travis CI, que desplegará el sistema y ejecutará los tests con cada cambio del repositorio, el estado actual del sistema se puede observar a continuación:

  • master: Build Status
  • dev: Build Status

La integración continua, además, ejecutará diversas herramientas con las que obtenemos información sobre cobertura, dependencias y calidad del código:
Coverage Status Dependency Status Code Climate

Despliegue automático

Cuando hagamos cambios en nuestra aplicación y queramos aplicarlos en el servidor, no es necesario que accedamos a él manualmente y apliquemos dichos cambios, podemos usar Flightplan para hacer esto automáticamente.

Si queremos utilizar Flightplan para el despliegue automático es necesario que tengamos nuestra clave SSH copiada en el servidor como hicimos para el provisionamiento.

ssh-copy-id USUARIO@transparente.ugr.es

El archivo en el que hemos definido la configuración para el despliegue automático es flightplan.js. Podemos diferenciar dos partes esenciales: plan.target y plan.remote; el primero indica los parámetros para acceder al servidor, el segundo indica las tareas a realizar durante el despliegue. Solo falta dar a Flightplan la orden de despliegue automático, donde USUARIO es el usuario con permisos de superusuario con el que accederemos al servidor:

USER=USUARIO npm run deploy

Estructura de la aplicación

Archivos en raíz

La aplicación se encuentra estructurada de forma similar a cualquier proyecto de node.js:

  • README.md, LICENSE, .git y .gitignore: Archivos del repositorio git
  • .tavis.yml: Archivo de configuración de Travis
  • package.json: Información de la aplicación y dependencias
  • bower.json, getRecursos.sh, flightplan.js: Archivos de despliegue
  • app.js: Archivo principal de la aplicación
  • app/: Archivos del programa
    • app/routes/: Archivos de enrutamiento de las páginas de la aplicación
  • config/: Archivos de configuración de la aplicación
  • public/: Archivos públicos del portal
  • views/: Vistas de las paginas con Jade
  • test/: Archivos de tests unitarios y de integración
  • provisioning/: Archivos de provisionamiento