<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robgarcal</id>
		<title>Wiki de EGC - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robgarcal"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php/Especial:Contribuciones/Robgarcal"/>
		<updated>2026-04-16T03:03:40Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7163</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7163"/>
				<updated>2018-01-07T17:22:43Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Integración continua y despliegue con Travis CI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|3306&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
*Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
*Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
*Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
*No hay nombres de dominio para los subsistemas, puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
*Aunque la BD del sistema de votaciones tenga un puerto publicado en Docker, se necesita hacer un mapeo en la máquina virtual. En [http://ask.xmodulo.com/access-nat-guest-from-host-virtualbox.html esta guía] hay información de cómo hacerlo. Basta con establecer el puerto anfitrión y el puerto invitado a 3306.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|recuento&lt;br /&gt;
|rec-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
Lista de nombres que admite el script:&lt;br /&gt;
* portal-votaciones&lt;br /&gt;
* autenticacion&lt;br /&gt;
* adm_censos&lt;br /&gt;
* adm_votaciones&lt;br /&gt;
* almacen_votos&lt;br /&gt;
* cabina_votaciones&lt;br /&gt;
* cabina_votaciones_telegram&lt;br /&gt;
* recuento_votos&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7143</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7143"/>
				<updated>2017-12-30T21:02:01Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Descripción de IPs y puertos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|3306&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
*Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
*Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
*Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
*No hay nombres de dominio para los subsistemas, puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
*Aunque la BD del sistema de votaciones tenga un puerto publicado en Docker, se necesita hacer un mapeo en la máquina virtual. En [http://ask.xmodulo.com/access-nat-guest-from-host-virtualbox.html esta guía] hay información de cómo hacerlo. Basta con establecer el puerto anfitrión y el puerto invitado a 3306.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|recuento&lt;br /&gt;
|rec-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7142</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7142"/>
				<updated>2017-12-30T20:55:08Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Descripción de IPs y puertos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|3306&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
*Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
*Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
*Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
*No hay nombres de dominio para los subsistemas, puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|recuento&lt;br /&gt;
|rec-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7141</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7141"/>
				<updated>2017-12-30T20:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Descripción de IPs y puertos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
*Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
*Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
*Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
*No hay nombres de dominio para los subsistemas, puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|recuento&lt;br /&gt;
|rec-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7140</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7140"/>
				<updated>2017-12-30T20:33:57Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Conexiones a bases de datos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|recuento&lt;br /&gt;
|rec-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7139</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7139"/>
				<updated>2017-12-30T20:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Conexiones a bases de datos ===&lt;br /&gt;
Todas las conexiones se realizan a través del puerto predeterminado de MySQL (3306). Cada equipo debe realizar las configuraciones necesarias en su proyecto para que se puedan conectar a las bases de datos correspondientes. Cuando el contenedor de la base de datos del sistema de votaciones se inicializa por primera vez, se crean las bases de datos necesarias por lo que no se espera que un equipo tenga que interactuar con la base de datos en lo que a configuraciones se refiere. En todos los casos la '''contraseña de acceso''' es &amp;quot;egc&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Nombre de la BD&lt;br /&gt;
!Usuario&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|autenticacion&lt;br /&gt;
|auth-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|adm_censos&lt;br /&gt;
|censos-user&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|AdministracionVotaciones&lt;br /&gt;
|acme-user / acme-manager&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|almacenamiento&lt;br /&gt;
|alm-user&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7138</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7138"/>
				<updated>2017-12-30T19:24:15Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Integración continua con Travis CI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua y despliegue con Travis CI ==&lt;br /&gt;
Para realizar tareas de integración continua y despliegue continuo se usa la herramienta Travis CI. Con objeto de facilitar las operaciones en este ámbito, se ha creado una plantilla del fichero de configuración de Travis (.travis.yml) que los distintos equipos deben incorporar a sus repositorios (con algunas excepciones). Travis realizará un despliegue del subsistema en el servidor de producción de las construcciones satisfactorias en la rama &amp;quot;master&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Para que Travis pueda realizar el despliegue remoto de un subsistema, el equipo de integración añadirá a los repositorios un fichero encriptado.&lt;br /&gt;
&lt;br /&gt;
La plantilla del fichero .travis.yml se encuentra [https://github.com/EGC-G2-Trabajo-1718/integracion/blob/master/travis/template.yml aquí].&lt;br /&gt;
&lt;br /&gt;
'''Notas:'''&lt;br /&gt;
* Si tu equipo no trabaja con la base de datos del sistema de votaciones se deben omitir las líneas anteriores a &amp;quot;before_install&amp;quot;. Sin embargo, es importante que la fase &amp;quot;before_install&amp;quot; siga presente con la línea que hace referencia a la desencriptación del fichero &amp;quot;deploy.enc&amp;quot;.&lt;br /&gt;
* Falta la fase principal &amp;quot;script&amp;quot;, en Travis esta fase es en la que se ejecutan las pruebas unitarias y otros tests. Cada equipo debe saber cómo ejecutar tests mediante los comandos de la herramienta pertinente (mvn, composer, node...), esto es responsabilidad de cada equipo. No se espera que en esta fase se realicen pruebas de integración con otros subsistemas, puesto que desplegar los subsistemas necesarios puede llevar a construcciones de código mucho más lentas, para ello se cuenta con la máquina virtual.&lt;br /&gt;
* Es importante comprobar en las primeras construcciones de la rama master que el código se despliega en la máquina de producción. Pueden haber presentes fallos en el script de despliegue que imposibiliten el despliegue del código a producción. En esos casos se deben registrar incidencias en el [https://github.com/EGC-G2-Trabajo-1718/integracion/ repositorio de integración].&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7137</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7137"/>
				<updated>2017-12-30T18:23:43Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Integración continua con Travis CI ==&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7136</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7136"/>
				<updated>2017-12-30T18:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7135</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7135"/>
				<updated>2017-12-30T18:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Script de inicio general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
'''Nota:''' en muchos casos no es necesario tener desplegados todos los subsistemas, podemos parar la ejecución de los mismos usando el comando &amp;quot;docker stop &amp;lt;nombre_contenedor&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7134</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7134"/>
				<updated>2017-12-30T18:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Las direcciones IPs deben estar presentes en el código publicado en el repositorio remoto, pero durante el desarrollo en local se pueden hacer peticiones a localhost gracias al mapeo de puertos entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP). Si este aspecto se configura en un fichero del proyecto, es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise su código para realizar modificaciones.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7133</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7133"/>
				<updated>2017-12-30T18:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Descripción de IPs y puertos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP), si este aspecto se configura en un fichero del proyecto es responsabilidad del equipo realizar dicho cambio. En la mayoría de los subsistemas esto ha sido conseguido mediante configuraciones de los contenedores, pero en otros subsistemas es necesario que el equipo revise en su código qué modificaciones debe realizar.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7132</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7132"/>
				<updated>2017-12-30T18:10:00Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Script de despliegue temporal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP), si este aspecto se configura en un fichero del proyecto es responsabilidad del equipo realizar dicho cambio.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7131</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7131"/>
				<updated>2017-12-30T18:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Scripts de automatización */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP), si este aspecto se configura en un fichero del proyecto es responsabilidad del equipo realizar dicho cambio.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
