Cómo configurar la implementación automática con Git y un VPS

Introducción

Este artículo te enseñará cómo usar Git cuando desees implementar tu aplicación. Si bien hay muchas maneras de usar Git para implementar nuestra aplicación, este tutorial se centrará en la más sencilla. Partimos de la premisa que ya sabes cómo crear y utilizar un repositorio en tu máquina local.

Cuando usas Git, el flujo de trabajo generalmente es solo para el control de versiones. Tienes un repositorio local donde trabajas y un repositorio remoto donde mantienes todo sincronizado y puedes trabajar con un equipo y diferentes máquinas. Pero también puedes usar Git para mover tu aplicación a producción.

Configuración del servidor

Nuestro espacio de trabajo ficticio:

El directorio “live” de tu servidor: /var/www/domain.com

El repositorio de tu servidor: /var/repo/site.git

¿Qué debemos hacer si queremos enviar a site.git y al mismo tiempo hacer que todo el contenido esté disponible en /var/www/domain.com?

Creando nuestro repositorio

Debes iniciar sesión en tu VPS desde la línea de comandos y escribir lo siguiente:

bare significa que nuestra carpeta no tendrá archivos de origen, solo el control de versión.

Hooks

Los repositorios de Git tienen una carpeta llamada  Hooks’. Esta carpeta contiene algunos archivos de muestra para posibles acciones que puedes enlazar y realizar acciones personalizadas configuradas por ti.

La documentación de Git define tres posibles enlaces de servidor:  ‘pre-receive’, ‘post-receive’ and ‘update . ‘Pre-receive’ se ejecuta tan pronto como el servidor recibe una ‘inserción’‘ update’ es similar pero se ejecuta una vez para cada rama, y ​​‘post-receive’  se ejecuta cuando una ‘inserción’ finaliza por completo y es el que nos interesa.

En nuestro repositorio si escribes:

Verás algunos archivos y carpetas, incluida la carpeta ‘hooks’ . Así que vamos a la carpeta ‘hooks’ :

Ahora, crea el archivo ‘post-receive’ escribiendo:

Cuando ejecutes este comando, tendrás una línea en blanco que indica que todo lo que escribas se guardará en este archivo. Así que vamos a escribir:

Cuando termines de escribir, presiona ‘control-d’ para guardar. Para ejecutar el archivo, necesitamos establecer los permisos adecuados utilizando:

Puedes ver en la documentación que ‘git-dir’ es la ruta al repositorio. Con ‘work-tree’ , puedes definir una ruta diferente a donde se transferirán realmente tus archivos.

El archivo ‘post-receive’  se revisará cada vez que se complete un envío y dice que tus archivos deben estar en /var/www/domain.com.

Máquina local

Vamos a crear nuestro repositorio local. Debes cambiar la ruta y el nombre a lo que elijas. Si estás en un VPS, simplemente escribe:

Y crea tu repo:

Entonces necesitamos configurar la ruta remota de nuestro repositorio. Dile a Git que agregue un remoto llamado ‘live’:

Aquí deberíamos dar el enlace del repositorio y no la carpeta “live”

Supongamos que tenemos un gran trabajo listo en esta carpeta. Deberíamos hacer los pasos habituales de agregar los archivos y confirmar con un mensaje:

Solo para recordar, el punto después de ‘git add’ significa que estás agregando todos los archivos al escenario. Después de ‘git commit’ tenemos ‘-m’, lo que significa que escribiremos un mensaje. Para completar, simplemente ‘empujamos’ todo al servidor. Usamos el alias ‘live’ que usamos cuando configuramos el remoto.

Aquí le decimos a Git que presione el remoto ‘live’ en la rama ‘maestra’.

Beta

¿Qué sucede si no deseas implementar todo en un solo paso? Tal vez quieras probarlo primero y tener un directorio beta.

Una de las formas de hacerlo es crear otro repositorio. Volvamos a iniciar sesión en nuestro VPS y creamos nuestro directorio:

Para crear nuestro repositorio:

Una vez más, deberíamos crear el archivo ‘post-receive’ porque queremos ver nuestro proyecto en el directorio beta:

Escribe el contenido del archivo:

Cuando termines de escribir, presiona ‘control-d’ para guardar. Para ejecutar el archivo, necesitamos establecer los permisos adecuados utilizando:

Volvamos a nuestro repositorio local:

Así que ahora podemos configurar otro remoto apuntando a nuestro repositorio beta:

Con esto, podemos tener un proceso de dos pasos. Primero presionamos para beta y probar, y si todo está bien, presionamos para live:

Y después:

En vivo desde el servidor

Tal vez tengas un equipo trabajando en el mismo proyecto y desees que otros también puedan decidir que es hora de empezar a funcionar. Para hacer esto, podemos vincular beta y el repositorio live en el servidor. Inicia sesión en tu VPS y escribe:

Así que ahora puedes pasar de beta a live en el servidor:

¡Felicidades! ¡Tu VPS ahora está configurado para implementarse automáticamente con Git!