Cuando 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.
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/.
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.
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.
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