Git es el sistema de control de versiones más popular en el campo del desarrollo de software. Es de código abierto y se mantiene activamente desde 2005 por Linus Torvalds, el famoso creador de Linux. Hoy en día, una cantidad asombrosa de proyectos de software (incluidos los comerciales) utilizan Git para la gestión de versiones.
Git sigue una arquitectura distribuida, lo que lo convierte en un ejemplo perfecto de un DVCS (Distributed Version Control System). Al usar Git, podemos gestionar tanto un repositorio local como uno remoto simultáneamente. En esta guía, demostraremos cómo configurar un despliegue automático de un proyecto de Git con un VPS.
Requisitos previos
En esta guía, habrá un repositorio local y un repositorio remoto en el VPS. El repositorio local enviará los cambios al repositorio remoto. Desde el repositorio remoto, podemos enviar los cambios a la rama beta o live . Para lograr esto, hay un par de requisitos previos de los que debes encargarte primero.
- Una máquina local y un servidor remoto, ambos utilizando Ubuntu como sistema operativo. Esta guía muestra cómo configurar y preparar servidores Ubuntu.
- Ambas máquinas están configuradas con Git.
Para establecer una conexión segura con el VPS, utilizaremos SSH. Afortunadamente, Git también admite SSH como protocolo para conectarse a repositorios remotos. Esta guía explora la configuración de SSH para conectarse a servidores remotos en Ubuntu.
Configuración del VPS
En nuestro servidor remoto, tendremos la siguiente configuración:
- Directorio en vivo: /var/www/dummy-domain.com
- Repositorio del servidor: /var/repo/site.git
Desde la máquina local, Git enviará las actualizaciones al repositorio del VPS. Desde el repositorio del VPS, configuraremos un script que Git utilizará para enviarlas automáticamente al directorio en vivo. También es posible configurar un repositorio para lanzamientos de beta .
-
Creación de los repositorios
Conéctate al VPS y crea las ubicaciones de los repositorios:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
A continuación, inicia el repositorio de Git:
|
1 |
sudo git init --bare |
Aquí, la bandera --bare describe que no habrá archivos de origen, solo los componentes de control de versiones.
-
Hooks
A continuación, configuraremos los hooks para el repositorio. Cada repositorio de Git contiene una carpeta llamada hooks. Contiene archivos de muestra que sirven como plantilla para hooks y varias acciones personalizadas.
Según la documentación oficial de Git, hay tres tipos de hooks:
- pre-receive: Se ejecuta tan pronto como el servidor recibe una solicitud de push.
- post-receive: Se ejecuta cuando se completa una solicitud de push.
- update: Similar a pre-receive. Sin embargo, se ejecuta una vez por rama.
Desde la ubicación del repositorio, ejecuta el comando ls :
|
1 |
ls -l |
Cambia el directorio actual a hooks:
|
1 |
cd hooks/ |
Ahora, crea el script post-receive :
|
1 |
sudo nano post-receive |
Dentro del script, introduce el siguiente código. Asegúrate de cambiar las ubicaciones de los directorios en consecuencia:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Guarda el archivo y cierra el editor. Establece el archivo como ejecutable:
|
1 |
sudo chmod +x post-receive |
Ahora, cada vez que se complete un push, Git buscará en el script post-receive y colocará los archivos en su lugar correspondiente.
Configuración de la máquina local
La máquina remota está lista para aceptar actualizaciones entrantes del proyecto de Git. A continuación, configuraremos el repositorio local para usar el VPS como el servidor remoto de Git.
Creemos un directorio de proyecto de Git de muestra:
Ahora, inicia el repositorio:
|
1 |
sudo git init |
Tenemos que declarar la ruta remota del repositorio. Aquí, nos referiremos a la ubicación remota como la rama live . Luego, ejecuta el siguiente comando:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Probémoslo. Añadimos un script de shell al directorio del proyecto:
A continuación, añade el archivo al proyecto y realiza un commit:
|
1 2 |
sudo git add . sudo git commit -m "commit aleatorio" |
En el siguiente comando, subiremos el proyecto al servidor live :
|
1 |
sudo git push live master |
Git se conectará al VPS usando SSH. Si la conexión SSH fue configurada para usar una contraseña, Git solicitará la contraseña de autenticación.
Repositorio Beta
¿Qué pasa si el proyecto no se va a desplegar en un solo paso? Tal vez requiera más pruebas dentro de un directorio beta. Usando el método descrito hasta ahora, podemos crear otra rama en el VPS, denominada la rama beta.
-
Configuración de la rama Beta en el VPS
Primero, necesitamos crear los directorios para el VPS. Conéctese al VPS y cree un directorio bajo /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Ahora, necesitamos un repositorio de Git que actúe como la rama beta:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Inicialice el repositorio:
|
1 |
sudo git init --bare |
Al igual que antes, implemente un script post-receive:
|
1 2 |
cd hooks sudo nano post-receive |
Después de eso, introduzca el siguiente código:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Guarde el archivo y cierre el editor. Marque post-receive como un archivo ejecutable:
|
1 |
sudo chmod +x post-receive |
-
Añadir el repositorio Beta en la máquina local
Ahora estamos listos para añadir el repositorio beta a nuestro repositorio local. Desde el directorio del proyecto local, ejecute el siguiente comando de Git:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
¡Listo! El repositorio local ahora está configurado con el repositorio remoto beta. Intente subir los cambios:
|
1 2 3 |
sudo git add . sudo git commit -m "versión beta" sudo git push beta master |
-
Pasar de Beta a Live en el VPS
Digamos que todos los cambios se acumulan en el repositorio beta . ¿Cómo se suben los cambios al repositorio live ? Es muy sencillo. Dentro del repositorio beta en el VPS, añadimos el repositorio local live . Luego, simplemente subimos la versión beta al repositorio live .
Conéctese al VPS y ejecute los siguientes comandos:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Luego, puede subir la versión beta a live:
|
1 |
sudo git push live master |
Conclusiones
Esta guía demuestra con éxito cómo configurar y utilizar un VPS como repositorio remoto para su proyecto de Git. El VPS puede desplegar automáticamente el código y los archivos más recientes sin ningún proceso complejo. También puede actuar como el centro de colaboración entre múltiples equipos de desarrollo.
Con la ayuda de Git, puede establecer un mecanismo sencillo para el despliegue automático. Sin embargo, para una gestión de proyectos adecuada, se recomienda utilizar algo como GitLab. La siguiente guía muestra cómo instalar y desplegar GitLab en un VPS que gestiona múltiples proyectos. También puede consultar cómo configurar pipelines de Integración Continua (CI) de GitLab en Ubuntu 20.04.
¡Feliz informática!















Comentarios
Aún no hay comentarios. Sea el primero.