inicio

GIT: Montar estructura para despliegues

GitCuando empecé a desarrollar en web, no utilizaba ningún control de versiones y las subidas a producción las hacía por FTP. Eran otros tiempos, en los que las modificaciones que hacíamos para controlar qué era lo que se cambiaba, se hacían de una forma muy rudimentaria. Por suerte, esos tiempos pasaron y llegó GIT. Hoy en día, me parecería impensable manejar cualquier proyecto, por pequeño que sea, sin un control de versiones.

Hoy veremos cómo podemos crear y mantener un repositorio git, como repositorio central donde realizar nuestros despliegues de código. Esto nos servirán tanto para montar en una máquina virtual donde realizar pruebas como en un entorno de producción.

En nuestro caso vamos a asumir que tenemos un repositorio alojado en bitbucket (sirve github también), y una máquina virtual donde se ha instalado Debian (sirve cualquier versión de Linux), además del acceso SSH.

 

Clonar un repositorio como central

Antes de nada creamos en nuestra máquina virtual unas claves para poder hacer la conexión por SSH. Este enlace os resume como hacerlo en el caso de Bitbucket. Si tenéis un repositorio en Github el proceso será muy similar.

Una vez listas las claves, empezamos conectándonos por ssh a nuestra máquina, para el ejemplo usaremos un usuario “usertest” y la ip de nuestra máquina sera la 192.168.1.7

 

ssh usertest@192.168.1.7

 

Dentro de la carpeta de nuestro usuario creamos una carpeta para los repositorios, y dentro otra para nuestro proyecto test quedando una ruta similar a esta:  /home/usertest/repos/

En Bitbucket copiamos la ruta de nuestro repositorio, pongamos por ejemplo que es: git@bitbucket.org:usertest/proyecto.test.git. En la página principal de cada repositorio nos dan el enlace para clonar. Nos ubicamos dentro de la carpeta “repos” y ejecutamos lo siguiente modificando antes por los valores adecuados:

git clone --bare git@bitbucket.org:usertest/proyecto.test.git test

Ejecutando esto ya tenemos un repositorio central en nuestra máquina virtual. Este tipo de repositorio no tendrá una copia del código para trabajar con él. Lo que veréis será una estructura de carpetas que se encargarán del almacenar toda la configuración del repositorio.

La ruta donde se clonará el repositorio será para este caso /home/usertes/repos/test/.

 

Preparando el despliegue

Para desplegar en esta máquina el código de nuestro repositorio, accedemos a la carpeta raíz del repositorio, en el ejemplo: /home/usertest/repos/test, y desde ahí vamos a /hooks/. Los hooks son scripts que se ejecutan ante determinadas acciones. Os dejo aquí un enlace a la documentación completa sobre hooks que podéis encontrar en la web de git.

Vamos a crear un archivo llamado post-receive. Para que se ejecute debéis darle permisos de ejecución:

chmod 755 post-receive

 

Este script en concreto se va a ejecutar cada vez que hagáis push a vuestro repositorio, y os servirá para desplegar el código de vuestro proyecto, así como hacer todo lo que necesitéis posteriormente al despliegue. Vamos a editarlo:

#!/bin/bash
export GIT_DIR=$(cd $GIT_DIR; pwd)
read oldrev newrev ref
rama=`echo $ref | cut -d/ -f3`
GIT_WORK_TREE=/home/usertest/www/demo 
git checkout -f $rama
echo "Desplegando rama $rama"

 

Lo que hace este script es leerse tres variables que le llegan automáticamente en el despliegue (oldrev, newrev, ref). Aquí la importante es “ref” que trae el nombre de la rama, el cual extraemos y metemos en la variable “rama”.

Después indicamos en GIT_WORK_TREE la ruta donde vamos a tener alojado el código de nuestro proyecto, en este ejemplo será /home/usertest/www/demo, así que vosotros debéis poner el que os interese.

Si siempre vais a desplegar la misma rama simplemente asignad directamente el nombre a la variable “rama”.

Por último, se despliega el código (en GIT_WORK_TREE) haciendo un checkout con la opción -f (force) e indicando el nombre de la rama.

La parte servidor ya está lista. Por supuesto a vuestro script podéis añadirle más instrucciones, pero eso depende de lo que necesitéis.

 

Desplegando desde nuestra máquina de desarrollo

Lo más normal en el desarrollo cotidiano, es ir desarrollando, comiteando cambios y pusheando a nuestro repositorio, en este caso Bitbucket. Una vez llegado a un determinado hito debemos desplegar el código en nuestra máquina o simplemente para sincronizar los cambios de nuestro proyecto con el resto de cambios de compañeros con los que trabajemos.

Lo primero, es volver a clonar el repositorio anterior, pero esta vez en la máquina donde desarrollamos. Fijaros que esta vez lo clonamos sin la opción bare para que nos traiga el código. Os ubicáis en vuestro directorio de trabajo y ejecutáis:

git clone git@bitbucket.org:usertest/proyecto.test.git test

 

En este directorio creará la carpeta test y dentro estará el código de vuestro repositorio.

Una vez realizados unos cuantos cambios, comiteados y pusheados a Bitbucket, nos ubicamos en la raíz de nuestro repositorio, en la máquina de desarrollo y ejecutamos:

git push ssh://usertest@192.168.1.7:/home/usertest/repos/test nombredelarama

Una vez ejecutado el comando deberíais acceder a la carpeta /home/usertest/www/test, en vuestro caso la que vosotros hayáis configurado de la máquina virtual, y verificar que el código de vuestro proyecto tiene los últimos cambios que hayáis hecho.

The following two tabs change content below.
Técnico en Administración de Sistemas y Desarrollo de Aplicaciones. Amigo de sus amigos, y una mente inquieta que no puede dejar un ordenador de lado porque necesita programar aplicaciones Android o aplicaciones en general, además de páginas web. Nuestro programador de cabecera y espero que también el vuestro.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR