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/.
-
En caso de no tener instalado
git
:sudo apt-get install git
-
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
-
Descargamos todo el contenido del repositorio para poder ejecutar la aplicación.
git clone https://github.com/oslugr/ugr-transparente-servidor.git
-
Instalamos todas las dependencias de la aplicación, descarga recursos y genera el bundle de scripts:
cd ugr-transparente-servidor
sudo npm install
-
Finalmente iniciamos la aplicación:
npm start
- Para iniciar la aplicación en modo desarrollo, ejecutar
npm run dev
- Para iniciar la aplicación en modo desarrollo, ejecutar
-
Igualmente podemos reiniciar o detener la aplicación de una forma similar:
npm restart|stop
También podemos instalar la aplicación automáticamente aprovisionando el servidor con todo lo necesario mediante Ansible.
sudo apt-get install ansible
-
El archivo
ansible_hosts
dentro de la carpetaprovisioning
contiene la dirección del servidor; esta dirección puede ser una dirección IP o una dirección URL.[transparente] transparente.ugr.es
-
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" }
-
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 archivoprovisioning/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"
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
.
Para realizar un test completo de navegabilidad, ejecutar npm run zobie_test
Para generar automáticamente la documentación con groc ejecutar npm run doc
. esta documentación se encontrará en doc/index.html
.
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:
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 [email protected]
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
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 Travispackage.json
: Información de la aplicación y dependenciasbower.json
,getRecursos.sh
,flightplan.js
: Archivos de despliegueapp.js
: Archivo principal de la aplicaciónapp/
: Archivos del programaapp/routes/
: Archivos de enrutamiento de las páginas de la aplicación
config/
: Archivos de configuración de la aplicaciónpublic/
: Archivos públicos del portalviews/
: Templates de las páginastest/
: Archivos de tests unitarios y de integraciónprovisioning/
: Archivos de provisionamiento