Instalamos todas las dependencias de la aplicación:
cd ugr-transparente-servidor
sudo npm install
Finalmente iniciamos la aplicación:
npm start
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
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
Comprobamos que tenemos conexión SSH con el servidor.
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.
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:
dev:
La integración continua, además, ejecutará diversas herramientas con las que obtenemos información sobre cobertura, dependencias y calidad del código:
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
UGR Transparente
Version 0.9.11
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
En caso de no tener instalado
git
:Instalamos Node.js:
Comprobamos que Node.js y NPM (su gestor de paquetes) se han instalado correctamente.
Descargamos todo el contenido del repositorio para poder ejecutar la aplicación.
Instalamos todas las dependencias de la aplicación:
Finalmente iniciamos la aplicación:
Igualmente podemos reiniciar o detener la aplicación de una forma similar:
Provisionamiento
También podemos instalar la aplicación automáticamente aprovisionando el servidor con todo lo necesario mediante 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.Comprobamos que tenemos conexión SSH con el servidor.
Si el acceso es correcto la respuesta del servidor será la siguiente:
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.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:
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á endoc/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:
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.
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
yplan.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, dondeUSUARIO
es el usuario con permisos de superusuario con el que accederemos al servidor: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 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ónconfig/
: Archivos de configuración de la aplicaciónpublic/
: Archivos públicos del portalviews/
: Vistas de las paginas con Jadetest/
: Archivos de tests unitarios y de integraciónprovisioning/
: Archivos de provisionamiento