oslugr / ugr-transparente-servidor

Servidor de transparente.ugr.es
GNU General Public License v3.0
14 stars 7 forks source link

UGR Transparente

Version 0.10.5
Build Status Coverage Status Dependency Status License Status Node


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, descarga recursos y genera el bundle de scripts:

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

    npm start
    • Para iniciar la aplicación en modo desarrollo, ejecutar npm run dev
  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.

Tests de navegabilidad

Para realizar un test completo de navegabilidad, ejecutar npm run zobie_test

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:

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

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