martes, 16 de mayo de 2017

Integración Continua - Parte 2 - Subversion

Subversion


Subversion, como habíamos revisado en la entrada anterior (Integración Continua - Parte 1), es un sistema de control de versiones desarrollado por Apache. Pero vamos al grano antes de que nos ataque el "WannaCry".

Toda la información referente la pueden encontrar en su sitio web:


Descarga


Al ser código abierto, pueden descargar el proyecto directamente del sitio y compilarlo para armar su propia versión. Yo decidí descargar el producto de VisualSVN para mayor agilidad. Eso lo pueden hacer aquí:


Instalación


La instalación en Windows es muy simple. Únicamente descarguen el archivo MSI y se ejecuta. Verán la siguiente secuencia de pantallas:


Bienvenida


Lo que se va a instalar es el servidor de subversion de Apache y por supuesto un Apache HTTP server que es donde se desplegará la aplicación:


Licencia


Términos de licencia del producto que deberán ser aceptados:


Componentes


Selección de componentes a instalar. Elegimos que se instale tanto el servidor como las herramientas de administración del sistema de control de versiones:


Configuración del servidor


Aquí indicamos las rutas locales del servidor donde se almacenarán tanto los repositorios como los respaldos. Algo muy importante es elegir un puerto que tengamos disponible. Por default es el puerto seguro 443, se puede elegir libremente el que nosotros queramos:


Confirmación de la instalación


Finalmente vamos a confirmar la instalación.


Finalización de la instalación


El instalador nos va a mostrar cuando finalice. Aquí podemos terminar; o bien, ir al administrador del servidor.


Administración del servidor


En esta herramienta administrativa es donde vamos a poder gestionar todas las actividades relacionadas con el servidor: iniciarlo, detenerlo, crear usuarios, crear repositorios, crear grupos, entre otras.


Creación de los usuarios


Para poder utilizar nuestro repositorio, debemos crear al menos un usuario. Posteriormente vamos a poder crear grupos. Para el ejemplo de ahora es suficiente con un usuario:



Una vez creado el usuario, vamos a poder observarlo en la sección correspondiente de nuestro servidor.


Creación del repositorio

Finalmente, vamos a crear nuestro repositorio.


Elegimos el tipo de repositorio. Esto depende del tipo de sistema de archivos que estemos usando. Para el caso del ejemplo he creado un repositorio normal (regular).


Colocamos el nombre del repositorio:


Elegimos la estructura inicial del repositorio. Esto creará una serie de carpetas como trunk, branches y tags. Esto nos será de ayuda para cuando estemos revisando el ciclo de vida de los despliegues del código.


Finalmente colocamos los permisos de acceso a nuestro repositorio. Podemos otorgar o negar todos los permisos de acceso; o bien, personalizarlos de acuerdo a nuestras necesidades. En mi caso particular, le di todos los permisos a todos los usuarios.


En la última pantalla veremos la confirmación de que nuestro repositorio se ha creado correctamente, así como un resumen del mismo.


Si volvemos al administrador del servidor, debemos poder confirmar que nuestro repositorio está listo para ser usado.


Confirmación de acceso


Una vez que hemos completado todos los pasos anteriores, abrimos un navegador y entramos a la URL solicitada. En el caso de nuestro ejemplo debemos entrar por HTTPS, pues habilitamos el acceso seguro. El propio navegador nos va a hacer una advertencia de seguridad de confianza en el sitio (debemos aceptar el riesgo) y nos va a solicitar un usuario y contraseña válidos del repositorio. Lo que veremos a continuación es el contenido del repositorio en el navegador:


Igualmente podemos confirmar que en nuestro sistema de archivos (servidor) ya se encuentra el repositorio creado:



Cliente de SVN


Una vez que tengan el servidor de SVN listo, se pueden crear usuarios (por ejemplo para el equipo de desarrollo). Estos usuarios van a interactuar con el servidor para descargar el código (check out); o bien, para incluir sus cambios (check in).

Al trabajar en equipos de más de una persona, existen algunas acciones que deben realizarse de manera colaborativa. Por ejemplo si dos personas se encuentran trabajando sobre el mismo componente, es posible que necesiten realizar un merge para poder depositar el código en el repositorio.

Para que estos usuarios puedan realizar las interacciones con el repositorio, es necesario que cuenten con un cliente de SVN.

Tortoise SVN


Es quizá uno de los más conocidos, lo ocuparemos para dar agilidad al concepto. Una vez instalado podremos tener disponibles los comandos directo en nuestro explorador de archivos como un menú contextual (click derecho).


Check out


Para realizar el check out del repositorio (descargarlo), vamos a ocupar la URL del repositorio y nuestras credenciales para acceder al mismo, así como un directorio en donde vamos a almacenar la copia local (working copy). Antes de realizar el checkout, el directorio de la copia local se encuentra vacío:


Realizamos el checkout:




Y entonces el directorio de nuestra copia local, se va a poblar con los artefactos del repositorio:


Cambios en la copia local (working copy)


Ahora sí, podemos comenzar a hacer los cambios que necesitemos en nuestro código: generar artefactos, eliminar artefactos, modificar artefactos. Para nuestro ejemplo únicamente generamos un archivo de texto en nuestra copia local:


Check in


Finalmente, una vez que terminamos el desarrollo o los cambios que necesitemos, vamos a subir (check in) los artefactos al repositorio.

Seleccionan los elementos que quieren subir y después el comando commit:


Seleccionan la rama a la que van a subir los artefactos. Aquí es posible (recomendable) colocar algún comentario para poder tener trazabilidad de los cambios (de cualquier manera se va a tener esa trazabilidad, si la cagamos no habrá poder humano que nos pueda salvar y vamos a tener que pagar las tortas de tamal al día siguiente):


Finalmente, podremos ver un resumen de los cambios realizados en el repositorio (en este punto ya no nos podemos arrepentir de lo que subimos).


Confirmación de los cambios en el repositorio


Para poder asegurarnos que nuestros cambios están ahí, podemos ir al repositorio a través de nuestro navegador y ahí deberán estar los artefactos que acabamos de subir:


Conclusiones y Siguientes pasos


Es posible (porque ya los veo criticando) usar cualquier repositorio de código. Lo que pretendo mostrar es el concepto del mismo (trabajo colaborativo, administración del código, control de versiones, respaldos, ramas, etcétera), no si un repositorio es mejor que otro, no vamos a entrar en esa discusión.

Pueden bien usar Git + Bitbucket si las condiciones de sus proyectos lo permiten, ameritan y gustan de estar más a la moda. Particularmente a mi me gusta mucho esa combinación. Si tienen algún comentario respecto a esto y su intención es iniciar una discusión (con todos los beneficios que pudiera tener eso), pueden entrarle al ruedo en Los Engreídos del Software.

Como lo revisamos en la entrada anterior (Integración Continua - Parte 1), los siguientes pasos son:
  • Administración de proyectos y builds con Apache Maven
  • Administración de repositorios de Maven con Apache Archiva
  • Servidor de Integración Continua con Apache Hudson
Estos componentes los veremos en las siguientes entradas del blog.

No hay comentarios.:

Publicar un comentario