Dado que el objetivo principal de la máquina virtual es contar con un entorno de pruebas lo más parecido al de producción (pre-producción), se han creado varios scripts que automatizan todos los procesos de despliegue de los subsistemas en contenedores. Para contar con estos scripts debemos ejecutar los siguientes comandos en la shell de la máquina virtual:&lt;br /&gt;
 cd ~/scripts/ # Alt Gr + 4 para conseguir el caracter &amp;quot;~&amp;quot;&lt;br /&gt;
 git clone https://github.com/EGC-G2-Trabajo-1718/integracion.git&lt;br /&gt;
Con estos comandos descargaremos el repositorio de integración, dentro de la carpeta tools se encuentra una serie de scripts de automatización. Para acceder a ellos basta con ejecutar lo siguiente:&lt;br /&gt;
 cd ~/scripts/integracion/tools&lt;br /&gt;
 ls # El comando &amp;quot;ls&amp;quot; lista los ficheros existentes en el directorio actual.&lt;br /&gt;
'''Nota''': dado que hemos descargado el repositorio de integración podemos obtener versiones más recientes de los scripts ejecutando &amp;quot;git pull&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
Entre los ficheros de la carpeta tools se encuentra el script de inicio general &amp;quot;start.sh&amp;quot;. Este script descarga los repositorios de los distintos subsistemas en la rama especificada por el usuario e inicia un contenedor por cada subsistema con el código descargado. Para iniciar el script escribiremos el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/start.sh&lt;br /&gt;
 bash start.sh # En caso de estar situados dentro de la carpeta &amp;quot;tools&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Script de despliegue temporal ====&lt;br /&gt;
'''IMPORTANTE: Antes de ejecutar este script debemos comprobar en la configuración de la máquina virtual en VirtualBox que hemos especificado un directorio compartido para copiar en él la carpeta del repositorio con los cambios que hemos hecho en el código antes de subirlo.'''&lt;br /&gt;
Este script realiza las mismas tareas que el script de inicio general, pero con la diferencia de que permite iniciar un contenedor dentro de la máquina virtual con el código modificado en tu máquina local para realizar diversas pruebas. Los pasos a realizar para ejecutar este script son los siguientes:&lt;br /&gt;
# Comprobar que en el código se hacen peticiones a la dirección IP de cada subsistema.&lt;br /&gt;
# Realizar una copia del directorio raíz del repositorio. Con esto nos referimos a la carpeta resultante de hacer un &amp;quot;clone&amp;quot; del repositorio, no puede ser una carpeta de dentro del repositorio como &amp;quot;src&amp;quot; o derivados. Esta copia debe guardarse en el directorio compartido entre el sistema anfitrión y la máquina virtual.&lt;br /&gt;
# Ejecutar el script en la máquina virtual mediante el siguiente comando:&lt;br /&gt;
 bash ~/scripts/integracion/tools/deploy-shared.sh&lt;br /&gt;
 bash deploy-shared.sh # Suponiendo que estamos situados dentro del directorio &amp;quot;tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Nota''': debido a los distintos procesos que realizan los scripts, el despliegue de todos los proyectos toma bastante tiempo, además varía en función de la velocidad de la red y del rendimiento de tu equipo.&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7130</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7130"/>
				<updated>2017-12-30T16:53:55Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación.&lt;br /&gt;
