Tabla de Contenidos

Preparar el Entorno de Ejecución

Objetivos

El objetivo de este proceso es el disponer de un entorno de ejecución conforme a los requisitos que cumple la release a liberar. Para crear ese entorno habrá que seguir los siguientes pasos

Estos tres puntos se corresponden con las tres tareas del diagrama. Una vez hecho esto tendremos como resultado una aplicación en un contenedor ya sea de PREPRODUCCION o PRODUCCION.

Roles

Los siguientes son los roles participantes en este proceso:

Rol Tareas que interviene
Desarrollador
MDA-TR-1.0-DSP-Crear Entorno
MDA-TR-1.0-DSP-Insertar Datos
MDA-TR-1.0-DSP-Instalar Aplicacion

Tareas

Las tres tareas están muy interrelacionadas, por lo que para este caso agruparemos las 3 tareas en un solo JIRA.

Cada participante en esta tarea DEBE crear un JIRA con los siguientes datos, y registrar las horas de trabajo en ella:

Tipo Sumario Disciplina Proceso Label Version Fijada
Tarea Preparar un entorno de ejecucion Despliegue DSP-Preparar un entorno de ejecución PRE / PRO [Versión del proyecto]
NotaUtiliza la etiqueta PRE/PRO para diferenciar cuando estés preparando un entorno de ejecución de preproducción o de producción

MDA-TR-1.0-DSP-Crear Entorno

Paso 1. Comprobar la existencia entorno

Por defecto el entorno estará creado, al pedir una nueva aplicación. En este paso comprobaremos que ha sido creado correctamente y ejecutaremos los scripts de creación de base de datos.

Si la subida es a DESARROLLO, comprobaremos que existe en la base de datos “ISIS” el schema de nuestra aplicación.

Si la subida es a PREPRODUCCION, comprobaremos que existe en la base de datos “VENUSCK” el schema de nuestra aplicación.

Si la subida es a PRODUCCION, comprobaremos que existe en la base de datos “VENUS” el schema de nuestra aplicación.

:!: Para las pruebas de migración a Linux la BD es VENUSLX.

Para probar que el contenedor esta creado, tenemos la url que nos proporciona sistemas. Si es en desarrollo/preproducción:

Si la aplicación se llama nombreaplicacion

Para pruebas (DESARROLLO)

http://nombreaplicacionpruebas.um.es/nombreaplicacion/servlet/SnoopServlet

http://nombreaplicacionpruebas.um.es/nombreaplicacion/servlet/TestDataSource

Para pruebas (PREPRODUCCION)

http://nombreaplicaciontest.um.es/nombreaplicacion/servlet/SnoopServlet

http://nombreaplicaciontest.um.es/nombreaplicacion/servlet/TestDataSource

Para producción (PRODUCCION)

http://nombreaplicacion.um.es/nombreaplicacion/servlet/SnoopServlet

http://nombreaplicacion.um.es/nombreaplicacion/servlet/TestDataSource

:!: Para las pruebas de migración a Weblogic hay que solicitar a Sistemas un servidor “nombreaplicacionpruebaswl.um.es”.

Paso 2. Crear los componentes de base de datos

En esa base de datos ejecutaremos los scripts de creación de base de datos que tengamos en nuestra carpeta “BBDD”. Distinguimos dos casos:

Compararemos la version actual del proyecto (de la que se acaba de hacer el tag), con la ultima version anterior del proyecto que hay subida en PREPRODUCCION, mediante Tortoise SVN. Mark as compare compare url.

Con esto nos saldrá la lista de cambios que tenemos que ejecutar en VENUSCK o en VENUS.

Hay que ejecutarlos para garantizar que tenemos la version del codigo de BD correcta. Si se ha olvidado algo se deberá de añadir a la rama BD de PREPRODUCCION o PRODUCCION que luego se actualizará al hacer el merge al tronco principal.

Importante: en caso de que no existan esos script, o no se han actualizado porque no se ha seguido MEDEA:

Si estamos subiendo a PREPRODUCCION los cogeremos de la base de datos y los AÑADIREMOS a subversion (commit) a la rama de PREPRODUCCION (betas y CRs)y los ejecutaremos. Si estamos subiendo a PRODUCCION los cogeremos de la base de datos de VENUSCK y los AÑADIREMOS a subversion a la rama de produccion (1.0.0) y los ejecutaremos. Esto es importante para que queden versionados en el sistema.

Paso 3. Cambiar DataSource

Si estamos subiendo a PREPRODUCCION informaremos a Sistemas para que cambien el origen de datos de la aplicacion en DESARROLLO para que apunte a VENUSCK en vez de a ISIS. En los ordenadores locales seguirán funcionando con la versión de ISIS.

Paso 4. Parar la actualización automática de Sistemas

Cuando se suba por primera vez a PREPRODUCCION, se desactiva la publicación al contenedor de desarrollo de la rama de principal de desarrollo, para que no se “machaque” con la version que queremos enseñar al usuario, ya que comparten el mismo contenedor.

Se seguirán haciendo las tareas de calidad y compilado de la rama principal , pero sin llegar a subirla al contenedor.

Ahora bien una vez que el usuario ha probado la aplicación, quizás nos interese volver a tener esa subida, ya que la versión en preproducción ya no tenga sentido.

Para ello volveriamos a cambiar la url del datasource del contenedor de pruebas a DESARROLLO y bastaria con borrar el fichero

preproduccion.deploy.flag

que se encuentra en la rama de desarrollo (suele ser web_egeria) dentro del nombre del proyecto.

MDA-TR-1.0-DSP-Insertar Datos

En caso necesario se hará una primera inserción de datos en VENUSCK o en VENUS. Esta inserción inicial de datos será necesaria en caso de que se utilicen datos que no son tratados por la aplicacion.

