Cómo hacer un sisema de despliegue de git rápido y fácil

Screenshot_2019-10-25 ssh_header jpg (Imagen JPEG, 1044 × 544 píxeles).png
Solucionex
25
Oct 19

Hola chicos, vamos a ver una forma de automatizar el llevar códio a TEST, se puede hacer en producción mientras no esté abierta la web al público.
A veces necesitamos rapidez a la hora de subir ver y probar cambios en la web según desarrollamos código.

A mi personalmente me tocaba desplegar a mano cada vez que tenía que probar código en test, y tienes 2 opciones manuales, o lo haces por FTP o por ssh con SCP comprimiedo los archivos que necesitas, pero de ésta forma sólo tenemos que gitear nuestro código y mandar la orden de despliegue, vamos a verlo.

Lo primero es que tengamos un repositorio git con sus ramas en nuesro gestor de versiones, lo segundo es generar un token de clave pública ssh para el servidor en el que vamos a desplegar los cambios, y concederle acceso al repositorio de git de lectura, cada uno es diferente según usemos git bitbucket stash u otro, en la documentación de cada plataforma deben explicarlo.

Una vez agregada la clave pública de nuestro servidor, creado el repo y autenticado en el gestor de versiones, pasamos a entrar en el server clonar el repo (Acordaos de poner en el .gitignore los archivos que deben ser diferentes en local y PRE como ficheros de configuración o .htaccess). Por úlimo cambiamos en el server a la rama que queremos desplegar.

Y ahora os doy 2 opciones de script de automatización:

1: creamos archivo deploy.sh en nuestro dir personal /home/<usuario>/deploy.sh

--------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash

# GitDeploy 0.1
# Hace pull de un directorio git
# (CC) 2019 Fernando Gonzalez (Solucionex)

# Ahora comprobamos si se le paso algun parametro
if [ $# == 0 ]; then
    echo "GitDeploy: ¡Error! No se le a pasado ningún parámetro"
    echo "deploy.sh <nombre del proyecto>"
    exit -1
else
    echo 'Accediendo a' /var/www/html/$*

    # Recorremos los parametros para comprobar si son ficheros o directorios
    for directorio in $*; do
        if [ ! -e /var/www/html/$directorio ]; then
            echo "GitDeploy: El archivo o directorio $directorio no existe"
            exit -1
        fi
    done
    
    # Si llegamos hasta aquí, indicamos a Git los archivos a subir
    cd /var/www/html/$*
    git pull

fi

--------------------------------------------------------------------------------------------------------------------------------

En este script podemos indicarle con un parámetro qué proyecto tiene que desplegar.

Tras esto podemos borrar la caché del sistema o hacer cualquier otra tarea que queramos.

 

2: Esta segunda opción es mucho más sencilla y solo se limita a hacer pull del repo y un borrado de cache

#!/bin/bash

# GitDeploy 0.1
# Hace pull de un directorio git
# (CC) 2019 Fernando Gonzalez (Solucionex)

cd www
git pull

 

Tan simple como ésto, y la cantidad de tiempo que nos puede ahorrar está totalmente compensada por la simplicidad del método.

También hay que decir que tenéis que agregar para más comodidad la clave ssh del server al que os conectéis con ssh-copy-id usuario@servidor.mired.com

luego sólo tenéis que llamar al comando de despliegue remoto con: ssh usuario@servidor.mired.com:./deploy.sh

 

Espero que os sirva. ;)