&lt;br /&gt;
=== Descripción de IPs y puertos ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
Para comunicarse con la API de algún subsistema es necesario especificar la dirección IP de dicho subsistema.&lt;br /&gt;
&lt;br /&gt;
Todos los subsistemas deben estar configurados para recibir peticiones al puerto 80 (HTTP), si este aspecto se configura en un fichero del proyecto es responsabilidad del equipo realizar dicho cambio.&lt;br /&gt;
&lt;br /&gt;
No hay nombres de dominio para los subsistemas,&lt;br /&gt;
puesto que se encuentran en una red privada y por motivos de seguridad sus servicios no son expuestos al exterior. Cabe recordar el principal consumidor de las APIs de los subsistemas será el portal web del sistema de votaciones.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
=== Scripts de automatización ===&lt;br /&gt;
==== Script de inicio general ====&lt;br /&gt;
==== Script de despliegue de pruebas ====&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7127</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=7127"/>
				<updated>2017-12-30T16:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1nrXjmWwJRuOUIWOtVEZmiqczZaee96Mk/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación. Los puertos asignados a cada subsistema se detallan a continuación:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Dirección IP&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|BD Wordpress&lt;br /&gt;
|172.18.2.1&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|BD Sistema de votación&lt;br /&gt;
|172.18.2.2&lt;br /&gt;
|No publicado al exterior&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|172.18.2.5&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|172.18.2.10&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|172.18.2.20&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|172.18.2.30&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|172.18.2.40&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|172.18.2.50&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|172.18.2.60&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Cabina Telegram&lt;br /&gt;
|No&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|172.18.2.70&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Esta configuración de puertos se mantiene en el entorno de despliegue. Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
=== Subsistemas desplegados ===&lt;br /&gt;
*Wordpress (Portal Jornadas)&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar API ===&lt;br /&gt;
&lt;br /&gt;
''' URL base '''&lt;br /&gt;
Ruta completa incluido el dominio (Ej: https://censo.nvotesus.es/api/v1, https://censo.nvotesus.es/api)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Por cada ruta de la API:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' URL relativa '''&lt;br /&gt;
&lt;br /&gt;
Ruta relativa en base a la URL anterior (Ej: /getUser, /storeVote)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Descripción '''&lt;br /&gt;
&lt;br /&gt;
Descripción de la tarea que realiza la ruta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Petición HTTP '''&lt;br /&gt;
&lt;br /&gt;
Indicar el método HTTP usado (Ej: GET, POST, PUT, DELETE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Parámetros de petición '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción y valor por defecto (Si tiene valor por defecto significara que es opcional).&lt;br /&gt;
 &lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
! Valor por defecto&lt;br /&gt;
|-&lt;br /&gt;
| user&lt;br /&gt;
| integer&lt;br /&gt;
| Nombre del usuario&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de petición '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso de la url (Ej: GET https://auth.nvotesus.es/api/v1/get?user=test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Respuesta '''&lt;br /&gt;
&lt;br /&gt;
Parametros que puede recibir indicando el nombre, tipo, descripción. Será obligatorio incluir los parametros result y msg&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nombre&lt;br /&gt;
! Tipo&lt;br /&gt;
! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| Boolean&lt;br /&gt;
| Resultado de la operación&lt;br /&gt;
|-&lt;br /&gt;
| msg&lt;br /&gt;
| String&lt;br /&gt;
| Mensaje de resultado o error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Ejemplo de respuesta '''&lt;br /&gt;
&lt;br /&gt;
Ejemplo de la respuesta a recibir.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot; : true,&lt;br /&gt;
   &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
   &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
   &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
   &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
   &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
   &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
   &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
   &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Códigos de error '''&lt;br /&gt;
&lt;br /&gt;
Códigos de error que puede devolver el método indicando el código HTTP, valor de result, valor del mensaje y una breve explicación de porque ha podido pasar. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario indicado no existe.&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| No tienes permisos para acceder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6615</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6615"/>
				<updated>2017-11-28T17:34:49Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1QcyMX2CTODWyq4KWQSWc259S-sidhe4f/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación. Los puertos asignados a cada subsistema se detallan a continuación:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Esta configuración de puertos se mantiene en el entorno de despliegue. Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
=== Subsistemas desplegados ===&lt;br /&gt;
*Wordpress (Portal Jornadas)&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
'''Nota''': la máquina ha sido exportada como un servicio virtualizado de VirtualBox.&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6614</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6614"/>
				<updated>2017-11-28T17:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1QcyMX2CTODWyq4KWQSWc259S-sidhe4f/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación. Los puertos asignados a cada subsistema se detallan a continuación:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Esta configuración de puertos se mantiene en el entorno de despliegue. Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
=== Subsistemas desplegados ===&lt;br /&gt;
*Wordpress (Portal Jornadas)&lt;br /&gt;
&lt;br /&gt;
=== Configuración de la máquina ===&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6613</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6613"/>
				<updated>2017-11-28T17:32:06Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Máquina virtual de desarrollo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;br /&gt;
La máquina virtual de desarrollo (descarga [https://drive.google.com/file/d/1QcyMX2CTODWyq4KWQSWc259S-sidhe4f/view?usp=sharing aquí]) permite a cada equipo desarrollar su trabajo en local y comprobar como se integra con el resto de subsistemas. La máquina virtual comparte una serie de puertos con el equipo anfitrión para conseguir la comunicación. Los puertos asignados a cada subsistema se detallan a continuación:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Subsistema&lt;br /&gt;
!Puerto&lt;br /&gt;
|-&lt;br /&gt;
|Wordpress (Portal Jornadas)&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
|Portal votaciones&lt;br /&gt;
|50010&lt;br /&gt;
|-&lt;br /&gt;
|Autenticación&lt;br /&gt;
|50020&lt;br /&gt;
|-&lt;br /&gt;
|Administración de censos&lt;br /&gt;
|50030&lt;br /&gt;
|-&lt;br /&gt;
|Administración de votaciones&lt;br /&gt;
|50040&lt;br /&gt;
|-&lt;br /&gt;
|Almacenamiento de votos&lt;br /&gt;
|50050&lt;br /&gt;
|-&lt;br /&gt;
|Cabina de votaciones&lt;br /&gt;
|50060&lt;br /&gt;
|-&lt;br /&gt;
|Recuento&lt;br /&gt;
|50070&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Esta configuración de puertos se mantiene en el entorno de despliegue. Para acceder a algún servicio la URL consiste en &amp;lt;nowiki&amp;gt;http://localhost:&amp;lt;puerto&amp;gt;&amp;lt;/nowiki&amp;gt;. Ej: &amp;lt;nowiki&amp;gt;http://localhost:50000&amp;lt;/nowiki&amp;gt; para acceder al portal wordpress.&lt;br /&gt;
&lt;br /&gt;
==== Subsistemas desplegados ====&lt;br /&gt;
*Wordpress (Portal Jornadas)&lt;br /&gt;
&lt;br /&gt;
==== Configuración de la máquina ====&lt;br /&gt;
*'''Número de CPUs''': 2&lt;br /&gt;
*'''RAM Reservada''': 1536MB&lt;br /&gt;
*'''SO''': Debian 9 (Stretch) &lt;br /&gt;
*'''Usuario''': egc&lt;br /&gt;
*'''Contraseña''': egc&lt;br /&gt;
*'''Tiene Docker y Docker Compose instalados'''&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6612</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6612"/>
				<updated>2017-11-28T17:09:16Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;br /&gt;
&lt;br /&gt;
=== Gestión de ramas ===&lt;br /&gt;
Cada equipo debe establecer una metodología de gestión de ramas. A continuación ponemos un ejemplo de gestión de ramas:&lt;br /&gt;
[[File:branch-flow.png|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/d/dc/Branch-flow.png]]&lt;br /&gt;
&lt;br /&gt;
== Máquina virtual de desarrollo ==&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6586</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6586"/>
				<updated>2017-11-27T19:38:34Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formato general de commits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base].&lt;br /&gt;
&lt;br /&gt;
Es importante diferenciar entre los tipos (types) y usar todos en la medida de lo posible. Los ámbitos o focos (scopes) pueden emplearse para hacer referencia a distintas funcionalidades (features).&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6585</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6585"/>
				<updated>2017-11-27T19:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formato general de commits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;br /&gt;
El formato general de los commits parte de la siguiente [http://karma-runner.github.io/1.0/dev/git-commit-msg.html base]. A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras emitir voto&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras emitir voto&lt;br /&gt;
 &lt;br /&gt;
 Después de que el usuario emitiese su voto este era redireccionado a una URL no existente. Ahora el usuario es redireccionado al panel principal.&lt;br /&gt;
 &lt;br /&gt;
 Closes #19&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6575</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6575"/>
				<updated>2017-11-27T18:24:17Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formatos y procedimientos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;br /&gt;
&lt;br /&gt;
=== Formato general de commits ===&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6574</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6574"/>
				<updated>2017-11-27T18:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formatos y procedimientos ==&lt;br /&gt;
&lt;br /&gt;
=== Formato para detallar tecnologías elegidas ===&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
=== Formato general para detallar incidencias ===&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6572</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6572"/>
				<updated>2017-11-27T18:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Procedimiento general para la gestión de incidencias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
== Formato general para detallar incidencias ==&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
== Procedimiento general para la gestión de incidencias ==&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6563</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6563"/>
				<updated>2017-11-27T16:54:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
== Formato general para detallar incidencias ==&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
== Procedimiento general para la gestión de incidencias ==&lt;br /&gt;
# Establecer a un miembro del equipo el rol gestor de incidencias.&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en Proyectos de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6562</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6562"/>
				<updated>2017-11-27T16:11:42Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formato general para detallar incidencias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
== Formato general para detallar incidencias ==&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en Proyectos de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_13_Nov_2017_-_Grupo_2&amp;diff=6546</id>
		<title>Asamblea 13 Nov 2017 - Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_13_Nov_2017_-_Grupo_2&amp;diff=6546"/>
				<updated>2017-11-27T10:54:14Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «link=https://1984.lsi.us.es/wiki-egc/images/egc/b/b7/Asamblea2_G2_1718.jpg  Después de que el coordinador de la asignatu...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Asamblea2 G2 1718.jpg|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/b/b7/Asamblea2_G2_1718.jpg]]&lt;br /&gt;
&lt;br /&gt;
Después de que el coordinador de la asignatura explicara con más detalle el sistema de evaluación de los distintos apartados de la asignatura, las personas que no participaron en la organización presentaron propuestas sobre el sistema de puntuación a aplicar sobre el 10% de su nota final.&lt;br /&gt;
&lt;br /&gt;
== Propuesta A ==&lt;br /&gt;
Esta propuesta establece que la puntuación de cada miembro vendrá dada por las horas que haya invertido tanto en la asistencia a las jornadas como en la realización de un trabajo acordado con el profesor y que esté enmarcado en el contexto de las jornadas. Para conseguir un 5 será necesario invertir 6 horas como mínimo y para conseguir un 10 será necesario invertir 12 horas mínimo.&lt;br /&gt;
&lt;br /&gt;
== Propuesta B ==&lt;br /&gt;
Esta propuesta establece que la puntuación de cada miembro se basa en la suma de las horas de asistencia y las invertidas en realizar tareas de apoyo a la organización. El trabajo realizado en apoyo es evaluable por el profesor y puede tomar un valor de hasta 5 puntos.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Tras la presentación de las propuestas, estas se sometiron a votación. Resultó ganadora la propuesta A.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Propuesta A&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 18 votos&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Propuesta B&lt;br /&gt;
|1 voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fecha límite de presentación de trabajos ==&lt;br /&gt;
El día '''5 de diciembre de 2017 (martes)''' es la fecha límite de entrega de trabajos junto con la hoja de calculo correspondiente según el formato definido en el documento [[Archivo:00-Jornadas1718.pdf]]&lt;br /&gt;
&lt;br /&gt;
'''Nota:''' enviar los trabajos en formato PDF y la hoja de cálculo con las horas dedicadas en formato [https://es.wikipedia.org/wiki/OpenDocument OpenDocument] (.ods)&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Asamblea2_G2_1718.jpg&amp;diff=6545</id>
		<title>Archivo:Asamblea2 G2 1718.jpg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Asamblea2_G2_1718.jpg&amp;diff=6545"/>
				<updated>2017-11-27T10:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Votaciones de la asamblea del 13/11/2017 (G2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Votaciones de la asamblea del 13/11/2017 (G2)&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asambleas_-_17/18&amp;diff=6542</id>
		<title>Asambleas - 17/18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asambleas_-_17/18&amp;diff=6542"/>
				<updated>2017-11-27T09:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Página_Principal]] -&amp;gt; [[2017/2018]]&lt;br /&gt;
&lt;br /&gt;
* [[Reglamento Asamblea 2017 | Reglamento para la asamblea de peso de los elementos evaluables]] &lt;br /&gt;
* [[Asamblea 5 Oct 2017 - Grupo 1 | Asamblea 5 Octubre 2017 - Grupo 1, Peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 5 Oct 2017 - Grupo 2 | Asamblea 5 Octubre 2017 - Grupo 2,  Peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 13 Nov 2017 - Grupo 2 | Asamblea 13 Noviembre 2017 - Grupo 2,  Reestructuración del peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 16 Nov 2017 - Grupo 1 | Asamblea 16 Noviembre 2017 - Grupo 1,  Reestructuración del peso de los elementos evaluables]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asambleas_-_17/18&amp;diff=6541</id>
		<title>Asambleas - 17/18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asambleas_-_17/18&amp;diff=6541"/>
				<updated>2017-11-27T09:57:36Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Página_Principal]] -&amp;gt; [[2017/2018]]&lt;br /&gt;
&lt;br /&gt;
* [[Reglamento Asamblea 2017 | Reglamento para la asamblea de peso de los elementos evaluables]] &lt;br /&gt;
* [[Asamblea 5 Oct 2017 - Grupo 1 | Asamblea 5 Octubre 2017 - Grupo 1, Peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 5 Oct 2017 - Grupo 2 | Asamblea 5 Octubre 2017 - Grupo 2,  Peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 13 Nov 2017 - Grupo 1 | Asamblea 13 Noviembre 2017 - Grupo 2,  Reestructuración del peso de los elementos evaluables]]&lt;br /&gt;
* [[Asamblea 16 Nov 2017 - Grupo 1 | Asamblea 16 Noviembre 2017 - Grupo 1,  Reestructuración del peso de los elementos evaluables]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6415</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6415"/>
				<updated>2017-11-21T13:16:33Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formato general para detallar incidencias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
== Formato general para detallar incidencias ==&lt;br /&gt;
Las incidencias pueden emplearse no solo para fallos.&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    enhancement: propuesta de mejora&lt;br /&gt;
    bug: fallos encontrados en el sistema&lt;br /&gt;
    help wanted: incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    question: (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en Proyectos de GitHub.&lt;br /&gt;
&lt;br /&gt;
Estas diapositivas incluyen información complementaria:&lt;br /&gt;
https://github.com/InnosoftDaysPresidencia/Presidencia/raw/master/GitHub/Gu%C3%ADa%20de%20GitHub%20Classroom.pdf&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6403</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6403"/>
				<updated>2017-11-21T12:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;br /&gt;
&lt;br /&gt;
== Formato general para detallar incidencias ==&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6398</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6398"/>
				<updated>2017-11-21T12:16:45Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Formato para explicar tecnologías usasdas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para detallar tecnologías elegidas ==&lt;br /&gt;
 '''Subsistema''': &amp;lt;Nombre del subsistema/equipo&amp;gt;&lt;br /&gt;
 '''Lenguaje/Herramienta''': &amp;lt;Lenguaje/herramienta escogida y versión&amp;gt;&lt;br /&gt;
 '''Sistema de gestión de bibliotecas''': &amp;lt;Herramienta que se usa para añadir bibliotecas/dependencias&amp;gt; (Ej: Java-&amp;gt;Maven, Python-&amp;gt;pip)&lt;br /&gt;
 '''Bibliotecas''': &amp;lt;Listado de bibliotecas usadas en el desarrollo.&amp;gt;&lt;br /&gt;
    '''Nombre_Biblioteca1''': &amp;lt;versión&amp;gt;&lt;br /&gt;
 '''Necesita Base de datos''': &amp;lt;Sí/No&amp;gt; (En caso afirmativo explicar cuál se está empleando y su versión)&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6391</id>
		<title>Equipo de integración general - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Equipo_de_integraci%C3%B3n_general_-_17_18_-_G2&amp;diff=6391"/>
				<updated>2017-11-21T11:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Miembros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Gonzalo Delgado Chaves&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Jesús Rivas Jiménez&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Javier Sánchez Parra&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mohammed Alaoui Mhammedi&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Roberto García Calero&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repositorio GitHub ==&lt;br /&gt;
&lt;br /&gt;
El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/integracion aquí]&lt;br /&gt;
&lt;br /&gt;
== Opera ==&lt;br /&gt;
&lt;br /&gt;
Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/74 aquí]&lt;br /&gt;
&lt;br /&gt;
== Formato para explicar tecnologías usasdas ==&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Recuento_de_votos_-_17_18_-_G2&amp;diff=6389</id>
		<title>Recuento de votos - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Recuento_de_votos_-_17_18_-_G2&amp;diff=6389"/>
				<updated>2017-11-21T11:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «== Objetivo del subsistema == Dada una votación el subsistema deberá realizar un recuento de los votos almacenados.  == Consideraciones == * Los votos están encriptados....»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Dada una votación el subsistema deberá realizar un recuento de los votos almacenados.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Los votos están encriptados.&lt;br /&gt;
* Se realizan principalmente consultas. No se modifican datos de las votaciones.&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Recuento-y-modificacion&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Gesti%C3%B3n_del_registro_-_17_18_-_G2&amp;diff=6384</id>
		<title>Gestión del registro - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Gesti%C3%B3n_del_registro_-_17_18_-_G2&amp;diff=6384"/>
				<updated>2017-11-21T10:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: /* Consideraciones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Proporcionar un sistema de registro para asistentes a las jornadas.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe integrarse con el portal de las jornadas (código heredado Wordpress).&lt;br /&gt;
* Debe acceder a la base de datos del portal.&lt;br /&gt;
* Debe permitir establecer períodos de registro y controlar que no se produzcan registros fuera de los plazos.&lt;br /&gt;
* ¿Obtener lista de registrados si eres administrador del portal?&lt;br /&gt;
* Repositorio donde puede encontrarse el código: https://github.com/cefiro-github/splc2017-registration&lt;br /&gt;
* Sitio web en donde se puede ver una instancia del proyecto funcionando: http://congreso.us.es/splc2017/registration-info/&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Gesti%C3%B3n_del_registro_-_17_18_-_G2&amp;diff=6383</id>
		<title>Gestión del registro - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Gesti%C3%B3n_del_registro_-_17_18_-_G2&amp;diff=6383"/>
				<updated>2017-11-21T10:43:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «== Objetivo del subsistema == Proporcionar un sistema de registro para asistentes a las jornadas.  == Consideraciones == * Debe integrarse con el portal de las jornadas (c...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Proporcionar un sistema de registro para asistentes a las jornadas.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe integrarse con el portal de las jornadas (código heredado Wordpress).&lt;br /&gt;
* Debe acceder a la base de datos del portal.&lt;br /&gt;
* Debe permitir establecer períodos de registro y controlar que no se produzcan registros fuera de los plazos.&lt;br /&gt;
* ¿Obtener lista de registrados si eres administrador del portal?&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Espacios_para_el_grupo_2_1718&amp;diff=6377</id>
		<title>Espacios para el grupo 2 1718</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Espacios_para_el_grupo_2_1718&amp;diff=6377"/>
				<updated>2017-11-20T20:48:44Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EN CONSTRUCCIÓN&lt;br /&gt;
== Lista de proyectos ==&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Espacios_para_el_grupo_2_1718&amp;diff=6376</id>
		<title>Espacios para el grupo 2 1718</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Espacios_para_el_grupo_2_1718&amp;diff=6376"/>
				<updated>2017-11-20T20:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «== Lista de proyectos ==»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Lista de proyectos ==&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Espacio_para_los_grupos_17-18&amp;diff=6375</id>
		<title>Espacio para los grupos 17-18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Espacio_para_los_grupos_17-18&amp;diff=6375"/>
				<updated>2017-11-20T20:31:36Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «Selecciona tu grupo:  * Grupo 1 (Mañana) * Grupo 2 (Tarde)»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selecciona tu grupo:&lt;br /&gt;
&lt;br /&gt;
* [[Espacios para el grupo 1 1718|Grupo 1 (Mañana)]]&lt;br /&gt;
* [[Espacios para el grupo 2 1718|Grupo 2 (Tarde)]]&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6182</id>
		<title>Asamblea 5 Oct 2017 - Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6182"/>
				<updated>2017-10-06T08:46:09Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Asamblea1 G2 1718.jpg|center|thumb|1000px|link=https://1984.lsi.us.es/wiki-egc/images/egc/3/3f/Asamblea1_G2_1718.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Elección del delegado ==&lt;br /&gt;
&lt;br /&gt;
La asamblea comenzó con la '''elección del delegado'''. Se presentó únicamente la&lt;br /&gt;
candidatura de '''Roberto García Calero''', quien ahora es el delegado.&lt;br /&gt;
&lt;br /&gt;
== Propuestas y votaciones ==&lt;br /&gt;
&lt;br /&gt;
Posteriormente los alumnos realizaron propuestas de porcentajes para cada&lt;br /&gt;
apartado de la asignatura (jornadas, proyecto y ejercicio). Los alumnos&lt;br /&gt;
propusieron algunos porcentajes. Pero previamente se sometieron a votación a&lt;br /&gt;
mano alzada los siguientes aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Aplicar una ponderación diferente a las personas que participen de forma activa en las jornadas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 43&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|17 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
'''Realizar la votación de los porcentajes con dos vueltas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 40&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|1 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
A continuación los alumnos votaron '''los porcentajes para personas que no participasen de forma activa en las jornadas''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!A&lt;br /&gt;
!C&lt;br /&gt;
!E&lt;br /&gt;
!G&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|15&lt;br /&gt;
|40&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|60&lt;br /&gt;
|65&lt;br /&gt;
|40&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|20&lt;br /&gt;
|50&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 31&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 38&lt;br /&gt;
|24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''A'''.&lt;br /&gt;
&lt;br /&gt;
Después se realizaron propuestas de '''porcentajes para personas que participasen de forma activa en las jornadas''' y se recogieron los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!B&lt;br /&gt;
!D&lt;br /&gt;
!E&lt;br /&gt;
!F&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|30&lt;br /&gt;
|25&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|40&lt;br /&gt;
|45&lt;br /&gt;
|60&lt;br /&gt;
|60&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|30&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|7&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 10&lt;br /&gt;
|6&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 19&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''F'''.&lt;br /&gt;
&lt;br /&gt;
== Poderación final ==&lt;br /&gt;
&lt;br /&gt;
Queda establecido que la ponderación de los elementos evaluables para el grupo 2 es la siguiente:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; | Actividad en jornadas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!Asistencia general&lt;br /&gt;
!Participación activa&lt;br /&gt;
|-&lt;br /&gt;
!Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!Proyecto&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | 60&lt;br /&gt;
|-&lt;br /&gt;
!Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6181</id>
		<title>Asamblea 5 Oct 2017 - Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6181"/>
				<updated>2017-10-06T08:45:20Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Asamblea1 G2 1718.jpg|center|thumb|750px|link=https://1984.lsi.us.es/wiki-egc/images/egc/3/3f/Asamblea1_G2_1718.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Elección del delegado ==&lt;br /&gt;
&lt;br /&gt;
La asamblea comenzó con la '''elección del delegado'''. Se presentó únicamente la&lt;br /&gt;
candidatura de '''Roberto García Calero''', quien ahora es el delegado.&lt;br /&gt;
&lt;br /&gt;
== Propuestas y votaciones ==&lt;br /&gt;
&lt;br /&gt;
Posteriormente los alumnos realizaron propuestas de porcentajes para cada&lt;br /&gt;
apartado de la asignatura (jornadas, proyecto y ejercicio). Los alumnos&lt;br /&gt;
propusieron algunos porcentajes. Pero previamente se sometieron a votación a&lt;br /&gt;
mano alzada los siguientes aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Aplicar una ponderación diferente a las personas que participen de forma activa en las jornadas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 43&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|17 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
'''Realizar la votación de los porcentajes con dos vueltas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 40&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|1 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
A continuación los alumnos votaron '''los porcentajes para personas que no participasen de forma activa en las jornadas''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!A&lt;br /&gt;
!C&lt;br /&gt;
!E&lt;br /&gt;
!G&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|15&lt;br /&gt;
|40&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|60&lt;br /&gt;
|65&lt;br /&gt;
|40&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|20&lt;br /&gt;
|50&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 31&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 38&lt;br /&gt;
|24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''A'''.&lt;br /&gt;
&lt;br /&gt;
Después se realizaron propuestas de '''porcentajes para personas que participasen de forma activa en las jornadas''' y se recogieron los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!B&lt;br /&gt;
!D&lt;br /&gt;
!E&lt;br /&gt;
!F&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|30&lt;br /&gt;
|25&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|40&lt;br /&gt;
|45&lt;br /&gt;
|60&lt;br /&gt;
|60&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|30&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|7&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 10&lt;br /&gt;
|6&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 19&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''F'''.&lt;br /&gt;
&lt;br /&gt;
== Poderación final ==&lt;br /&gt;
&lt;br /&gt;
Queda establecido que la ponderación de los elementos evaluables para el grupo 2 es la siguiente:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; | Actividad en jornadas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!Asistencia general&lt;br /&gt;
!Participación activa&lt;br /&gt;
|-&lt;br /&gt;
!Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!Proyecto&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | 60&lt;br /&gt;
|-&lt;br /&gt;
!Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Asamblea1_G2_1718.jpg&amp;diff=6180</id>
		<title>Archivo:Asamblea1 G2 1718.jpg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Asamblea1_G2_1718.jpg&amp;diff=6180"/>
				<updated>2017-10-06T08:35:15Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Resultados de las votaciones realizadas en la primera asamblea del grupo 2 del curso 2017/18&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resultados de las votaciones realizadas en la primera asamblea del grupo 2 del curso 2017/18&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6179</id>
		<title>Asamblea 5 Oct 2017 - Grupo 2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Asamblea_5_Oct_2017_-_Grupo_2&amp;diff=6179"/>
				<updated>2017-10-06T08:23:45Z</updated>
		
		<summary type="html">&lt;p&gt;Robgarcal: Página creada con «== Elección del delegado ==  La asamblea comenzó con la '''elección del delegado'''. Se presentó únicamente la candidatura de '''Roberto García Calero''', quien ahora...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Elección del delegado ==&lt;br /&gt;
&lt;br /&gt;
La asamblea comenzó con la '''elección del delegado'''. Se presentó únicamente la&lt;br /&gt;
candidatura de '''Roberto García Calero''', quien ahora es el delegado.&lt;br /&gt;
&lt;br /&gt;
== Propuestas y votaciones ==&lt;br /&gt;
&lt;br /&gt;
Posteriormente los alumnos realizaron propuestas de porcentajes para cada&lt;br /&gt;
apartado de la asignatura (jornadas, proyecto y ejercicio). Los alumnos&lt;br /&gt;
propusieron algunos porcentajes. Pero previamente se sometieron a votación a&lt;br /&gt;
mano alzada los siguientes aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Aplicar una ponderación diferente a las personas que participen de forma activa en las jornadas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 43&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|17 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
'''Realizar la votación de los porcentajes con dos vueltas''', con el siguiente resultado:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | A favor&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 40&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | En contra&lt;br /&gt;
|19&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Abstenciones&lt;br /&gt;
|1 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 A favor.&lt;br /&gt;
&lt;br /&gt;
A continuación los alumnos votaron '''los porcentajes para personas que no participasen de forma activa en las jornadas''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!A&lt;br /&gt;
!C&lt;br /&gt;
!E&lt;br /&gt;
!G&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|15&lt;br /&gt;
|40&lt;br /&gt;
|30&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|60&lt;br /&gt;
|65&lt;br /&gt;
|40&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|20&lt;br /&gt;
|50&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 31&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|1&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 32&lt;br /&gt;
|24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''A'''.&lt;br /&gt;
&lt;br /&gt;
Después se realizaron propuestas de '''porcentajes para personas que participasen de forma activa en las jornadas''' y se recogieron los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; | Propuestas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!B&lt;br /&gt;
!D&lt;br /&gt;
!E&lt;br /&gt;
!F&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Jornadas&lt;br /&gt;
|30&lt;br /&gt;
|25&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Proyecto&lt;br /&gt;
|40&lt;br /&gt;
|45&lt;br /&gt;
|60&lt;br /&gt;
|60&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;text-align:left;&amp;quot; | Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|30&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!Votos 1ª ronda&lt;br /&gt;
|7&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 10&lt;br /&gt;
|6&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 19&lt;br /&gt;
|-&lt;br /&gt;
!Votos 2ª ronda&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|&lt;br /&gt;
|style=&amp;quot;color:green; font-weight:bold;&amp;quot; | 24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Propuesta más votada: '''F'''.&lt;br /&gt;
&lt;br /&gt;
== Poderación final ==&lt;br /&gt;
&lt;br /&gt;
Queda establecido que la ponderación de los elementos evaluables para el grupo 2 es la siguiente:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; | Actividad en jornadas&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
!Asistencia general&lt;br /&gt;
!Participación activa&lt;br /&gt;
|-&lt;br /&gt;
!Jornadas&lt;br /&gt;
|10&lt;br /&gt;
|20&lt;br /&gt;
|-&lt;br /&gt;
!Proyecto&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | 60&lt;br /&gt;
|-&lt;br /&gt;
!Ejercicio&lt;br /&gt;
|30&lt;br /&gt;
|20&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Robgarcal</name></author>	</entry>

	</feed>