Por ejemplo, los permisos de usuarios. Tablas donde se guardan los permisos, que se le dan a los usuarios según el rol que tengan. Rol de administrador tiene permisos para estas paginas. Si no se tienen cargados nadie podrá acceder a la aplicación a insertar datos.

Estos scripts de carga de la aplicación deben de estar en el archivo \\carga_inicial.sql
que se encuentra en la rama BD de la aplicación.

MDA-TR-1.0-DSP-Instalar Aplicacion

Procedimiento de Paso a Producción de una Aplicación (ENS)

Una vez creado el TAG, subiremos el proyecto al contenedor correspondiente (PREPRODUCCION O PRODUCCION).

FIXME Hay que explicar la nueva forma de desplegar aplicaciones con Jenkins.

1. Crear la tarea en el Jenkins

FIXME Hay que explicar la nueva forma de desplegar aplicaciones con Jenkins.

Tanto si vamos a publicar a PREPRODUCCION o PRODUCCION , si no existe la tarea Nombreaplicacion-Preproduccion__NOMBREGRUPO o Nombreaplicacion-Produccion_NOMBREGRUPO en el Jenkins habrá que crearla para permitirnos subidas rapidas a los contenedores.

En la url |crear nuevo proyecto explica como crear una nueva tarea en el Jenkins.

Se creará una tarea Nombreaplicacion_preproduccion_nombregrupo o Nombreaplicacion-preproduccion_nombregrupo copia de Prototipo_preproduccion_MNCS o Prototipo_produccion_MNCS respectivamente.

Luego se pasará a configurar como se explica en configurar nuevo proyecto

en el que modificaremos las url del svn para que apunten en la primera a :

https://svn.um.es/svn/NOMBREAPLICACION/versiones/ETIQUETA_CREADA/Nombreaplicacion-project

donde ETIQUETA_CREADA es el tag recién creado.

y en la segunda a:

https://svn.um.es/svn/NOMBREAPLICACION/web_egeria/NOMBREAPLICACION en caso de que sea a PREPRODUCCION

o bien a https://svn.um.es/svn/NOMBREAPLICACION/web_iuturna/NOMBREAPLICACION en caso de que sea a produccion

Despues de hacer esto pasar al paso 3, directamente.

2. Cambiar la URL del repositorio, al nuevo tag creado

No situamos en el proyecto Jenkins correspondiente

Y una vez alli cambiamos el campo URL del repositorio a “https://svn.um.es/svn/PROTOTIPO/versiones/1.0.0.beta/fuentes/Prototipo-project” si es la version 1.0.0.beta la que queremos publicar. Si no esta creado el tag ir a Crear Tag Version

3. Procesos adicionales que se pueden plantear

Si lo que se está subiendo a PRODUCCION es un proyecto de servicios o conlleva cambios en un proyecto de servicios de los que depende a su vez terceras aplicaciones, el proceso de subida a produccion conllevará más cosas.

Puede llevar cambios en terceras partes (modificar librerias “clientes” del servicio en los servidores de desarrollo / produccion del ejb_interfaces, publicar en Maven la libreria “cliente”, modificar librerias “cliente” manualmente en otras aplicaciones, publicar wsdl, generar clientes nuevos, dar permisos al servidor.

Un proceso que puede llevar muchos puntos, que a su vez son puntos en los que se puede producir un error.

Lo más adecuado es tener una lista de puntos en la Wiki del proyecto especificando PUNTO POR PUNTO los pasos que hay que seguir para hacer la subida de ese proyecto concreto a produccion / preproduccion.

4. Publicar la versión

En el Jenkins pulsaremos el botón “Ejecutar Tarea”, que publicará el proyecto en caso de que no tenga errores:

5. Comprobar que todo ha ido correctamente

Se comprobará que todo se ha subido correctamente. Se hará un primera prueba de que la aplicación esta correctamente desplegada.

Puede ser que haya fallos en la configuración de ficheros del sistemas, librerias compartidas no subidas etc etc, por lo que habra que consultar los logs de produccion / desarrollo para ver las causas de los distintos fallos.

6. Informar de versión liberada a usuarios

En caso de que sea una nueva version a PRODUCCION:

Mediante JIRA podemos indicar que la version ha sido correctamente liberada. También habrá que mandar correos informando que la nueva o la nueva versión de la aplicación está disponible.

Artefactos

De entrada

Plantilla del Artefacto SIGLAS Nomenclatura Ubicación
Requisitos en JIRA CodigoProyecto Requisito en JIRA https://jira.atica.um.es
Release URL del proyecto

De salida

Plantilla del artefactoSiglasNomenclaturaUbicaciónNota
Aplicacion desplegada URL en web_prod con los ficheros

Herramientas

Herramienta Version Utilizada en Descarga
JIRA 4.2.4 Requisitos en JIRA https://jira.atica.um.es
Jenkins 1.395 Documento Análisis, Documento Diseño https://jenkins.um.es
TOAD 9.7.25 Novell

Metricas

Las métricas del proyecto se guardarán dentro de la carpeta del proyecto en Proyecto/Documentacion/1.Gestionproyecto/1.4.Metricas. Las métricas de este proceso en concreto se almacenan en la Hoja DSP.

NOTA: Todos los tiempos se miden en horas, salvo que se indique expresamente lo contrario.

Tiempo dedicado a preparar el entorno de preproduccion

  1. Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto.

Pulsa el botón Search

Usa la Plantilla de Seguimiento tal y como se indica en el apartado Calcular tiempos con Jira.

Tiempo dedicado a preparar el entorno de produccion

  1. Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto.

Pulsa el botón Search

Usa la Plantilla de Seguimiento tal y como se indica en el apartado Calcular tiempos con Jira.